查看数据库: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;
表插入全部字段(数据的顺序必须和表结构顺序一致):INSERT INTO person VALUES(5,‘AAA’,‘你好’);
表插入部分字段(数据的顺序必须和字段的顺序一致):INSERT INTO person(id,sex,name) VALUES(5,‘AAA’,‘你好’);
修改所有数据(很少用到,不安全):UPDATE person SET name=‘abc’, age=15;
修改部分语句:UPDATE person SET name=‘abc’, age=15 WHERE id=1;
删除所有数据(很少用到,不安全,不可逆):DELETE FROM person;
删除部分数据:DELETE FROM person WHERE id=8;
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
显示表的所有字段: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;
指定特定表:SELECT * FROM person;
指定表的特定字段方式显示:SELECT person.name, person.age, id FROM person;
指定表起别名(有时候表名太长):SELECT p.name FROM person p;
A. 比较运算符(6个)
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;
通常必须和聚合统计类函数(MAX、SUM、MIN、AVG、COUNT等)一起使用:
注意:having 必须和 group by 一起使用。
where条件对是表中每一条记录进行过滤。分组之前运行
having条件对分组之后的每一条记录进行过滤。分组之后运行
通过 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;
作用一:做top-n分析:
1. 第一步-按照某个字段排序
2. 第二步-使用limit关键字截取记录
示例:SELECT * FROM person ORDER BY age DESC LIMIT 3;
作用二:分页功能
示例(从0位置开始取三条):SELECT * FROM person LIMIT 0,3;
示例(从2位置开始取两条):SELECT * FROM person LIMIT 2,2;
多表连接-笛卡尔积(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;
是一系列SQL语句的执行单元、这些SQL语句要么都执行、要么都不执行。
MYSQL数据库中的事务:默认情况下每一个sql语句独立执行、事务自动提交。
范式是表设计的一个通过标准