SQL常用语句(基础)大全---(持续更新)

打印 上一主题 下一主题

主题 1766|帖子 1766|积分 5298

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目次
SQL语句的类型
一、DDL(数据定义语言)
1、操纵数据库
2、操纵数据表
二、DML(数据操纵语言)
1.插入数据 insert inot
2.删除数据 delete / truncate
3.修改数据 update set
三、DQL(数据查询语言)
1.无条件查询
2.查询(什么开始,到什么竣事)
3.指定条件查询
3-1.单个条件 ro in
3-2.多个条件 and
3-3.查询不为NULL值 is not null ,为NULL值 is null
3-4.模糊查询 like
3-5.去除重复记录查询 distinct
3-6.排序查询 order by
3-6-1.单条件
3-6-2.多条件
3-7.聚合函数
3-7-1.计算和 sum
3-7-2.计算最大值 max
3-7-3.计算最小值 min
3-7-4.计算均匀值 avg
3-7-5.计算个数 count
3-8.分组查询 group by
3-9.分页查询
3-10.内连接查询
3-11.外连接查询​
3-12.子查询
四、DCL(数据控制语言)
1.管理用户
1-1.添加用户
1-2.删除用户
1-3.修改密码
1-4.查询全部效户
2.权限管理
2-1.查看现有权限
2-2.授予权限
2-3.撤销权限
2-4.权限列表
2-4-1. 数据库/表级常用权限
2-4-2. 管理类权限
2-4-3. 特殊权限
2-4-4.查看全部支持的权限


SQL语句的类型

        SQL分为四种重要类型:DDL(数据定义语言)、DML(数据操纵语言)、DQL(数据查询语言)、DCL(数据控制语言)。
一、DDL(数据定义语言)

        DDL是数据定义语言,重要是对数据库和数据表的操纵。DDL操纵包括创建数据库、表,修改数据库字符集,查看数据库布局,删除数据库等。
1、操纵数据库

  1. --创建库
  2. create database 库名;
  3. --创建库时判断库是否存在,不存在则创建
  4. create database if not exists 库名;
  5. --查看所有数据库
  6. show databases;
  7. --使用指定数据库
  8. use 库名;
  9. --查看当前指定数据库包含的数据表
  10. show tables;
  11. --查看数据库的结构定义信息
  12. show create database 库名;
  13. --删除数据库
  14. drop database 库名;
  15. --修改数据库的字符集为utf8
  16. alter database 库名 character set utf8;
复制代码
2、操纵数据表

  1. --创建表
  2. create table 表名(
  3. 字段1 类型1,
  4. 字段2 类型2,
  5. 字段3 类型3,
  6. ...........
  7. );
  8. --查看表结构
  9. desc 表名;
  10. --查看创建表的SQL语句
  11. show create table 表名;
  12. --修改表名
  13. alter table 表名 rename to 新的表名;
  14. --添加一个新的字段
  15. alter table 表名 add 字段; 字段类型;
  16. --修改字段名
  17. alter table 表名 rename column 字段名 to 新的字段名;
  18. --修改字段类型(注意类型修改前后数据是否兼容)
  19. alter table 表名 modify column 字段名 新的字段类型;
  20. --删除一个字段
  21. alter table 表名 drop 字段名;
  22. --删除表
  23. drop table 表名;
  24. --删除表时判断表是否存在,若存在则删除
  25. drop table if exists 表名;
复制代码
二、DML(数据操纵语言)

        DML是数据操纵语言,重要是对数据表的操纵。DML操纵包括插入数据(insert)、删除数据(delete/truncate)、修改数据(update)。
1.插入数据 insert inot

  1. --有多少个字段,就要写多少个值一一对应的
  2. insert into 表名 values(值1,值2,值3...值n);
  3. --此方法需要写出所有要插入的字段,并一一对应插入值
  4. insert into 表名(字段1,字段2...字段n) values(值1,值2...值n);
复制代码
2.删除数据 delete / truncate

  1. --删除表中所有数据
  2. delete from 表名;
  3. --删除表中指定的数据
  4. delete from 表名 where 字段 = 值;
  5. --删除表中所有数据(先删除整张表,然后创建一张一样的空表,此方法更高效)
  6. truncate table 表名;
复制代码
3.修改数据 update set

  1. --无限制条件的修改,会修改整张表
  2. update 表名 set 字段 = 值;
  3. --有限制条件的修改,只修改特定数据
  4. update 表名 set 字段 = 值 where 字段 = 值;
复制代码
三、DQL(数据查询语言)

        DQL是数据查询语言,重要就是select共同其他限制条件的关键字举行查询。DQL操纵包括无条件查询、指定条件查询(如between、in、like)、排序查询、聚合函数(如sum、max)、分组查询、分页查询、连接查询(内连接、外连接)及子查询。
1.无条件查询

  1. --查询表中所有数据
  2. select *from 表名;
复制代码
2.查询(什么开始,到什么竣事)

  1. --查询users表中年龄在18~30岁之间的记录
  2. --方式1 between..and..
  3. select * from users where age between 18 and 30;
  4. --方式2 &&
  5. select * from users where age>=18 && age<=30;
  6. --方式3 and
  7. select * from users where age>=18 and age<=30;
复制代码
3.指定条件查询

3-1.单个条件 ro in

  1. --查询users表中年龄为18,20,30岁的记录
  2. --方式1 or
  3. select *from users where age=18 or age=20 or age=30;
  4. --方式2 in
  5. select *from users where age in(18,20,30);
复制代码
3-2.多个条件 and

  1. --查询users表中年龄为17,性别为男,名字为王冬的记录
  2. select * from users where age=17 and sex='男' and name='王冬';
复制代码
3-3.查询不为NULL值 is not null ,为NULL值 is null

  1. --查询users表中序号不为空的记录
  2. select * from users where id is not null;
  3. --查询user表中序号为空的记录
  4. select *from users where id is null;
复制代码
3-4.模糊查询 like

  1. --查询users表中姓名第一个字为李的记录
  2. select *from users where name like '李%';
  3. --查询users表中姓名第二个字为李的记录
  4. select *from users where name like '_李%';
  5. --查询users表中姓名含有李字的记录
  6. select *from users where name like '%李%';
  7. --查询users表中姓名是两个字的记录
  8. select *from users where name like '__';
复制代码
3-5.去除重复记录查询 distinct

  1. --查询users表中所在城市不相同的记录
  2. --select distinct 字段 from 表名;
  3. select distinct city from users;
复制代码
3-6.排序查询 order by

3-6-1.单条件

  1. --查询users表中记录,并以年龄升序排序
  2. select * from users order by age; 默认升序
  3. --查询users表中记录,并以年龄降序排序  desc降序
  4. select * from users order by age desc;
复制代码
3-6-2.多条件

  1. --查询users表中记录,并体育成绩降序,年龄降序
  2. select *from users order by PE desc,age desc;
复制代码
3-7.聚合函数

3-7-1.计算和 sum

  1. select sum(字段) as sum from 表名;
复制代码
3-7-2.计算最大值 max

  1. select max(字段) as max from 表名;
复制代码
3-7-3.计算最小值 min

  1. select min(字段) as min from 表名;
复制代码
3-7-4.计算均匀值 avg

  1. select avg(字段) as avg from 表名;
复制代码
3-7-5.计算个数 count

  1. select count(字段) as count from 表名;
复制代码
3-8.分组查询 group by

  1. --查询users表中的记录,按照性别分组,查询男,女的考试成绩平均分
  2. select sex,avg(result) from users group by sex;
  3. --查询users表中的记录,按照性别分组,分别查询男、女的考试成绩平均分,人数
  4. select sex, avg(result),count(id) from users group by sex;
  5. --查询users表中的记录, 按照性别分组,分别查询男、女的成绩成绩平均分,人数 要求:分数低于60分的人,不参与分组
  6. select sex, avg(result),count(id) from users where result> 60 group by sex;
  7. --查询users表中的记录,按照性别分组,分别查询男、女的考试成绩平均分,人数 要求:分数低于60分的人,不参与分组,分组之后,人数要大于2个人
  8. select sex,avg(result),count(id) from users where result > 60 group by sex having count(id)>2;
复制代码
3-9.分页查询

  1. --查询users表中的前10行条记录
  2. select * from users limit 10;
  3. --查询users表中第2~11条记录 (从第5条记录开始累加10条记录)
  4. select * from users limit 4,10;
  5. --查询users表中第5~17条记录 (从第5条记录开始累加13条记录)
  6. select * from users limit 4,13;
复制代码
3-10.内连接查询

如果查询数据的来源来自多张表,则必须对这些表举行连接查询
  1. --语法1 (隐式内连接)
  2. select 字段1,字段2...
  3. from 表1,表2...
  4. where 过滤条件;
  5. --语法2 (显式内连接)
  6. select 字段1,字段2...
  7. from 表1 inner join 表2 ...
  8. on 过滤条件;
复制代码
3-11.外连接查询​

左外连接:是表1和表2的交集再并上表1的其他数据
右外连接:是表1和表2的交集再并上表2的其他数据
  1. --左外连接
  2. select 字段1,字段2..
  3. from 表1 left (outer) join 表2 on 过滤条件;
  4. --右外连接
  5. select 字段1,字段2..
  6. from 表1 right (outer) join 表2 on 过滤条件;
复制代码
3-12.子查询

查询语句中嵌套查询语句
  1. -- 查询最大的年龄,左边条件是什么右边必须返回一样的
  2. select * from user where age=(select max(age) from user);
复制代码
四、DCL(数据控制语言)

        DCL是数据控制语言:用来授权或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,可以或许对数据库举行监视。DCL操纵包括用户管理(添加、删除用户,修改密码,查询用户)和权限管理(授予权限、撤销权限)。
1.管理用户

1-1.添加用户

  1. create user '用户名'@'主机名' identified by '密码';
复制代码
1-2.删除用户

  1. drop user '用户名'@'主机名';
复制代码
1-3.修改密码

  1. --切换到mysql数据库
  2. USE mysql;
  3. --修改密码
  4. UPDATE USER SET PASSWORD=PASSWORD(‘密码’) WHERE User=’用户名’ and Host=’IP’;
  5. --重新加载权限表
  6. FLUSH PRIVILEGES;
  7. --将root的密码改为root
  8. update user set password=password('root') where user='root' and host=’localhost’;
  9. --重新加载权限表
  10. FLUSH PRIVILEGES;
复制代码
1-4.查询全部效户

  1. -- 查询用户
  2. -- 1、切换到mysql数据库
  3. USE mysql;
  4. -- 2、查询user表
  5. SELECT *FROM USER;
复制代码
2.权限管理

2-1.查看现有权限

  1. show grants for '用户名'@'主机名';
复制代码
2-2.授予权限

  1. --语法
  2. grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
  3. --授予faker用户所有权限,在任意数据库任意表上
  4. grant all on *.* to 'faker'@'localhost';
复制代码
2-3.撤销权限

  1. --语法
  2. revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
  3. --撤销faker用户对tests数据库中city数据表的权限
  4. revoke update on tests.city from 'faker'@'localhost';
复制代码
2-4.权限列表

2-4-1. 数据库/表级常用权限

权限名称阐明ALL PRIVILEGES授予全部权限(慎用)。SELECT允许查询数据。INSERT允许插入数据。UPDATE允许更新数据。DELETE允许删除数据。CREATE允许创建表/数据库(需数据库级权限)。ALTER允许修改表布局(如添加/删除列)。DROP允许删除表/数据库。INDEX允许创建/删除索引。REFERENCES允许创建外键束缚(通常与 CREATE 和 ALTER 共同使用)。CREATE VIEW允许创建视图。SHOW VIEW允许查看视图定义。TRIGGER允许操纵触发器。EXECUTE允许实行存储过程。 2-4-2. 管理类权限

权限名称阐明GRANT OPTION允许用户将自己的权限授予其他用户(高危权限)。PROCESS允许查看正在运行的查询(如 SHOW PROCESSLIST)。RELOAD允许实行 FLUSH 操纵(如刷新权限表)。REPLICATION CLIENT允许查询主从复制状态(如 SHOW REPLICA STATUS)。REPLICATION SLAVE允许从服务器从主服务器读取二进制日志(用于主从复制)。CREATE USER允许创建/删除用户。 2-4-3. 特殊权限

权限名称阐明FILE允许读写服务器文件(如 LOAD DATA INFILE,高危权限)。SUPER允许实行管理命令(如 KILL 线程、修改全局变量,高危权限)。
2-4-4.查看全部支持的权限

  1. --查看所有支持的权限
  2. SHOW PRIVILEGES;
复制代码
注意:授权后需刷新权限
  1. --刷新权限
  2. FLUSH PRIVILEGES;
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表