MySQL必备知识表的查询

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.常见查询语句

猜你喜欢

转载自blog.csdn.net/qq_45893999/article/details/106952961