版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
SQL分类
SQL 主要语句可以划分为一下3类
- DDL:数据定义语言,这些语句定义不同的数据段、数据库、表、列、索引等数据库对象。常用语句关键字主要包括create,drop,alter等
- DML:数据操作语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用语句关键字主要包括 insert,delete,update和select等。
- DCL数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要 的语句包括关键字grant、revoke等
DDL语句
是对数据库内部的数据表结构的进行添加 、删除、修改等操作语言,它和DML语句最大的区别是DML只是对表内部数据操作,而不涉及表的定义、结构的修改,更不会涉及其他对象。DDL更多地由数据库管理员(DBA)使用。
-
连接mysql服务器
-
mysql -uroot -p
-
-
创建数据库test1
-
create
database test1;
-
-
显示有哪些数据库
-
show
databases;
-
-
//mysql 自动创建的表有
-
information_schema:主要存储了系统中的一些数据库信息,比如用户表信息、列信息、权限信息、字符集信息、分区信息等等
-
cluster:存储了系统的集群信息
-
mysql:存储了系统的用户权限信息。
-
test:系统自动创建的测试数据库,任何用户都可以访问
-
-
-
选择数据库
-
use test1
-
-
显示test1数据库中创建的所有表
-
show
tables
-
-
删除数据库
-
drop
database test1;
-
-
创建表
-
create
table emp(ename
varchar(
10),hiredata
date,sal
decimal(
10,
2),deptno
int(
2));
-
-
查看表定义
-
desc emp;
-
-
查看创建表的定义
-
show
create
table emp;
-
-
删除表
-
drop
table emp;
-
-
修改表
-
alter
table emp
modify ename
varchar(
20);
-
-
增加表字段
-
-
alter
table emp
add
column age
int(
3);
-
-
删除表字段
-
alter
table emp
drop
column age;
-
-
字段改名
-
alter
table emp
change age age1
int(
4);
-
-
change 和
modify都可以修改表的定义,不同的是
change后面需要写两次列名,不方便,但是
change的优点是可以修改列名称,则
modify则不能
-
-
修改字段排序
-
alter
table emp
add birth
date
after ename;
-
alter
table emp
modify age
int(
3)
first;
-
-
更改表名
-
alter
table emp
rename emp1;
DML语句
是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select)。
-
插入记录
-
insert into emp(ename,hiredate,sal,deptno)values('zzx1','2000-01-01','2000',1);
-
也可以不用指定字段名称,但是values后面的顺序要和字段的排列顺序一致
-
inset into emp('zzx1','2000-01-01','2000',1);
-
含可空字段、非空但是含有默认值的字段、自增字段、可以不用再insert后的字段列表里面出现,values后面只写对应字段名称的
value,没写的字段可以自动设置为
null、默认值、自增的下一个数字
-
-
批量增加用逗号隔开
-
insert into dept values(5,'xxx'),(8,'xxx');
-
-
更新记录
-
update emp
set sal=
4000
where ename=
'xxx';
-
-
删除记录
-
delete
from emp
where ename=
'doney';
-
-
查询记录
-
select *
from emp;
-
*表示所有记录,也可以用逗号隔开的字段来选择查询
-
-
查询不重复的记录
-
select distinct deptno
from emp;
-
-
条件查询
-
用
where关键字来实现,可以使用<>!=等多条件可以使用or、and等
-
-
排序和限制
-
desc和asc是排序关键字,desc是降序、asc是升序排列 ORDER BY 排序,默认是升序
-
select *
from emp order
by sal;
-
如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序,如果只有一个排序字段,则相同字段将会无序排序
-
select *
from emp order
by deptno,sal desc;
-
限制
-
select *
from emp order
by sal limit
3;
-
//前者是起始偏移量,后者是显示行数
-
select *
from emp order
by sal limit
1,
3;
-
-
limit 和order
by 一起使用来做分页
-
-
聚合
-
用户做一下些汇总操作
-
-
sum(求和),count(*)(记录数),max(最大值),min(最小值)
-
with rollup 是可选语法,表示是否对分类聚合后的结果进行再汇总
-
having 表示对分类后的结果在进行条件的过滤。
-
-
select deptno,count(
1)
from emp group by deptno having count(1)>=
1;
表连接
大类上分为外连接和内连接
外链接 又分为左连接和右连接
左连接:包含所以的左边表中的记录甚至是右边表中没有和它匹配的记录。
右连接:同上
-
select ename,detname
from emp
left
join dept
on emp.deptno=dept.deptno;
-
-
左连接和右连接可以相互转换
子查询
-
select *
from emp
where deptno
in(
select deptno
from dept);
-
-
如果子查询记录唯一,可以使用=替代in
-
select *
from emp
where deptno =(
select deptno
from dept
limit
1);
记录查询
将两个表的数据按照一定的查询出来后,将结果合在一起显示
union all 是将结果集合并在一起,而union是将union all后的结果在进行一次distinct,去除重复
-
select deptno
from emp
union all
select deptno
from dept;
-
-
select demtno
from emp
union
select deptno
from dept;
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
SQL分类
SQL 主要语句可以划分为一下3类
- DDL:数据定义语言,这些语句定义不同的数据段、数据库、表、列、索引等数据库对象。常用语句关键字主要包括create,drop,alter等
- DML:数据操作语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。常用语句关键字主要包括 insert,delete,update和select等。
- DCL数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要 的语句包括关键字grant、revoke等
DDL语句
是对数据库内部的数据表结构的进行添加 、删除、修改等操作语言,它和DML语句最大的区别是DML只是对表内部数据操作,而不涉及表的定义、结构的修改,更不会涉及其他对象。DDL更多地由数据库管理员(DBA)使用。
-
连接mysql服务器
-
mysql -uroot -p
-
-
创建数据库test1
-
create
database test1;
-
-
显示有哪些数据库
-
show
databases;
-
-
//mysql 自动创建的表有
-
information_schema:主要存储了系统中的一些数据库信息,比如用户表信息、列信息、权限信息、字符集信息、分区信息等等
-
cluster:存储了系统的集群信息
-
mysql:存储了系统的用户权限信息。
-
test:系统自动创建的测试数据库,任何用户都可以访问
-
-
-
选择数据库
-
use test1
-
-
显示test1数据库中创建的所有表
-
show
tables
-
-
删除数据库
-
drop
database test1;
-
-
创建表
-
create
table emp(ename
varchar(
10),hiredata
date,sal
decimal(
10,
2),deptno
int(
2));
-
-
查看表定义
-
desc emp;
-
-
查看创建表的定义
-
show
create
table emp;
-
-
删除表
-
drop
table emp;
-
-
修改表
-
alter
table emp
modify ename
varchar(
20);
-
-
增加表字段
-
-
alter
table emp
add
column age
int(
3);
-
-
删除表字段
-
alter
table emp
drop
column age;
-
-
字段改名
-
alter
table emp
change age age1
int(
4);
-
-
change 和
modify都可以修改表的定义,不同的是
change后面需要写两次列名,不方便,但是
change的优点是可以修改列名称,则
modify则不能
-
-
修改字段排序
-
alter
table emp
add birth
date
after ename;
-
alter
table emp
modify age
int(
3)
first;
-
-
更改表名
-
alter
table emp
rename emp1;
DML语句
是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select)。
-
插入记录
-
insert into emp(ename,hiredate,sal,deptno)values('zzx1','2000-01-01','2000',1);
-
也可以不用指定字段名称,但是values后面的顺序要和字段的排列顺序一致
-
inset into emp('zzx1','2000-01-01','2000',1);
-
含可空字段、非空但是含有默认值的字段、自增字段、可以不用再insert后的字段列表里面出现,values后面只写对应字段名称的
value,没写的字段可以自动设置为
null、默认值、自增的下一个数字
-
-
批量增加用逗号隔开
-
insert into dept values(5,'xxx'),(8,'xxx');
-
-
更新记录
-
update emp
set sal=
4000
where ename=
'xxx';
-
-
删除记录
-
delete
from emp
where ename=
'doney';
-
-
查询记录
-
select *
from emp;
-
*表示所有记录,也可以用逗号隔开的字段来选择查询
-
-
查询不重复的记录
-
select distinct deptno
from emp;
-
-
条件查询
-
用
where关键字来实现,可以使用<>!=等多条件可以使用or、and等
-
-
排序和限制
-
desc和asc是排序关键字,desc是降序、asc是升序排列 ORDER BY 排序,默认是升序
-
select *
from emp order
by sal;
-
如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序,如果只有一个排序字段,则相同字段将会无序排序
-
select *
from emp order
by deptno,sal desc;
-
限制
-
select *
from emp order
by sal limit
3;
-
//前者是起始偏移量,后者是显示行数
-
select *
from emp order
by sal limit
1,
3;
-
-
limit 和order
by 一起使用来做分页
-
-
聚合
-
用户做一下些汇总操作
-
-
sum(求和),count(*)(记录数),max(最大值),min(最小值)
-
with rollup 是可选语法,表示是否对分类聚合后的结果进行再汇总
-
having 表示对分类后的结果在进行条件的过滤。
-
-
select deptno,count(
1)
from emp group by deptno having count(1)>=
1;
表连接
大类上分为外连接和内连接
外链接 又分为左连接和右连接
左连接:包含所以的左边表中的记录甚至是右边表中没有和它匹配的记录。
右连接:同上
-
select ename,detname
from emp
left
join dept
on emp.deptno=dept.deptno;
-
-
左连接和右连接可以相互转换
子查询
-
select *
from emp
where deptno
in(
select deptno
from dept);
-
-
如果子查询记录唯一,可以使用=替代in
-
select *
from emp
where deptno =(
select deptno
from dept
limit
1);
记录查询
将两个表的数据按照一定的查询出来后,将结果合在一起显示
union all 是将结果集合并在一起,而union是将union all后的结果在进行一次distinct,去除重复
-
select deptno
from emp
union all
select deptno
from dept;
-
-
select demtno
from emp
union
select deptno
from dept;