文章目录
DQL 语句
DQL(Data QueryLanguage )数据查询语言,结构化查询语言
其他的语言
DQL:数据库查询语言。语句:SELECT
, FROM
WHERE
。
DDL:数据库模式定义语言。语句:CREATE,DROP,ALTER。
DML:数据操纵语言。语句:INSERT、UPDATE、DELETE。
DCL:数据控制语言 。语句:GRANT、REVOKE。
TCL:事务控制语言。语句:COMMIT、ROLLBACK、SAVEPOINT。
DDL,DML,DCL,DQL,TCL共同组成数据库的完整语言。
数据查询语言
用于对数据库关系表中的数据进行查询的语句,支持多种方式多种要求的查询。
数据查询语言语句:select
查询语句一般格式:select 属性名 from 表名;
查询表格中的所有内容
select * from 表格;
查询语句的使用
select
命令可以读取一条或者多条记录- 用星号(*) 表示表内的所有列名
- 用
where
语句限定条件 - limit 限定查询结果
1.查询所有列元素
select * from 表名;
2.查询指定列元素
select 属性名1,属性名2,…,属性名n from 表名;
查询指定的列元素
select s_name,s_id from student_tb;
3.查询指定字段符合相关条件的记录
select <属性名1,属性名2,…,属性名n> from <表名> where <表达式>;
通过where 语句进行条件筛选
select * from grade_tb where g_score<60;
MySql通用的 SELECT 语法规则
SELECT <属性名>,...
FROM <表名>
[WHERE <条件表达式>]
[LIMIT <分页查询>]
where表达式
where 语句后面接条件表达式其中运算符有:
符号 | 表达式 | 作用 |
---|---|---|
= | 属性名 = 数值 | 判断是否相等 |
!= (<>) | 属性名 != 数值 | 判断是否不相等 |
> (>=) | 属性名 > 数值 | 大于 (大于等于) |
< (<=) | 属性名 < 数值 | 小于 (小于等于) |
between…and… | 属性名 between 数值 and 数值 | 在某个范围内 |
not between…and… | not 同上 | 不在范围内 |
in | in(数值1,数值2…) | 查找多个匹配的数值 |
like | 属性名 like ‘%匹配字符%’ | 搜索匹配某种模式(模糊查找) |
and | 表达式1 and 表达式2 | 逻辑与 两个都为真为则表示为真 |
or | 表达式1 or 表达式2 | 逻辑或 有一个为一则表示为真 |
is (not)null | 属性名 is (not)null | 判断是否(不)为空 |
使用条件表达式
#查找学号在1和3之间的学员
select * from student where s_no between 1 and 3;
#查找一个姓李的人
select * from student where s_name like '李%';
where 语句进行条件的过滤和匹配
多条件查询
与或非语句:and
or
and
相当与C语言中 &&
or
相当于C语言中的 ||
select <属性名> from student where 表达式1 and 表达式2;
1.在集合范围内查找
语句:in
select *from student where s_no in(1,6,3);
2.在集合范围外查找
语句:not in
select *from student where s_no not in(2,4);
3.查询空值
语句:is null
select * from class where s_birchday is null;
4.查询非空值
语句:is not null(不是not is null)
select * from class where s_birchday is not null;
5.between …and 语句
在…范围之内
查询在60和80之间的数据,60和80也算在内
select * from grade_tb where g_score between 60 and 80;
6.like 语句
% 表示模糊匹配里面的所有数据(0个或者多个)
_ 表示匹配一个字符的数据
## 找出姓张的老师
select * from teacher_tb where t_name like '张%';
##找出开头有王,结尾有圆
select * from student_tb where s_name like '王%圆';
常见查询语句
去重查询
语句:distinct
## 将查询的结果进行重复数据筛选
select distinct s_classno from student;
注意:distinct只能对一 个属性去重,如果是多条数据的话,必须整行数据一致去重
分页
语句:limit [offset,] row;
查询从第n条记录起查询其后的m条记录
#查询前三条数据,offset默认为0
select * from student limit 3;
##这条表达式相当于
select * from student limit 0,3;
###查询从3开始,第五条数据
select * from student limit 3,5;
offset为偏移量,是指从第一条记录往后移几条记录与指针偏移类似。
查询第2到第四条数据
select * from student limit 1,3;
合并查询结果
语句
union 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据)
union all 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据)
使用形式如下:
select <列名称> from <表名>
union (all)
select <列名称> from <表名>
用于合并多个select语句的结果,要求第一个sql语句返回的列与第二个sql语句返回的列相同
复制表数据
把一个表的数据复制到另一个已存在且结构相同的表中。
insert into 表1 select * from 表2;
1.通过查询的结果集向表中插入数据
ALL: 可选,返回所有结果集,包含重复数据。
insert into <表名> select <数据> union all
#例,union的其他应用,容易出错,不推荐使用
insert into student select 1,'张三' union all
select 2,'李四' union all
select 3,'王五';
2.创建表时复制其他表的数据
create table <表名1>(select * from <表名2>);
也就是创建表格时,不规定它的属性,而是复制其他表的属性结构与数据。但是需要注意的是,新表不会复制其他表的主键,所以这样创建的表是没有主键的。(这种方法实现表的备份)
也可只复制其他表的部分数据,改一下select语句即可。
取别名
在查询时可以给属性取别名,使得读取出的数据更直观。
语句:as
select <属性名> as <别名> from <表名> as <别名>;
其中语句as可以省略
排序
语句:order by
select * from <表名> order by <属性名>;
默认为升序排列,如果需要降序排列,就在语句之后加一个语句desc
。
select * from <表名> order by <属性名> desc;
总结
查询语句的基本使用
1.查询字段
2.条件查询
3.常见查询语句