数据查询语言DQL,关键字:select、from、where等
1、单表查询
(1)查询学生表的学生的全部属性信息:
select *
from student
(2)查询全体学生的学号与姓名:
selectsno,snamefrom student
(3)查询的属性值可以经过计算后输出:
select sname,2019-sage--查询姓名和年龄
from student
(4)目标列表达式还可以是字符串常量
select sname,'Year of Birth:',birthday
from student
(5)distanct关键字
--distinct:用于去除重复元组,写在select之后,属性列表之前
--一个select语句只能有一个distinct
(6)null运算
IFNULL
当某一列的属性值为NULL的时候将属性值设为设定的值
全部的学生信息为:
studentno birthday classno phone sex sname score---------- ---------- ------- ----------- ------ --------- --------
2020043002 1998-11-18 202001 18739496123 男 张博 560
2020043004 1998-11-10 202001 18739496100 男 文昊 601
2020043005 1998-11-09 202001 18739496577 男 伟琦 574
2020043006 1997-01-18 202002 18739492332 男 赵宏文 637
2020043007 1998-11-19 202001 18739494123 男 王石 567
2020043008 1997-02-18 202001 18739496109 女 艾诚 539
2020043009 1998-11-15 202001 18739396145 女 王丽丽 571
2020043010 1998-11-12 202001 18739490123 女 孙晓燕 583
2020043099 (NULL) (NULL) (NULL) 女 (NULL) (NULL)
最后一名学生的信息存在数据为空的字段,添加对分数的空值处理
studentno birthday classno phone sex sname score IFNULL(score,0)---------- ---------- ------- ----------- ------ --------- ------ -----------------
2020043002 1998-11-18 202001 18739496123 男 张博 560 560
2020043004 1998-11-10 202001 18739496100 男 文昊 601 601
2020043005 1998-11-09 202001 18739496577 男 伟琦 574 574
2020043006 1997-01-18 202002 18739492332 男 赵宏文 637 637
2020043007 1998-11-19 202001 18739494123 男 王石 567 567
2020043008 1997-02-18 202001 18739496109 女 艾诚 539 539
2020043009 1998-11-15 202001 18739396145 女 王丽丽 571 571
2020043010 1998-11-12 202001 18739490123 女 孙晓燕 583 583
2020043099 (NULL) (NULL) (NULL) 女 (NULL) (NULL) 0
查询语句为:
SELECT *,
IFNULL(score,0)
FROM student
(7)排序
order by 属性名列表:将查询结果按属性名排序,如果需要改变排序方式,在属性名后,desc降序,asc升序
使用关键词 asc/desc,如果省略默认为升序
select studentno,sname,email--查询每个学生的学号,姓名和Email,按照班级编号降序排列,同一班级按入学成绩降序排列。
fromstudentorder by classno desc,point desc
2、聚合函数
(1)MAX
SELECT MAX(Id) ,sname
FROM t_stu
(2)MIN
SELECT MIN(Id) ,sname
FROM t_stu
(3)count
SELECT COUNT(Id)
FROM t_stu
只要是一条记录中有一个字段不为空的字段就进行计数,而select count(字段)只会统计该字段不为null的记录条数
SELECT COUNT(*)
FROM t_stu
SELECT COUNT(*)与SELECT COUNT(1):
count(1)或括号中是其它数字、字段名,表示只选择一个字段进行查询,而count(*)表示选择所有的字段进行查询,因此, SELECT COUNT(*)的效率较低
(4)AVG
SELECT AVG(score)
FROM student
(5)SUM
SELECT SUM(score)
FROM student