21天SQL打卡

    技术2022-07-10  126

    Mysql下载安装 https://www.cnblogs.com/520BigBear/p/12764499.html msi版本安装 https://blog.csdn.net/CrankyST/article/details/83274092

    Day1: 创建数据库istester drop database if exists istester create database if not exist istester 查看数据库是否创建成功 show databases;

    Day2:在istester数据库下,创建表istester和表idoxu create table istester( id int(10) not null unique primary key, uname varchar(20) not null, sex varchar(4), birth year, department varchar(20), address varchar(50), idoxu varchar(20) );

    create table idoxu( id int(10) not null unique primary key, stu_id int(10) not null, c_name varchar(20), istester varchar(50), grade int(10) );

    Day3 根据已有的表istester和idoxu创建新表(复制表) 1)复制istester表结构,创建新表istester2 create table istester2 like istester; 或 create table idoxu2 as select * from idoxu where 2=1 2)复制idoxu表结构和数据,创建新表idoxu3 create table idoxu3 as select * from idoxu 3)复制idoxu表结构的id,stu_id,istester三个字段,创建新表idoxu3 create table idoxu3 as select id,stu_id,istester from idoxu where 1<>1

    Day4 1)删除表istester2 drop table istester2; 2)同时删除表idoxu2和idoxu3 drop table idoxu2,idoxu3; 3)查看还有哪些表 show tables;

    Day5 1.修改istester表,添加一个字段istester6(varchar(100),not null) alter table istester add column istester6 varchar(100) not null; 2.查看字段istester6是否添加成功 desc istester; 3.修改istester表,删除字段istester6 alter table istester drop istester6; 4.确认字段istester6,是否删除成功 desc istester

    Day6 插入insert 1.向表istester插入数据 id=1,uname=idoxu,idoxu=2020 id=2,uname=idoxu2,idoxu=2020 id=11,uname=idoxu3,sex=1 id=12,uname=idoxu4,sex=2 id=13,uname=idoxu5,sex=1 id=14,uname=idoxu6,sex=2

    2.向表idoxu插入数据 id=4,stu_id=11,c_name=idoxu,grade=90 id=5,stu_d=12,c_name=lin,grade=100 id=6,stu_id=33,c_name=istester,grade=20

    insert into istester(is,uname,idoxu)values(1,“idoxu”,2020); insert into istester(id,uname,idoxu)values(2,‘idoxu2’,2020); insert into istester(id,uname,sex)values(11,‘idoxu3’,1),(12,“idoxu4”,2),(13,‘idoxu5’,1),(14,‘idoxu6’,2); insert into idoxu(id,stu_id,c_name,grade)values(4,11,‘idoxu’,90),(5,12,‘lin’,100),(6,33,‘istester’,20);

    Day7 1)查询istester表id=1的内容 select * from istester where id=1 2)查询idoxu表grade=100的内容 select * from idoxu where grade=100

    Day8 模糊查询,like %表示任意多个任意字符 _表示一个任意字符

    select * from 表名 order by 列1 asc|desc,列2 asc|desc,… 默认升序asc

    1)查找idoxu表,名称(c_name)包含"i"的数据 select * from idoxu where c_name like ‘%i%’ 2)查找istester表,id包含“1”的数据 select * from istester where id like “%1%”; 3)查找istester表,id包含"1"的数据,按id降序 select * from istester where id like “%1%” order by id desc

    4)查找istester表,id包含"1"的数据,取id最大的三个 select * from istester where id like “%1%” order by id desc limit 3;

    Day9: as 起别名 max 最大 min 最小 1)找出idoxu表中,分数最高的同学和分数 select c_name,grade as "maxvalue"from idoxu where grade in(select max(grade)from idoxu); (用grade =也是对的)

    2)找出idoxu表中,分数最低的同学和分数 select c_name,grade as “minvalue” from idoxu where grade in (select min(grade) from idoxu); (给grade起别名为maxvalue和minvalue)

    Day10 1)找出istester表,sex为空的数据 select * from istester where sex=null (答案 select * from istester where sex is null ) 2)更新istester表,把sex为空的,设置为0(性别未知) update set sex=0 from istester where sex=null (答案update istester sex sex=0 where sex is null) 3)找出idoxu表,grade小于60分的同学 select * from idoxu where grade<60

    4)更新idoxu表,把grade小于60分的同学 一律改为59 update idoxu set grade=59 where grade<60

    Day11 1)查找istester表,按id降序 select * from istester order by id desc; 2)查找idoxu表,按grade升序 select from idoxu order by grade asc; (select from idoxu order by grade;默认就是升序排列)

    Day12 去重 关键字 distinct 1)查询istester表,有多少条数据 select count(sex) from istester (只计数) (参考答案select count(sex) from istester) 2)查询istester表,有几种性别类型(sex字段,去重) select count(distinct sex) from istester;

    select后面列前使用distinct可以消除重复的行 select distinct sex from students;

    day13 查找idoxu表,学生成绩grade总分 SELECT SUM(grade)from idoxu (参考答案SELECT SUM(grade) as sumgrade from idoxu) 查找idoxu表,学生成绩grade平均分 select AVG(grade)from idoxu

    Day14 查找idoxu表,成绩在80-100区间的学生 查找istester表,id为2,11,12的数据 select * from idoxu where grade>80 and grade <100 (参考答案 select * from idoxu where grade between 80 and 100) between and 包括边界 select * from istester where id in (2,11,12)

    Day15 删除istester表,id大于12的数据 delete from istester where id>12 删除idoxu表,分数grade不及格(小于60分)的数据 delete from idoxu where grade <60

    Day16 造数据 把istester表的所有数据,插入到idoxu表, 字段取值规则 id取id stu_id取id c_name取uname istester和grade字段,给默认值60 insert into idoxu(id,stu_id,c_name,istester,grade)SELECT id,id,uname,60,60 from istester

    Day17 修改表idoxu,把字段istester改为istester6(varchar 160) 检查是否修改成功 把idoxu表,改名为idoxu6 检查是否修改成功

    alter table idoxu CHANGE istester istester6 varchar(160); desc idoxu (查看表结构) alter table idoxu rename to idoxu6 show tables(查看当前数据库表名)

    day18 创建数据库 istesterdb6 create database istesterbd6 检查数据库是否创建成功 show databases

    进入istesterdb6 use istesterdb6 在数据库istesterdb6,创建idoxu表,直接拷贝istester库idoxu6表的数据和结构 create table idoxu as select * from istester.idoxu6 检查表是否创建成功 show tables

    Day19 limit用法 select * from table limit m,n 其中m从0开始,n是指从第m+1条开始,取n条 select * from 表名 limit start,count 从start开始,获取count条数据 start索引从0开始 idoxu表,排名前三的学生的分数 select * from idoxu order by grade desc limit 3 排名3-6名的学生的分数 select * from idoxu order by grade desc limit 2,4 排名6名以后的所有学生和分数 select * from idoxu order by grade desc limit 5,666

    Day20 多表查询 左连接,右连接,内连接,看看他们的差异。 左连接查询:查询的结果为两个表匹配到的数据加左表特有的数据,对于右表中不存在的数据 使用null填充。 右连接查询:查询的结果为两个表匹配到的数据加右表特有的数据,对于左表中不存在的数据 使用null填充。 当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回 等值连接查询:查询的结果为两个表匹配到的数据。

    假设有两张表 表idoxu6,表istester 左连接 select * from idoxu6 a left join istester b on a.stu_id=b.id 内连接 select * from idoxu6 a inner join istester b on a .stu_id=b.id; 右连接 select * from idoxu6 a right join istester b on a.stu_id=b.id;

    等值连接 select * from 表1,表2 where 表1.列=表2.列

    内连接 select * from 表1 inner join 表2 on 表1.列=表2.列

    select 需要显示的字段 from 涉及到的表 where 表之间的关联 用 and连接 以及其他条件

    左连接 select * from 表1, left join 表2, on 表1.列=表2.列

    比如查询所有学生的成绩,包括没有成绩的学生(没有成绩的取null)

    右连接 select * from 表1 right join 表2 on 表1.列=表2.列

    Day21 把表idoxu6,改为idoxu

    alter table idoxu6 rename to idoxu 删除库istesterdb6 drop database istesterdb6 删除istester表 drop table istester 清空idoxu表的数据 delete from table;

    使用where子句对表中的数据筛选,符号条件的数据会出现在结果集中。 where后面支持多种运算符,进行条件的处理 比较运算 < > = != 逻辑运算 and or not 模糊查询 like % _ 范围查询 in between…and… in 表示在一个非连续的范围内 between…and…表示在一个连续的范围内 空判断 判空is null 判非空 is not null

    【聚合函数】 count(*)表示计算总行数,括号中写星与列名,结果是相同的 max(列)表示求此列的最大值 min(列)表示求此列的最小值 sum(列)表示求此列的和 avg(列)标识求此列的平均值 【分组】 select 列1,列2,聚合… from 表名 group by 列1,列2… 【分组后的数据筛选】 select 列1,列2,聚合… from 表名 group by 列1,列2,列3… having 列1,…聚合… having后面的条件运算符与where的相同

    对比where与having where是对from后面指定的表进行数据筛选,属于对原始数据的筛选 having是对group by的结果进行筛选

    【获取部分行】 select * from 表名 limit start,count 从start开始,获取count条数据 start索引从0开始

    Processed: 0.011, SQL: 9