From 9c2953d3053ac3582ceef9575f8aa447bedef1c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E4=BF=8A=E6=98=8E?= <1282453552@qq.com> Date: Thu, 23 Mar 2023 19:20:03 +0800 Subject: [PATCH] =?UTF-8?q?20230323=E9=9A=8F=E5=A0=82=E7=BB=83=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...17\345\240\202\347\273\203\344\271\240.md" | 204 ++++++++++++++++++ 1 file changed, 204 insertions(+) create mode 100644 "14 \345\220\264\344\277\212\346\230\216/20230321\351\232\217\345\240\202\347\273\203\344\271\240.md" diff --git "a/14 \345\220\264\344\277\212\346\230\216/20230321\351\232\217\345\240\202\347\273\203\344\271\240.md" "b/14 \345\220\264\344\277\212\346\230\216/20230321\351\232\217\345\240\202\347\273\203\344\271\240.md" new file mode 100644 index 0000000..eef7b9e --- /dev/null +++ "b/14 \345\220\264\344\277\212\346\230\216/20230321\351\232\217\345\240\202\347\273\203\344\271\240.md" @@ -0,0 +1,204 @@ +```mysql +-- 0.创建数据库练习 +-- 1.直接创建数据库db3 +CREATE DATABASE db3 charset utf8; +-- 2.判断是否存在并创建数据库db4 +CREATE DATABASE if not EXISTS db4 charset utf8; +-- 3.查看所有的数据库 +show DATABASES; +-- 4.删除db3数据库 +DROP DATABASE db3; +-- 5.查看正在使用的数据库 +SELECT DATABASE(); +-- 6.使用db4数据库 +use db4; + +-- 1.创建表练习 +-- - 需求:设计一张学生表,请注重数据类型、长度的合理性 +CREATE TABLE stu( +id int, +name VARCHAR(10), +sex enum('男','女'), +age date, +score DOUBLE(5,2), +address VARCHAR(64), +tel VARCHAR(20), +zhuangtai int +); +-- 2.更改表练习 +-- 1.修改stu表名为student +alter TABLE stu rename to student; +-- 2.给学生表添加一列remark,类型为varchar(20) +ALTER TABLE student ADD remark VARCHAR(20); +-- 3.修改remark列的类型是varchar(100) +ALTER TABLE student MODIFY remark VARCHAR(100); +-- 4.修改remark列的名变为intro,类型varchar(30) +ALTER TABLE student change remark intro VARCHAR(30); +-- 5.删除intro列 +ALTER TABLE student DROP intro; +-- 3.添加数据 + -- 1.创建表 + -- 2.插入部分数据,给id name age sex赋值 + /* 1.在mysql中插入字符数据,数据使用单引号或者双引号都可以,建议使用单引号 2.在mysql中插入的数据是date类型,那么将数据书写在单引号或者双引号都可以 + */ +INSERT INTO student(id,name,age,sex) VALUES +(1,'张三','2004-01-01','男'), +(2,'李四','2004-02-02','男'), +(3,'王五','2004-03-03','男'); + + +-- 3.插入所有的字段,不写字段名 +INSERT INTO student VALUES +(4,'老八','男','2004-04-04',80.5,'新疆','1111111111',2); + +-- 4.插入所有的字段,写出字段名 +INSERT INTO student(id,name,sex,age,score,address,tel,zhuangtai) VALUES +(5,'老齐','男','2004-05-05',70,'北京','5656565656',3); + +-- 5.批量插入数据 +INSERT INTO student VALUES +(6,'老六','男','2004-06-06',90,'南京','7777777',1), +(7,'七七','女','2004-07-07',60,'上海','00002222',3); +-- 插入数据注意 +-- 6.插入数据时 省略列名,那么如果不需要给列赋值那么使用null + +-- 4.修改数据 +SELECT * FROM student; + -- 1.修改数据:修改性别都变为女 +UPDATE student SET sex='女'; + -- 2.修改数据:带条件修改id是2的学生性别变为男 +UPDATE student set sex='男' WHERE id=2; + -- 3.一次修改多个列,把id为3的学生,年龄改成26岁,address改成北京 +UPDATE student set age='26',address='北京' WHERE id=3; + +-- 5.删除数据 + -- 1.带条件删除数据,删除id是3的记录 +DELETE FROM student WHERE id=3; + +-- 2.带条件删除数据,删除id是1和2的记录 id in(1,2) : 表示id的值是1或者2 + +DELETE FROM student WHERE id=1 OR id=2; + +-- 3.不带条件删除 +DELETE FROM student; + +-- 6.查询数据 + -- 1.查询多个字段 + -- * 表示所有字段 +SELECT * FROM student; + +-- 2.写出查询每列的名称 + +SELECT id,name,sex,age,score,address,tel,zhuangtai FROM student; + +-- 3.查询表中name和age列,name列的别名为姓名,age列的别名为年龄 + -- 使用as起给字段和表起别名 + -- as可以省略 +SELECT name 姓名,age 年龄 FROM student; + +-- 4.去重 + -- 对age去重 +SELECT DISTINCT age FROM student; + +-- 对age和address去重 + -- 如果多个字段一起去重,如果所有的字段值全部一样才会去重 +SELECT DISTINCT age,address FROM student; + +-- 7.带条件的查询 + -- 1.查询数学成绩大于80学生 +SELECT * FROM student WHERE score>80; + -- 2.查询英语成绩小于等于80学生 +SELECT * FROM student WHERE score<=80; + -- 3.查询年龄等于20的学生 +SELECT * FROM student WHERE age=20 + -- 4.查询年龄不等于20的学生 +SELECT * FROM student WHERE age!=20; + -- 5.查询年龄大于35并且性别是男的学生 +SELECT * FROM student WHERE age>35 and sex='男'; + -- 6.查询年龄大于35或者性别是男的学生 +SELECT * FROM student WHERE age>35 or sex='男'; + -- 7.查询id是1 3 5的学生 +SELECT * FROM student WHERE id in(1,3,5); + -- 8.查询id不是1 3 5的学生 + -- not in 是in的取反,表示不在什么其中 +SELECT * FROM student WHERE id not in(1,3,5); + -- 范围查询 + -- 9.英语成绩在75和90之间 +SELECT * FROM student WHERE score BETWEEN 75 and 90; + -- 模糊查询 使用like + -- 10.查询姓赵的学生 + -- name like '赵%' 表示name的值以赵开始,后面是什么都可以 + -- %在模糊查询中表示任意个数的字符 +SELECT * FROM student WHERE name like '赵%'; + -- 11.查询包含岩 + -- name like '%岩%' 表示name的值只要含有岩即可,前后%表示匹配任意多个字符 +SELECT * FROM student WHERE name LIKE '%岩%'; + -- 12.查询姓赵并且是三个字的学生 + -- _下划线在模糊查询中表示单个字符 +SELECT * FROM student WHERE name LIKE '赵__'; + -- 排序 + -- desc表示降序 + -- 13.按照年龄降序排序 +SELECT * FROM student ORDER BY age desc; + -- 14.先按照年龄降序排序,如果年龄相同在按照数学降序排序 +SELECT * FROM student ORDER BY age desc,score desc; + -- 15.先按照年龄降序排序,如果年龄相同在按照数学升序排序 +SELECT * FROM student ORDER BY age desc,score asc; + -- 聚合函数 + -- 16.查询学生总数即有多少名学生 +SELECT count(id) FROM student; + -- 17.查询数学成绩总分数 +SELECT SUM(score) FROM student; + -- 18.查询数学成绩最高分数 +SELECT MAX(score) FROM student; + -- 分组 + -- 准备数据 + create table car( + id int, + color char(2), + price float + ); + +​ insert into car(id,color,price) values(1,'黄色',16); +​ insert into car(id,color,price) values(2,'黄色',16); +​ insert into car(id,color,price) values(3,'蓝色',5); +​ insert into car(id,color,price) values(4,'红色',60); +​ insert into car(id,color,price) values(5,'白色',8); +​ insert into car(id,color,price) values(6,'红色',60); +​ -- 1.查询每种颜色车辆的总价 +SELECT color,SUM(price) FROM car GROUP BY color; +​ -- 2.查询每种颜色车辆总价大于30车辆的颜色和总价 +SELECT color,SUM(price) FROM car GROUP BY color HAVING SUM(price)>30; +​ -- 3.注意:分组查询的结果最好是分组字段和聚合函数,不要是其他字段 + +-- 4.where后面不能使用聚合函数 报错的 +-- 小结:where是在分组前筛选,having是在分组后筛选 + +-- 5.查询车的单价大于15的每种颜色车辆总价大于30车辆的颜色和总价 +SELECT color,sum(price) FROM car WHERE price>15 GROUP BY color HAVING SUM(price)>30; + +-- 分页 + -- 1.分页查询数据,每页显示2条数据 + -- 第一页 + -- 0 表示起始索引,对应第一行数据 + -- 2表示每页显示2条数据 + SELECT * FROM car LIMIT 0,2; + -- 当起始索引是0的情况下可以不写索引0,写法如下, + -- 下面的2表示每页显示的数据行数 + + +​ -- 第二页 +​ -- 第一个2表示起始索引,对应三行数据 +​ -- 第二个2表示每页显示两条数据,对于第二个参数每个公司基本是固定的,最后一页剩下几行数据 +​ -- 就会显示几行数据 +SELECT * FROM car LIMIT 2,2; +-- 第三页 +​ /* +​ 公式: 起始索引 = (当前页码-1)*每页显示的条数 +​ 0 1 2 +​ 2 2 2 +​ 4 3 2 +​ */ +SELECT * FROM car LIMIT 4,2; +``` + -- Gitee