使用DQL命令查询数据
- DQL(Data Query Language,数据查询语言)
查询数据库数据
简单的单表查询或多表的复杂查询和嵌套查询
-
查询指定字段
查询表中的所有数据列结果,采用*符号
select * from 表名;
查询表中指定数据列的结果
select 字段名1,字段名2,... from 表名;
-
AS字句
作用: 可给数据列取一个别名
可给表取一个别名
可把经过计算或总结的结果用另一个新名称来代替 用法:
select 字段名 as “别名” from 表名; select 表名别名.* from 表名 as 表名别名 select 数据计算 as 别名 from 表名`
-
Distinct 关键字
作用:去掉select查询返回记录结果中重复的记录(所有返回列的值都相同),只返回一条
用法:
select distinct 字段名1,字段名2...from 表名
注意:ALL关键字是默认的,返回所有记录,distinct与之相反
-
Where条件语句
用于检索数据表中符合条件的记录
搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假
搜索条件的组成:逻辑操作符,比较操作符
5.1 逻辑操作符
操作符名称 | 语法 | 描述 |
---|---|---|
AND或&& | a and b或a&&b | 逻辑与,同时为真,结果才为真 |
OR或|| | a OR b 或 a||b | 逻辑或,只要一个为真,结果就为真 |
NOT或! | NOT a 或!a | 逻辑非,若操作数为假,结果则为真 |
5.2 比较操作符
操作符名称 | 语法 | 描述 |
---|---|---|
IS NULL | a IS NULL | 若操作符为NULL,则结果为真 |
IS NOT NULL | a IS NOT NULL | 若操作符不为NULL,则结果为真 |
BETWEEN | a BETWEEN b AND c | 若a在b和c的范围内,则结果为真 |
LIKE | a LIKE b | SQ模式匹配,若a匹配b,则结果为真 |
IN | A IN(a1,a2,a3) | 若a等于a1,a2,a中的某一个,则结果为真 |
注意:数据类型相同的记录之间才能进行算术运算
相同数据类型的数据之间才能进行比较
-
连接查询(多表查询)
如需要多张数据表的数据进行查询,则可通过连接运算符实现多个查询
分类:内连接(inner join)
等值和非等值的连接查询
自身连接查询
外连接(out join)
左连接(left join)
右连接(right join)
6.1 inner join 内连接
在表中至少有一个匹配时返回记录
select 字段1,字段2...from table_1
Inner join table_2 on table_1.字段x=table_2.字段y;
#如果table_1的行在table_2中没有匹配,则不返回
等值和非等值的连接查询
与单表查询类似,都是select语句
把多个表放在from后,并用逗号隔开
可使用AS关键字取别名,便于引用
要求:从subject和grade数据表查询课程名称和所属年级名称
#非等值连接查询
select subjectName,gradeName from subject,grade
#返回的记录数为两表记录数的乘积
#等值查询
select subjectName,gradeName from subject,grade
Where subject.gradeID=grade.gradeID;
#等效于内连接
6.2 out join外连接
左连接(left join)
从左表(table_1)中返回所有的记录,即便在右(table_2)中没有匹配的行
select 字段1,字段2,...from table_1
left join table_2 on table_1.字段x=table_2.字段y
右连接(right join)
从右表(table_2)中返回所有的记录,即便在左(table_1)中没有匹配 的行
select 字段1,字段2,...from table_1
right join table_2 on table_1.字段x=table_2.字段y
6.3 join 对比
操作符名称 | 描述 |
---|---|
inner join(join) | 如果表中至少有一个匹配,则返回行 |
left join | 不论右表是否有匹配,都会返回左表的所有行 |
right | 不论左表是否有匹配,都会返回右表的所有行 |