-- -- -- -- -- -- -- -- -- -- -- -- 创建表
-- CREATE TABLE teacher(
-- id INT,
-- NAME VARCHAR(20)
-- )
-- CREATE TABLE student(
-- id INT,
-- NAME VARCHAR(20),
-- gender VARCHAR(2),
-- age INT
-- )
-- -- -- -- 查看所有表
-- SHOW TABLES;
-- -- -- -- 查看表中各列信息
-- DESC teacher;
-- -- -- -- 删除表
-- DROP TABLE teacher;
-- -- -- -- 1 增加数据
-- -- 插入所有字段。一定依次按顺序插入不能少或多字段值
-- INSERT INTO student VALUES(1,'张昭','男',40);
-- INSERT INTO student VALUES(2,'黄盖','男'30);
-- -- 插入部分字段
-- INSERT INTO student (id,name) VALUES(3,'张纮');
-- INSERT INTO student (id,name) VALUES(4,'伏皇后');
-- -- -- -- 2 修改数据
-- -- 修改所有数据
-- UPDATE student SET gender = '男';
-- -- 条件修改
-- UPDATE student SET gender = '女' WHERE `name` = '伏皇后';
-- -- 修改多个字段
-- UPDATE student SET `name` = '周泰',age = 20 WHERE id = 2;
-- -- -- -- 3 删除数据
-- -- -- DELETE FROM 可以全表或者带条件删除 ,只能删除表的数据,不能删除表的约束 删除的数据可以回滚
-- -- 删除所有数据
-- DELETE FROM student;
-- -- 条件删除
-- DELETE FROM student WHERE NAME = "伏皇后";
-- -- -- TRUNCATE TABLE 可以全表删除 不能带条件删除 删除数据不能回滚
-- TRUNCATE TABLE student;
-- CREATE TABLE test(
-- id INT PRIMARY KEY AUTO_INCREMENT, -- 自增长约束
-- NAME VARCHAR(20)
-- )
-- DESC test;
-- 1.
-- DELETE FROM test;
-- 2
-- TRUNCATE TABLE test;
-- INSERT INTO test(NAME) VALUES('张三');
-- INSERT INTO test(NAME) VALUES('张三2');
-- INSERT INTO test(NAME) VALUES('张三3');
-- SELECT * FROM test;
-- truncate table student where id=2; 不能带条件
-- -- -- -- 4 查询数据
-- -- 查询所有列
-- SELECT * FROM student;
-- -- 查询指定列
-- SELECT id,NAME FROM student;
-- -- 查询时指定别名 (AS)
-- SELECT NAME AS '姓名',GENDER AS '性别' FROM student;
-- -- 查询时添加常量列
-- 需求: 查询表时添加一个朝代列 内容为:"三国" ;
-- SELECT id,`name`,gender,age,'朝代' AS '三国' FROM student;
-- -- 查询时合并列
-- 需求:查询id与年龄的和 ,合并列只能合并数值类型的字段
-- SELECT id,age,(id+age) AS '总和' FROM student;
-- -- 查询时去除重复记录(DISTINCT)
-- INSERT INTO student VALUES(4,'黄月英','女',30);
-- INSERT INTO student VALUES(5,'孙尚香','女',20);
-- INSERT INTO student VALUES(6,'甄姬','女',30);
-- 需求:查询学生的性别
-- SELECT DISTINCT gender FROM student;
-- SELECT DISTINCT(gender) FROM student;
-- -- -- 条件查询
-- -- 逻辑条件 and ,or
-- 需求: 查询id=2,并且姓名是"周泰"的人物
-- SELECT * FROM student WHERE id=2 AND `name`='周泰';
-- -- 交集 需求:查询id=2 ,或者姓名为 '周泰'的人物
-- SELECT * FROM student WHERE id=233 OR `name`='周泰';
-- -- 比较 >, <, >=, <=, =, <>不等于, BETWEEN AND >= 且 <=
-- 需求 查询年龄大于20 的人
-- SELECT * FROM student WHERE age > 20;
-- 需求 查询年龄大于20 且小于等于30 的人
-- SELECT * FROM student WHERE age>= 20 AND age <= 30;
-- SELECT * FROM student WHERE age BETWEEN 20 AND 30;
-- 需求 查询年龄不是20的人;
-- SELECT * FROM student WHERE age <> 20;
-- -- 判断条件 (null '' ) IS NULL, IS NOT NULL,='',<>''
-- 需求 查询性别为空的人物(包括null 和 空字符串) null 表示没有值 , '' 空字符串有值
-- INSERT INTO student VALUES (7,'颜良','',40);
-- INSERT INTO student(id,NAME,age) VALUES (8,'文丑',38);
-- -- 判读null
-- SELECT * FROM student WHERE gender IS NULL;
-- -- 判断空字符串
-- SELECT * FROM student WHERE gender = '';
-- -- 包括null和空字符串
-- SELECT * FROM student WHERE gender IS NULL OR gender = '';
-- 需求 查询有性别的人物(不包括null 和 空字符串)
-- SELECT * FROM student WHERE gender IS NOT NULL AND gender <> '';
-- -- --模糊查询 LIKE % 百分号表示任意个字符 _ 下划线表示一个字符
-- 需求 查询 姓张 的人物
-- SELECT * FROM student WHERE `name` LIKE '张%'
-- 需求 查询姓张 且姓名只有两个字的人物
-- SELECT * FROM student WHERE `name` LIKE '张_';
-- -- -- 聚合查询 常用聚合函数 SUM(expr) 求和,AVG(expr)平均数,MAX(expr)最大值,MIN(expr)最小值,
-- COUNT( expr) 返回检索到的行中非null值的数目 COUNT(*)返回包含null值的数目
-- 需求 查询人物的总年龄
-- SELECT SUM(age) AS '总年龄' FROM student;
-- 需求 查询人物的平均年龄
-- SELECT AVG( age) AS '平均年龄' FROM student;
-- 需求 查询人物最大,最小年龄
-- SELECT MAX(age),MIN(age) FROM student;
-- 需求 统计一共有多少人物
-- SELECT COUNT(*) FROM student;
-- -- -- 分页查询(LIMIT 起始行,查询行数) 起始行从0开始 分页: 当前页 每页显示多少条
-- -- 分页查询当前页的数据: SELECT * FROM student LIMIT (当前页-1)*每页条数,每页条数
-- 需求: 查询第1,2条记录
-- SELECT * FROM student LIMIT 0,2;
-- 需求: 查询第3,4条记录
-- SELECT * FROM student LIMIT 2,2;
-- 需求: 查询第4,5,6条记录
-- SELECT * FROM student LIMIT 3,3;
-- -- -- 查询排序 ORDER BY 字段 ASC/DESC ASC : 顺序. DESC:倒序 默认按照插入记录顺序排序
-- SELECT * FROM student;
-- 需求: 按照ID正序/倒序排序
-- -- 默认正序
-- SELECT * FROM student ORDER BY id;
-- SELECT * FROM student ORDER BY id ASC;
-- -- 倒序
-- SELECT * FROM student ORDER BY id DESC;
-- -- 多个排序条件
-- 需求 按照age倒序,id正序排序(年龄大的在前,年龄如果相等,id小的在前)
-- SELECT * FROM student ORDER BY age DESC,id ASC;
-- -- -- 分组查询 GROUP BY
-- 需求: 查询男女人数 结果 男 女
-- 步骤 : 1 把人物按照性别分组(GROUP BY gender) 2 统计每组人数(COUNT(*))
-- SELECT
-- gender,COUNT(*)
-- FROM
-- student
-- GROUP BY
-- gender;
-- -- -- 分组后筛选
-- 需求 :查询总人数大于3的性别
-- 步骤: 1 查询男女人数 2筛选人数大于2的记录(HAVING)
-- 分组之前条件用 WHERE 关键字,分组之后使用 HAVING 关键字
-- SELECT gender,COUNT(*)
-- FROM student
-- GROUP BY gender
-- HAVING COUNT(*)> 3;
-- CREATE TABLE teacher(
-- id INT,
-- NAME VARCHAR(20)
-- )
-- CREATE TABLE student(
-- id INT,
-- NAME VARCHAR(20),
-- gender VARCHAR(2),
-- age INT
-- )
-- -- -- -- 查看所有表
-- SHOW TABLES;
-- -- -- -- 查看表中各列信息
-- DESC teacher;
-- -- -- -- 删除表
-- DROP TABLE teacher;
-- -- -- -- 1 增加数据
-- -- 插入所有字段。一定依次按顺序插入不能少或多字段值
-- INSERT INTO student VALUES(1,'张昭','男',40);
-- INSERT INTO student VALUES(2,'黄盖','男'30);
-- -- 插入部分字段
-- INSERT INTO student (id,name) VALUES(3,'张纮');
-- INSERT INTO student (id,name) VALUES(4,'伏皇后');
-- -- -- -- 2 修改数据
-- -- 修改所有数据
-- UPDATE student SET gender = '男';
-- -- 条件修改
-- UPDATE student SET gender = '女' WHERE `name` = '伏皇后';
-- -- 修改多个字段
-- UPDATE student SET `name` = '周泰',age = 20 WHERE id = 2;
-- -- -- -- 3 删除数据
-- -- -- DELETE FROM 可以全表或者带条件删除 ,只能删除表的数据,不能删除表的约束 删除的数据可以回滚
-- -- 删除所有数据
-- DELETE FROM student;
-- -- 条件删除
-- DELETE FROM student WHERE NAME = "伏皇后";
-- -- -- TRUNCATE TABLE 可以全表删除 不能带条件删除 删除数据不能回滚
-- TRUNCATE TABLE student;
-- CREATE TABLE test(
-- id INT PRIMARY KEY AUTO_INCREMENT, -- 自增长约束
-- NAME VARCHAR(20)
-- )
-- DESC test;
-- 1.
-- DELETE FROM test;
-- 2
-- TRUNCATE TABLE test;
-- INSERT INTO test(NAME) VALUES('张三');
-- INSERT INTO test(NAME) VALUES('张三2');
-- INSERT INTO test(NAME) VALUES('张三3');
-- SELECT * FROM test;
-- truncate table student where id=2; 不能带条件
-- -- -- -- 4 查询数据
-- -- 查询所有列
-- SELECT * FROM student;
-- -- 查询指定列
-- SELECT id,NAME FROM student;
-- -- 查询时指定别名 (AS)
-- SELECT NAME AS '姓名',GENDER AS '性别' FROM student;
-- -- 查询时添加常量列
-- 需求: 查询表时添加一个朝代列 内容为:"三国" ;
-- SELECT id,`name`,gender,age,'朝代' AS '三国' FROM student;
-- -- 查询时合并列
-- 需求:查询id与年龄的和 ,合并列只能合并数值类型的字段
-- SELECT id,age,(id+age) AS '总和' FROM student;
-- -- 查询时去除重复记录(DISTINCT)
-- INSERT INTO student VALUES(4,'黄月英','女',30);
-- INSERT INTO student VALUES(5,'孙尚香','女',20);
-- INSERT INTO student VALUES(6,'甄姬','女',30);
-- 需求:查询学生的性别
-- SELECT DISTINCT gender FROM student;
-- SELECT DISTINCT(gender) FROM student;
-- -- -- 条件查询
-- -- 逻辑条件 and ,or
-- 需求: 查询id=2,并且姓名是"周泰"的人物
-- SELECT * FROM student WHERE id=2 AND `name`='周泰';
-- -- 交集 需求:查询id=2 ,或者姓名为 '周泰'的人物
-- SELECT * FROM student WHERE id=233 OR `name`='周泰';
-- -- 比较 >, <, >=, <=, =, <>不等于, BETWEEN AND >= 且 <=
-- 需求 查询年龄大于20 的人
-- SELECT * FROM student WHERE age > 20;
-- 需求 查询年龄大于20 且小于等于30 的人
-- SELECT * FROM student WHERE age>= 20 AND age <= 30;
-- SELECT * FROM student WHERE age BETWEEN 20 AND 30;
-- 需求 查询年龄不是20的人;
-- SELECT * FROM student WHERE age <> 20;
-- -- 判断条件 (null '' ) IS NULL, IS NOT NULL,='',<>''
-- 需求 查询性别为空的人物(包括null 和 空字符串) null 表示没有值 , '' 空字符串有值
-- INSERT INTO student VALUES (7,'颜良','',40);
-- INSERT INTO student(id,NAME,age) VALUES (8,'文丑',38);
-- -- 判读null
-- SELECT * FROM student WHERE gender IS NULL;
-- -- 判断空字符串
-- SELECT * FROM student WHERE gender = '';
-- -- 包括null和空字符串
-- SELECT * FROM student WHERE gender IS NULL OR gender = '';
-- 需求 查询有性别的人物(不包括null 和 空字符串)
-- SELECT * FROM student WHERE gender IS NOT NULL AND gender <> '';
-- -- --模糊查询 LIKE % 百分号表示任意个字符 _ 下划线表示一个字符
-- 需求 查询 姓张 的人物
-- SELECT * FROM student WHERE `name` LIKE '张%'
-- 需求 查询姓张 且姓名只有两个字的人物
-- SELECT * FROM student WHERE `name` LIKE '张_';
-- -- -- 聚合查询 常用聚合函数 SUM(expr) 求和,AVG(expr)平均数,MAX(expr)最大值,MIN(expr)最小值,
-- COUNT( expr) 返回检索到的行中非null值的数目 COUNT(*)返回包含null值的数目
-- 需求 查询人物的总年龄
-- SELECT SUM(age) AS '总年龄' FROM student;
-- 需求 查询人物的平均年龄
-- SELECT AVG( age) AS '平均年龄' FROM student;
-- 需求 查询人物最大,最小年龄
-- SELECT MAX(age),MIN(age) FROM student;
-- 需求 统计一共有多少人物
-- SELECT COUNT(*) FROM student;
-- -- -- 分页查询(LIMIT 起始行,查询行数) 起始行从0开始 分页: 当前页 每页显示多少条
-- -- 分页查询当前页的数据: SELECT * FROM student LIMIT (当前页-1)*每页条数,每页条数
-- 需求: 查询第1,2条记录
-- SELECT * FROM student LIMIT 0,2;
-- 需求: 查询第3,4条记录
-- SELECT * FROM student LIMIT 2,2;
-- 需求: 查询第4,5,6条记录
-- SELECT * FROM student LIMIT 3,3;
-- -- -- 查询排序 ORDER BY 字段 ASC/DESC ASC : 顺序. DESC:倒序 默认按照插入记录顺序排序
-- SELECT * FROM student;
-- 需求: 按照ID正序/倒序排序
-- -- 默认正序
-- SELECT * FROM student ORDER BY id;
-- SELECT * FROM student ORDER BY id ASC;
-- -- 倒序
-- SELECT * FROM student ORDER BY id DESC;
-- -- 多个排序条件
-- 需求 按照age倒序,id正序排序(年龄大的在前,年龄如果相等,id小的在前)
-- SELECT * FROM student ORDER BY age DESC,id ASC;
-- -- -- 分组查询 GROUP BY
-- 需求: 查询男女人数 结果 男 女
-- 步骤 : 1 把人物按照性别分组(GROUP BY gender) 2 统计每组人数(COUNT(*))
-- SELECT
-- gender,COUNT(*)
-- FROM
-- student
-- GROUP BY
-- gender;
-- -- -- 分组后筛选
-- 需求 :查询总人数大于3的性别
-- 步骤: 1 查询男女人数 2筛选人数大于2的记录(HAVING)
-- 分组之前条件用 WHERE 关键字,分组之后使用 HAVING 关键字
-- SELECT gender,COUNT(*)
-- FROM student
-- GROUP BY gender
-- HAVING COUNT(*)> 3;