SQL基础  三

关键词: SQL , SELECT,DQL,查询

       今天我将介绍SQL命令类型中的数据查询语言(DQL),它是我们用到最多的部分,它的基本命令是SELECT,这个命令具有很多的选项和子句,用于构成对关系数据库的查询。

3.3  数据查询语言(DQL)

       查询是使用SELECT语句对数据库进行探究。比如我们想得到学生信息库里,所有姓袁的人,或者我们想得到计算机科学系的所有人的信息,这些都需要用到SELECT语句。
       

SELECT语句

       SELECT语句里有4个关键字,分别为SELECT、FROM、WHERE、ORDER BY。SELECT语句跟的是我们想得到的信息字段,比如表t_stuinfo记录了学生的学号、姓名、性别、联系方式、班级,而我只想得到班级为1203班学生的姓名和联系方式,那我们只需要在SELECT后面继续写上姓名和联系方式的字段即可,字段之间要用逗号隔开。如果我们想得到学生的全部信息,在SELECT后面将全部字段写上或者写*。FROM后面跟的是若干个表名,例如上例我们只需要填写t_stuinfo即可。WHERE后面跟的是若干条件语句,它们之间用操作符AND或OR 连接,比如上例我们在WHERE后面添加class = 1203即可。综上我们就可以成功写出一条查询语句了。
       获取1203班学生的姓名和联系方式。
       select vch_stuName , vch_stuTell
       from t_stuinfo
       where int_class = 1203;
       注意:vch_stuName,vch_stuTell应当与数据库里的字段相同。
       获取学号为101学生的姓名和各科学习成绩
       select vch_stuName , vch_courseName , flo_courseGrade
       from t_stuinfo,t_courseinfo,t_selcourse
       where t_stuinfo.int_stuId = 101 and t_selcourse.int_stuId = 101 and t_selcourse.int_courId = t_courseinfo.int_courId
       注意:这个例子查询涉及到了三个表,由于三个表里有的字段相同,故用‘表名.字段名’来区分如:t_stuinfo.int_stuId。
       

ORDER BY子句

       我们一般需要让输出以某种方式进行排序,ORDER BY 能够以用户指定的列表格式对查询结果进行排序。ORDER BY子句的默认次序是升序,也就是说,如果对输出字符排序,输出的结果将按A-Z的顺序输出。DESC降序,ASC升序。
       例:获取1203班学生的学号、姓名和联系方式并按学号降序(升序)排序。
       select int_stuid , vch_stuName , vch_stuTell
       from t_stuinfo
       where class = 1203
       order by int_stuid DESC(ASC)
       注意:SQL排序是基于字符的ASCII排序的。数字0-9会按其字符值进行排序,并且位于字母A-Z之前。由于数字值在排序时是被当做字符处理的,所以下面数字的升序排序时这样的:1,110,111,12,2,20,22,3,4,5
       ORDER BY子句里可以用数字来代替字段值。
       例如stuinfo表里字段从左到右的顺序为:int_stuid、vch_stuName、vch_stuTell。则在查询时,可以用1替代int_stu_id、2替代vch_stuName、3替代vch_stuTell。
       ORDER BY子句里可以对多个字段进行排序,这时可以使用字段名或整数,字段名或数字之间用逗号隔开。数据库会按最左边第一个字段进行排序如果有相同的,则按第二个字段的排序规则进行排序。以此类推。
       例:查询课程id为8023的学生的信息,并按成绩降序,学号升序的排序规则进行排序。
       select int_stuid , flo_grade
       form t_selcourse
       where int_courseid = 8023
       order by flo_grade DESC , int_stuid ASC
       解释:数据库先按成绩排序,如果有学生的成绩相同,则按学号进行排序。
       

大小写敏感性

       MySql和Microsoft SQL Server 默认是大小写不敏感的,Oracle,默认是大小写敏感的。也就是在MYSQL和SQL Server 数据库中在进行数据匹配时会忽视大小写,而Oracle不会忽视大小写。
       例:假如数据库里存储的数据为Alies,在MYSQL和SQL Server能够匹配用‘alies’匹配到Alies,而在Oracle中则不能。
       

COUNT的使用

       利用count可以得到所要查询结果的条数或数量。
       select count(*)
       from table_name
       count函数使用一对圆括号来指定目标字段,或是一个星号表示表里的全部记录。
       例:查询课程号为8023成绩大于90的人数。
       select count(*)
       from t_selcourse
       where flo_grade > 90;
       

使用字段别名

       当我们进行查询操作时,我们会看到查询结果的第一行分别显示了字段名,如果我们不想看字段名,因为他太抽象了,而是想看汉字什么的,那这时就要用到字段别名了。
       select column_name alias_name
       from table_name
       例:查询全部学生姓名,并用姓名替换字段名
       select stuname 姓名
       from t_stuinfo
       

比较操作符

       相等 符号:‘=’
       不相等 符号: ‘!=’
       大于 符号: ‘>‘
       小于 符号: ’<‘
       大于等于 符号: ’>=‘
       小于等于 符号: ’<='
       

逻辑操作符

       IS NULL
       这个操作符用于与NULL值比较。
       例如:查找未分班的学生信息。
       select *
       frome t_stuinfo
       where int_class IS NULL;

       BETWEEN
       between用于查询位于给定的最大值和最小值之间的值,并别包含最大值和最小值。
       例如:查找课程id为8023成绩在80-90的学生信息。
       select *
       frome t_selcourse
       where flo_grade between 80 and 90;

       IN
       操作符IN用于把一个值与一个指定列表进行比较,当被比较的值至少与列表中的一个值相匹配时,则返回TRUE。
       例如:查血课程id为8023成绩为70或80或90或100的学生信息。
       select *
       frome t_selcourse
       where flo_grade in (70,80,90,100);

       LIKE
       操作符LIKE利用统配符把一个值与类似的值相匹配。通配符有两个:
       百分号(%) 代表零个、一个或多个字符
       下划线(_) 代表一个数字或字符
       例如:查姓袁的学生信息。
       select *
       frome t_stuinfo
       where var_stuName Like '袁%';
       例:匹配以2开头,而且长度至少为3的值:
       where column_name like '2_%_%'

       EXISTS
       这个操作符用于指定表里是否存在满足特定条件的记录。
       例如:查询课程id为8023,是否存在成绩为100的学生
       select *
       frome t_selcourse
       where exists(
       select *
       from t_selcourse
       where flo_grade = 100;
       解释:若存在考100分的学生,则输出学生的信息。

我是续!快点我!

尊重原创,写博不易,转载请注