MySQL数据库
第二章 MySQL的DML操作
一、DQL(Data Query Language)
数据查询语言,专门用于查询数据库数据、视图、函数等数据库相关结构。
关键字**:select**
1、语法结构
select 查询所要显示的字段列表 from 所要查询的表结构 [where 查询条件];
2、select 查询 SQL 的执行顺序
(1)、通过 from 关键字准备数据;
(2)、通过 where 关键字对所确定的数据进行筛选,本质上 where 后面是 boolean,当该 boolean 结果为 true 时,那么该数据被选中;
(3)、通过 order by 对所筛选的最终结果进行排序;
(4)、通过 select 对所筛选出来的数据进行显示。
3、select查询
(1)查询所有的字段信息,使用通配符*
select * from 表名;
(2)查询部分字段信息
select 字段名1,字段名2 from 表名;
注意:当需要显示所有字段时,为了提高SQL运行效率,不建议使用*来进行通配的,而是明确的写出每个字段。
(3)在查询时使用字段的别名,使用关键字AS(AS也可以忽略不写)
select 字段名1 as 别名1, 字段名2 as 别名2 from 表名;
AS子句作用:
- 可给数据列取一个新别名
- 可给表取一个新别名
- 可把经计算或总结的结果用另外一个新名称来代替
(4)对查询的结果进行去重,使用关键字distinct
select distinct 字段名 from 表名;
4、where条件语句
(1)用于检索数据表中符合条件的记录
(2)搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假
(3)搜索条件的组成
- 逻辑操作符
- 比较操作符
5、between…and…范围查询
select 字段名 from where 字段名 between 条件1 and 条件2;
等同于 >= 和 <= 联合使用
注意:为了提高效率,不建议使用between…and…来进行查询。
6、like模糊查询
在where子句中,使用like关键字进行模糊查询
(1)与“%”一起使用,表示匹配0或任意多个字符
(2)与“_”一起使用,表示匹配单个字符
7、in进行范围查询
在where子句中使用in进行范围查询:
select 字段名1,字段名2 from 表名 where 字段名 in ( 值1,值2,值3…)
(1)查询的字段名的值,至少与括号中的一个值相同;
(2)多个值之间用英文逗号隔开;
8、NULL空值条件查询
(1)判断字段是否为空
select 字段名 from 表名 where 字段 is null;
(1)判断字段是否不为空
select 字段名 from 表名 where 字段 is not null;
9、连接查询(多表查询)
如需要多张数据表的数据进行查询,则可通过连接运算符实现多个查询。
(1)join…on…
注意: INNER JOIN 与 JOIN 是相同的;
(2)left join…on…
(3)right join…on…
(4)join对比
(5)两张表关联查询时,除了使用join…on…之外,也可以直接进行连接
select e.name,w.name from sys_emp e,sys_welfare w;
(6)join为横向连接,union为纵向连接。
union:实现将两张表进行笛卡尔连接,纵向连接。在使用时,需要注意两张表所显示的字段必须是相同名称的。
10、子查询
(1)在一个 select 语句中,嵌入了另外一个 select 语句, 那么被嵌入的 select 语句称之为子查询语句,外部那个select语句则称为主查询语句。
(2)主查询和子查询的关系:
- 子查询是嵌入到主查询中。
- 子查询是辅助主查询的,要么充当条件,要么充当数据源。
- 子查询是可以独立存在的语句,是一条完整的 select 语句。
(3) 嵌套查询可由多个子查询组成,求解的方式是由里及外,子查询返回的结果一般都是集合,故而建议使用 IN 关键字。
11、order by 排序
(1)对select语句查询得到的结果,按某些字段进行排序。
(2)与desc(降序)或asc(升序)搭配使用,默认为asc(升序)。
select 字段名 from 表 where 条件 order by 字段[desc/asc];
12、limit
(1)MySQL和SQL Service独有的性质。
(2)实现数据的分页查询,即从一批结果数据中规定每页显示多少条数据,也可以查询中间某页记录。
(3)limit begin,size
其中begin表示开始查询记录的下标,begin是从0开始的;
size表示从begin开始连续查询到个数。
(4)页面转换为开始记录下标的公式
(当前页码 - 1) * 每页显示数量
13、group by 分组
根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表。
select 字段名 from 表名 group by 分组字段名;
14、having
如果使用group by 分组时,进行数据筛选时,需要使用having。
注意:having是跟在group之后。
15、虚表dual
在数据库中存在一张数据表dual,该表被称为“虚表”,它的存在仅仅是为了保证SQL的语法完整。