21天打卡-MYSQL第四期

XAMPP进入数据库:
mysql -u root -p123456
选择对应的数据库:use istester;
查看表 desc XXX;

01天0429

01
1)创建数据库 istester
2)查看数据库创建是否成功

语法解析:

创建数据库
CREATE DATABASE 数据库名;
查看是否成功:
show databases

作业答复:
1、create database istester;
2、show databases;
在这里插入图片描述
参考答案:
1)创建数据库 istester
DROP DATABASE IF EXISTS istester;
CREATE DATABASE IF NOT EXISTS istester;

02天0429

在昨天创建的isTester数据库下,创建 表 istester 和 表 idoxu
注:SQL的作业,前几天的 库、表,都是打基础;没有这些,后面的增删改查,你也没法玩 ;

1)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)

2)idoxu表的字段、类型、属性:
id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT ,
stu_id INT(10) NOT NULL ,
c_name VARCHAR(20) ,
istester VARCHAR(50) ,
grade INT(10)

作业:
需要选择对应的数据库,使用:use databasename; 选择数据库
1、use istester;
2、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)
);
3、create table idoxu(
id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT ,
stu_id INT(10) NOT NULL ,
c_name VARCHAR(20) ,
istester VARCHAR(50) ,
grade INT(10)
);
在这里插入图片描述

03天0430

根据已有的表istester 和 idoxu 创建新表(复制表)
1)复制istester表结构,创建新表istester2
注:可以有两种方式
2)复制idoxu表结构和数据,创建新表idoxu2
3)复制idoxu表结构的 id,stu_id,istester三个字段,创建新表idoxu3

语法解析:

复制结构

1、CREATE TABLE 新表 LIKE 旧表

结构+数据

1、CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2(即:让WHERE条件不成立,可以省略)

  • 这种方法会将old_table中所有的内容都拷贝过来(只是数据记录为空)
  • 用这种方法需要注意,new_table中没有了old_table中的primary key,Extra,auto_increment等属性,需要自己手动加。

已有表,复制数据

1、INSERT INTO 新表 SELECT * FROM 旧表(2个标结构一致)
2、复制旧表的数据到新表(2个表结构不一样)
INSERT INTO 新表 AS SELECT 字段1,字段2,… FROM 旧表

使用desc 表名来查看对应的表结构

作业答复
1、CREATE TABLE 新表 SELECT * FROM 旧表 WHERE 1=2
create table istester2 select * from istester where 1=2;
create table istester3 like istester;
在这里插入图片描述
使用desc istester; desc istester2; desc istester3;查看表结构
在这里插入图片描述
2)复制idoxu表结构和数据,创建新表idoxu2
1、create table idoxu2 select * from idoxu;
3)复制idoxu表结构的 id,stu_id,istester三个字段,创建新表idoxu3
create table idoxu3 as select id,stu_id,istester from idoxu where 1<>1;
在这里插入图片描述

04天0501

1)删除表 istester2
2)同时删除表idoxu2和idoxu3
3)查看还有哪些表

语法解析:

不再需要表:drop table XXX;(表结构也被删了))
保留表,删除所有记录:truncate table XXX;(释放空间)
删除表中的部分记录:delete table XXX;或者是delete from XXXX [where条件](不释放空间)
删除表:DROP TABLE table_name ;

作业:
1、drop table istester2;
2、drop table idoxu2,idoxu3;
3、show tables;
在这里插入图片描述

05天0502

1)修改istester表,添加一个字段istester6 (字符类型VARCHAR,长度100,不允许为空)
2)查看字段istester6 ,是否添加成功
3)修改istester表,删除字段istester6
4)确认字段istester6 ,是否删除成功

语法解析:

alter table 语句用于在已有的表中添加、修改或删除列。
1、添加:alter table XXX add MM[类型(长度)]
2、修改:alter table XXX change MM NN[类型(长度)]
3、删除:alter table XXX drop MM

作业:
1、alter table istester add istester6 varchar(100) not null;
2、desc istester;
3、alter table istester drop istester6;
4、desc istester;
在这里插入图片描述

06天0503

插入 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_id=12,c_name=lin,grade=100
id=6,stu_id=33,c_name=istester,grade=20

语法解析:

插入数据格式:
insert into 表名(字段1,字段2…)values(值1,值2…)
如果里面有字符串,数值需要用引号括起来
插入多条,则组合值之间用逗号隔开

作业答复:
1、insert into istester(id,uname,idoxu)
values
(1,‘idoxu’,2020),
(2,‘idoxu2’,2020);

insert into istester(id,uname,sex)
values
(11,‘idoxu3’,1),
(12,‘idoxu4’,2),
(13,‘idoxu5’,1),
(14,‘idoxu6’,2);
在这里插入图片描述
2、insert into idoxu(id,stu_id,c_name,grade)
values
(4,11,‘idoxu’,90),
(5,12,‘lin’,100),
(6,33,‘istester’,20);
在这里插入图片描述

07天0504

1)查询istester表 id = 1 的内容
2)查询idoxu 表 grade=100 的内容

语法解析

查询使用select 语句
1、select * from istester where id=1;
2、select * from idoxu where grade=100;
在这里插入图片描述

08天0506

1)查找idoxu表,名称(c_name)包含 “i” 的数据
2)查找istester表,id 包含 “1” 的数据
3)查找istester表,id 包含 “1” 的数据,按id降序
4)查找istester表,id 包含 “1” 的数据 ,取id最大的三个

语法解析:

使用where代表条件,使用Like放置在条件中
包含可用:%
排序:ORDER BY XXX;默认是升序,为ASC;降序用DESC来表达
返回指定数量,limit n:放在排序后面,表示返回n条数据

作业答复:
1、select * from idoxu where c_name like “%1%”;
2、select * from istester where id like “%1%”;
3、select * from istester where id like “%1%” order by id desc;
4、select * from istester where id like “%1%” order by id desc limit 3;
在这里插入图片描述

09天0507

1)找出idoxu表中,分数最高的同学和分数
2)找出idoxu表中,分数最低的同学和分数

语法解析:

可以使用max(字段名)和min(字段名)2个函数找出一列中的最大最小值

  • null值是不包含在其中的
  • MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。
  • 注意要加上where判断,不然搜索其他的字段可能不会匹配对应的最大最小值

作业答复:
1、select c_name,grade from idoxu where grade=(select max(grade) from idoxu);
2、select c_name,grade from idoxu where grade=(select min(grade) from idoxu);
在这里插入图片描述

10天0510

– 1) 找出istester表,sex为空的的数据;
– 2)更新istester表,把sex为空的,设置为0(性别未知)
– 3)找出idoxu表,grade小于60分的同学
– 4)更新idoxu表,把grade小于60分的同学,一律改为59分

语法解析:

1、找出空置用 select * from XX where XX is null;
使用update更新语句中的值
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

1、select * from istester where sex is null;
2、update istester set sex=0 where sex is null;
在这里插入图片描述

3、select * from idoxu where grade<60;
4、update idoxu set grade=59 where grade<60;
在这里插入图片描述

11天0511

– 1)查找istester表,按id降序
– 2)查找idoxu表,按grade升序

作业答复

1、select * from istester order by id desc;
2、 select * from idoxu order by grade;
在这里插入图片描述

12天0512

1)查询istester表,有多少条数据
2)查询istester表,有几种性别类型(sex字段,去重)

语法解析:
COUNT(字段名):返回查询的记录总数
DISTINCT <字段名>:返回不重复字段的条数(只返回目标字段,不对其他字段做处理)

作业答复:
1、select count(id) from istester;
2、select count(distinct sex) from istester;
在这里插入图片描述

13天0513

1)查找idoxu表,学生成绩(grade) 总分
2)查找idoxu表,学生成绩(grade) 平均分

语法解析:
SUM(字段名):求和,返回指定列的总和
AVG(字段名):求平均值,返回指定列数据的平均值

作业答复:
1、select sum(grade) from idoxu;
2、select avg(grade) from idoxu;
在这里插入图片描述

14天0514

1)查找idoxu表,成绩在80 - 100区间的学生 ;
2)查找istester表,id 为 2,11,12 的数据 ;

作业答复
1、select * from idoxu where grade between 80 and 100;
2、select * from istester where id=2 or id=11 or id=12;
或者select * from istester where id in (2,11,12) ;
在这里插入图片描述

15天0515

1)删除 istester表,id大于12的数据 ;
2)删除idoxu表,分数grade不及格(小于60分)的数据 ;

语法:
delete from XXX表 where XX列名=XXX

作业答复:
1、delete from istester where id>12;
2、delete from idoxu where grade < 60;
在这里插入图片描述

16天0516

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

语法解析:
1、2张表的字段一致,并且希望插入全部数据,可以用这种方法:
INSERT INTO 目标表 SELECT * FROM 来源表; *
2、只希望导入指定字段,可以用这种方法:
INSERT INTO 目标表 (字段1, 字段2, …) SELECT 字段1, 字段2, … FROM 来源表
3、只导入目标表中不存在的记录,可以使用这种方法:
INSERT INTO 目标表
(字段1, 字段2, …)
SELECT 字段1, 字段2, …
FROM 来源表
WHERE not exists (select * from 目标表
where 目标表.比较字段 = 来源表.比较字段);
作业答复:
insert into idoxu(id,stu_id,c_name,istester,grade) select id,id,uname,60,60 from istester;
在这里插入图片描述

17天0517

1)修改表idoxu,把字段istester ,改为istester6(字符类型varchar,长度160 )
2)检查是否修改成功
3)把idoxu表,改名为 idoxu6
4)检查是否修改成功

语法:
alter table :已有表中添加、修改、删除列
添加:alter table XX add XX字段 nn(参数)
删除:alter table XX drop XX字段
修改:alter table XX change XX字段 nn(参数)

1、alter table idoxu change istester istester6 varchar(160);
2、desc idoxu;
3、alter table idoxu rename to idoxu6;
4、show tables;
在这里插入图片描述

18天0518

1)创建数据库 istesterdb6
2)检查数据库是否创建成功 ;
3)进入istesterdb6 库
4)在数据库 istesterdb6 ,创建idoxu表,直接拷贝 istester库idoxu6表的数据和结构 ;
5)检查表是否创建成功 ;

19天0519

第19天作业 ,

idoxu表,分数grade
1)排名前三的学生 和分数 ;
2)排名3 - 6名的学生 和分数 ;
3)排名6名以后的所有学生 和分数 ;

前一天作业答案参考 ,

1)创建数据库 istesterdb6
create database istesterdb6 ;

2)检查数据库是否创建成功 ;
show databases ;

3)进入istesterdb6 库
use istesterdb6 ;

4)在数据库 istesterdb6 ,创建idoxu表,直接拷贝 istester库idoxu6表的数据和结构 ;
create table istesterdb6.idoxu as SELECT * from istester.idoxu6;

create table idoxu as SELECT * from istester.idoxu6;

5)检查表是否创建成功 ;
show tables;

20天0520

第20天作业 ,

多表查询(左链接、右链接、内链接),看看他们的差异 ;

假设,有两张表:表 idoxu6 和 表istester

前一天作业答案参考 ,

– 1)排名前三的学生 和分数 ;
SELECT c_name,grade FROM idoxu ORDER BY grade DESC LIMIT 3;

– 2)排名3 - 6名的学生 和分数 ;
SELECT c_name,grade FROM idoxu ORDER BY grade DESC LIMIT 2,4;

– 3)排名6名以后的所有学生 和分数 ;
SELECT c_name,grade FROM idoxu ORDER BY grade DESC LIMIT 5,666;

注:这题目的是limit的用法,很多同学写的太复杂 ;

limit是mysql的语法
select * from table limit m,n
其中m是指记录开始的index,从0开始,表示第一条记录
n是指从第m+1条开始,取n条。
select * from tablename limit 2,4
即取出第3条至第6条,4条记录

21天0521

第21天作业(最后1天,结业) ,

1)把表idoxu6,改为idoxu
2)删除库 istesterdb6
3)删除istester表
4)清空idoxu表的数据

End ,一切恢复如初,坐等SQL下一期 ;

这期结束了,未完待续 。

下期见 。

前一天作业答案参考 ,

注:主要目的是熟悉这三种玩法,以及观察结果差异 ;

#左连接
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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值