MYSQL常用命令
目录
1. 数据库 + 表
- 查看数据库:show databases;
- 创建数据库:create database db01;
- 删除数据库:drop database db01;
- 使用数据库: use db01;
- 查看表:show tables;
- 创建表:create table person(name varchar(100), age int(10));
- 删除表:drop table person;
- 使用表:use person;
2. Insert 添加数据语句
- 表插入全部字段(数据的顺序必须和表结构顺序一致):INSERT INTO person VALUES(5,‘AAA’,‘你好’);
- 表插入部分字段(数据的顺序必须和字段的顺序一致):INSERT INTO person(id,sex,name) VALUES(5,‘AAA’,‘你好’);
3. Update 修改数据语句
- 修改所有数据(很少用到,不安全):UPDATE person SET name=‘abc’, age=15;
- 修改部分语句:UPDATE person SET name=‘abc’, age=15 WHERE id=1;
4. Delete 删除数据语句
- 删除所有数据(很少用到,不安全,不可逆):DELETE FROM person;
- 删除部分数据:DELETE FROM person WHERE id=8;
5. Select 查询数据语句
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
(1). SELECT 显示字段
- 显示表的所有字段:SELECT * FROM person;
- 显示表的固定字段:SELECT name, age, id FROM person;
- 显示表的固定字段,固定字段以别名输出:SELECT name stu_n, age stu_a, id stu_i FROM person;
- 以表达式显示表(会把age列全部加1,空值仍然还是空值):SELECT (age+1) stu_a, id FROM person;
(2). FROM 指定表
- 指定特定表:SELECT * FROM person;
- 指定表的特定字段方式显示:SELECT person.name, person.age, id FROM person;
- 指定表起别名(有时候表名太长):SELECT p.name FROM person p;
(3). WHERE 条件
A. 比较运算符(6个)
- 通过比较运算符查询:SELECT * FROM person WHERE age > 18; 通过比较运算符查询:SELECT * FROM person WHERE age >= 18; 通过比较运算符查询:SELECT * FROM person WHERE age < 18; 通过比较运算符查询:SELECT * FROM person WHERE age <= 18; 通过比较运算符查询:SELECT * FROM person WHERE age = 18; 通过比较运算符查询:SELECT * FROM person WHERE age != 18;
B. 逻辑运算符(3个)
- 通过 AND 逻辑与、表示并且的意思:SELECT * FROM person WHERE age > 18 AND age < 50 AND sex=‘男’;
- 通过 OR 逻辑或、表示或者的意思:SELECT * FROM person WHERE age = 18 OR age = 50;
- 通过 NOT 逻辑非、表示取反的意思(一般与其他运算符连用):SELECT * FROM person WHERE age IS NOT NULL; 或者 SELECT * FROM person WHERE name NOT LIKE ‘AAA’;
C. 其他运算符(4个)
- 通过 BETWEEN AND 查询数字区间、包含边界值:SELECT * FROM person WHERE age BETWEEN 18 AND 50;
- 通过 IN 查询数据区间:SELECT * FROM person WHERE name IN(‘王五’, ‘李四’, ‘张三’)
- 通过 LIKE 模糊查询、搜索功能、必须是字符类型varchar: 匹配符_: 匹配的是一个任意字符(1个、几乎不用):SELECT * FROM person WHERE name LIKE ‘王_’; 或者 SELECT * FROM person WHERE name LIKE ‘AAA’; 匹配符%: 匹配的是零个或者多个任意字符(任意个、用的多):SELECT * FROM person WHERE name LIKE ‘王%’; 或者 SELECT * FROM person WHERE name LIKE ‘%王%’;
- 通过 NULL 空、表示什么也没有、表示未知的意思(与 is 连用):SELECT * FROM person WHERE age IS NULL;
(4). GROUP BY 分组显示:相同的就是一组、显示组的信息。
通常必须和聚合统计类函数(MAX、SUM、MIN、AVG、COUNT等)一起使用:
- 通过 分组 显示:SELECT sex, MAX(age), MIN(age) FROM person GROUP BY sex;
(5). HAVING 分组条件
注意:having 必须和 group by 一起使用。
where条件对是表中每一条记录进行过滤。分组之前运行
having条件对分组之后的每一条记录进行过滤。分组之后运行
- 通过 having 条件(having是对group by执行完后的数据再次筛选):SELECT sex, count() FROM person WHERE name != ‘abc’ GROUP BY sex HAVING count() > 2;
(6). ORDER BY 排序
- 通过 ORDER BY 排序(比如按照年龄排序、默认升序):SELECT * FROM person ORDER BY age;
- 通过 ORDER BY 的 ASC 升序排序:SELECT * FROM person ORDER BY age ASC;
- 通过 ORDER BY 的 DESC 降序排序:SELECT * FROM person ORDER BY age DESC;
6. Distinct 去重、唯一显示的关键字(过滤重复值)
- 通过 DISTINCT 显示:SELECT DISTINCT age FROM person;
7. Limit n 表示返回前几条记录;Limit m, n 表示m起始位置(第几条开始截取,从0开始计数),n表示返回的记录数、
作用一:做top-n分析:
- 第一步-按照某个字段排序
- 第二步-使用limit关键字截取记录
示例:SELECT * FROM person ORDER BY age DESC LIMIT 3;
作用二:分页功能
示例(从0位置开始取三条):SELECT * FROM person LIMIT 0,3;
示例(从2位置开始取两条):SELECT * FROM person LIMIT 2,2;
8. 数据库中表与表之间的关联关系分为3种:
- 多表连接-笛卡尔积(A表m条记录、B表n条记录,最终结果是m*n条记录、多表连接经常的错误):SELECT * FROM tableA, tableB;
- 多表连接-标准写法(必须指定公共列的条件,如果连接n个表,至少需要指定n-1个公共列,否则就会产生笛卡尔积):SELECT * FROM tableA, tableB WHERE tableA.ida = tableB.idb;
- 多表连接-别名的应用:SELECT t_A.name 公司名, t_B.name 员工名 FROM tableA t_A, tableB t_B WHERE t_A.ida = t_B.idb;
- 多表连接-左连接(以左表为主表、可以把左表中所有记录都查询出来、当希望把左表中不满足条件的也查询出来的时候):SELECT * FROM tableA LEFT JOIN tableB ON tableA.ida = tableB.idb;
- 多表连接-左外连接,与左连接一模一样:SELECT * FROM tableA LEFT OUTER JOIN tableB ON tableA.ida = tableB.idb;
- 多表连接-右连接(以右表为主表、可以把右表中所有记录都查询出来、当希望把右表中不满足条件的也查询出来的时候):SELECT * FROM tableA RIGHT JOIN tableB ON tableA.ida = tableB.idb;
- 多表连接-右外连接,与右连接一模一样:SELECT * FROM tableA RIGHT OUTER JOIN tableB ON tableA.ida = tableB.idb;
- 多表连接-内连接(只查询出满足公共列条件的记录、和2中等价):SELECT * FROM tableA INNER JOIN tableB ON tableA.ida = tableB.idb;
9. 子程序:就是SELECT嵌套语句。
- SELECT子查询(通过分步骤的思想来解决问题、每次只关注一张表):
- WHERE子查询
- FROM子查询 补充: 理论一: 理论二: 理论三:
10. 并联:把两个表或者查询语句纵向连接
11. 视图
12. 事务
是一系列SQL语句的执行单元、这些SQL语句要么都执行、要么都不执行。
MYSQL数据库中的事务:默认情况下每一个sql语句独立执行、事务自动提交。
13. CASE表达式
14. 数据库表设计的范式:
范式是表设计的一个通过标准
版权归原作者 努力的小学弟 所有, 如有侵权,请联系我们删除。