博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL常用语句整理
阅读量:4220 次
发布时间:2019-05-26

本文共 3632 字,大约阅读时间需要 12 分钟。

目录


 

连接数据库

 # 直接使用明文密码 mysql -uroot -proot # 使用密文密码 mysql -uroot -p

关闭数据库

 QUIT / Ctrl + D

查看所有数据库

 show database;

创建数据库

 create database db1;

使用数据库

 use db1;

显示所有表

 show tables;

创建用户

 create user '用户名'@'IP地址'

删除用户

 drop user '用户名'@'IP地址';

修改用户

 rename user '用户名'@'IP地址' to '新用户名'@'新IP地址';

修改密码

 set password for '用户名'@'IP地址' = Password("新密码");

查看权限

 show grants for '用户名'@'IP地址';

授权

 grant 权限 on 数据库.表 to '用户名'@'IP地址'

取消授权

 revoke 权限 on 数据库.表 from '用户名'@'IP地址'

创建表

 CREATE TABLE table1(     id INT NOT NULL AUTO_INCREMENT,     name VARCHAR(20) NOT NULL,     age INT NULL,     PRIMARY KEY('id') );

修改表

 ALTER TABLE table1 ADD class VARCHAR(20);

删除列

 ALTER TABLE table1 DROP COLUMN name;

删除表

 DROP TABLE table1;

清空表

 DELETE from user; TRUNCATE from user;

 insert into user(列名1,列名2 ...) values (值1,值2 ...); insert into user(列名1,列名2 ...) values (值1,值2 ...),(值3,值4 ...);

将查询的内容插入

 INSERT INTO table1(id,name)  SELECT id,name FROM table2;

 # 删除所有数据 delete from user # 删除指定内容 delete from user where 条件

 update user set name = "Join" where id > 1;

 select * from user select * from user where 条件 select {要查询的字段} from user where 条件

条件查询

 # 与查询 select * from user where age > 5 and name != 'Wei'; # 区间查询 select * from user where age between 18 and 26; # 在...中 select * from user where age in (18,22,25); # 不在...中 select * from user where age not in (17,16,13); # 嵌套子查询 select * from user where age in (select age from 表 where dept = '计算机');

模糊查询

 # 搜索许开头的内容 select * from user where name like '许%'; # 搜索‘君’结束的内容 select * from user where name like '%君'; # 搜索许开头的内容,但后续只有一个字 select * from user where name like '许_'; # 搜索‘君’结束的内容,但前缀只有一个字 select * from user where name like '_君'

限制查询

 # 查询前10行 select * from user where limit 10; # 查询从第五行后的五行 select * from user where limit 5 , 5;

排序查询

 # 从小到大排序 select * from user order by age asc; # 从大到小排序 select * from user order by age desc;

分组查询

 select * from 表 group by dept; # group by 必须在 order by之前, where 语句之后

关联查询

交叉查询(CROSS JOIN)

使两张表进行笛卡尔积运算(X和Y的乘积)。会出现大量重复字段

 # 方法1 select * from user1 u1 , user2 u2 Where 条件; # 方法2 select * from user1 u1 CROSS JOIN user2 u2 Where 条件;

内连接(INNER JOIN)

查询两个表的交集,

 

 SELECT * FROM tb1 INNER JOIN tb2 ON 条件

外连接(LEFT JOIN/RIGHT JOIN)

外连接分为左外连接和右外连接,左外连接以左表为主,先查询左表数据,再通过ON后的关联条件匹配右表,没有则用NULL代替。右外连接同理

左外查询

查询两个表中共有的元素和左表全部的元素,左表有而右表没有的用NULL代替

 

 SELECT u.name , d.name FROM user u  LEFT JOIN dept d ON u.dept = d.id;

右外查询

和左外类似,查询两个表中共有的元素和右表所有的元素,右表有而左表没有的用NULL代替

 

 select u.name,d.dept      FROM user u      RIGHT JOIN dept d      ON u.dept = d.id;

联合查询(UNION/UNION ALL)

联合查询可以将多个查询的结果合并成为一个结果

 select * from user where id = 3 UNION select * from dept where id = 13; ​ # 使用UNION查询;会自动去重 SELECT u1.name from user1 u1 where sex = '男'; UNION select u2.name from user2 u2 where sex = '女'; # 使用UNION ALL查询;不会去重 SELECT u1.name from user1 u1 where sex = '男'; UNION ALL select u2.name from user2 u2 where sex = '女';
  • 多条语句的查询列数必须一致

  • 每一列的类型和顺序最好一致

  • 默认情况下会去除重复项

  • UNION ALL不会去重,效率低于UNION

全连接(FULL JOIN)

MySQL默认不支持全连接,可以通过UNION关键字链接左外连接和右外

 select u.name,d.d_name      FROM user u      left JOIN dept d      ON u.dept = d.id UNION select u.name,d.dept      FROM user u      RIGHT JOIN dept d      ON u.dept = d.id;

 

子查询

子查询是指将一条SQL的结果作为另一条SQL的条件或结果,其中内部嵌套的查询语句称为子查询

子查询的结果有三种,分别是:

1.单行单列

结果为一个值

 select * from user where name = (select name from dept where dept = "Pro");

2.多行单列

结果是一个类似于数组

 select * from user where name in (select name where age > 18);

3.多行多列

结果类似于表,不能用于where条件

 select * from dept d,(select * from emp where join_date > '2019-1-1') e where e.dept_id = d.id; # 也可以这样 select d.* , e.* from dept d inner join emp e on d.id = e.dept_id where e.join_date > '2020-1-1';

 

转载地址:http://xbmmi.baihongyu.com/

你可能感兴趣的文章
javascript注册事件的四种方式
查看>>
S.O.L.I.D五大原则之SRP(单一职责)
查看>>
自定义Struts2中的ActionErrors
查看>>
windows xp 系统CMD命令大全
查看>>
控制Highcharts中x轴和y轴坐标值的密度
查看>>
xampp下Apache + Tomcat 集群配置的简单介绍(with sticky session)
查看>>
xampp(Apache + Tomcat)与主机的域名绑定
查看>>
增加windows下Tomcat运行时的内存
查看>>
tomcat群集中session共享的几个方案
查看>>
查看windows的开关机日志
查看>>
查找google谷歌北京IP地址的方法
查看>>
chrome的异常Uncaught ReferenceError: xl_chrome_menu is not defined
查看>>
Java不使用web容器,发布WebService应用
查看>>
大运动量的体能训练之后,如何迅速恢复体力?
查看>>
js+css 简单的高亮选中对象
查看>>
只长肌肉 不长脂肪——教你精确制导增肌餐
查看>>
转:解决mysql锁表终极方法
查看>>
MySQL 无法退出命令行中的SQL输入模式
查看>>
show engine innodb status 详解(转 )
查看>>
有氧运动和无氧运动 的能量消耗问题
查看>>