DQL
DQL(Data Query Language,数据查询语言):
查询数据库数据,如SELECT语句。
简单的单表查询或多表的复杂查询和嵌套查询。
数据库语言中最核心、最重要的语句。
使用频率最高的语句。
SELECT语句:
sql">SELECT [ALL|DISTINCT]
{ *| table.* | [ table.field1 [ as alias1] [, table.field2 [as alias2]][, …]] }
FROM table_name [ as table_ alias ][ left|out|inner join table_name2 ] #联合查询[ WHERE … ] #指定结果需满足的条件[ GROUP BY …]#指定结果按照哪几个字段来分组[ HAVING …] #过滤分组的记录必须满足的次要条件[ ORDER BY… ] #指定查询记录按一个或者多个条件排序[ LIMIT { [ offset,] row_count | row_count OFFSET offset }] ;
#指定查询的记录从哪条至哪条
AS子语句:
作用:
可给数据列取一个新别名。
可给表取一个新别名。
语法:
sql">SELECT StudentNo AS “学号” FROM student;
DISTINCT关键字(distinct)
作用:
去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条。
语法:
sql">SELECT DISTINCT 字段名1, 字段名2... FROM 表名
#ALL 关键字是默认的,返回所有的记录,与之相反
WHERE条件语句:
用于检索数据表中符合条件的记录。
搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假。
搜索条件的组成:
逻辑操作符:
比较操作符:
数值数据类型的记录之间才能进行算术运算。
相同数据类型的数据之间才能进行比较。
sql">SELECT DISTINCT DayHour AS '均课时' FROM Subject2
WHERE ClassHour%10 = 0
BETWEEN AND范围查询
sql">SELECT 字段列1,字段2,…FROM 表名 WHERE 字段x BETWEEN 值1 AND 值2 #根据一个范围值来检索
#等同于 >= 和 <= 联合使用
LIKE模糊查询:
在WHERE子句中,使用LIKE关键字进行模糊查询:
与“%”一起使用,表示匹配0或任意多个字符。
与“_”一起使用,表示匹配单个字符。
sql">#查询以王开头的用户
SELECT UserName FROM user WHERE UserName LIKE '王%'#查询以李开头两个字的用户
SELECT UserName FROM user WHERE UserName LIKE '李_'#查询名字包含大或小的用户
SELECT UserName FROM user WHERE UserName LIKE '%大%'
IN范围查询
sql">SELECT 字段列1,字段2 ,… FROM 表名 WHERE 字段x IN ( 值1,值2,值3…)
#查询的字段x的值,至少与括号中的一个值相同
#多个值之间用英文逗号隔开
连接查询(多表查询)
需要多张数据表的数据进行查询,则可通过连接运算符实现多个查询。
分类:
内连接 ( inner join):
等值和非等值的连接查询
自身连接查询
外连接 ( out join ):
左连接(LEFT JOIN)
右连接 ( RIGHT JOIN)
内连接
在表中至少一个匹配时,则返回记录。
sql">SELECT 字段1,字段2,… FROM table_1
INNER JOIN table_2 ON table_1.字段x = table_2.字段y;
# INNER JOIN与JOIN 是相同的。
# 如table_1中的行在table_2中没有匹配,则不返回。
外连接
左连接:
从左表(table_1)中返回所有的记录,即便在右(table_2)中没有匹配的行。
sql">SELECT 字段1,字段2,… FROM table_1
LEFT JOIN table_2 ON table_1.字段x = table_2.字段y;
右连接:
从右表(table_2)中返回所有的记录,即便在左(table_1)中没有匹配的行。
sql">SELECT 字段1,字段2,… FROM table_1
RIGHT JOIN table_2 ON table_1.字段x = table_2.字段y;
JOIN对比
自连接查询
数据表与自身进行连接从一个包含栏目ID,栏目名称和父栏目ID的表中,查询父栏目名称和其子栏目名称。