01 07SQL进阶及查询练习之数据查询语言

1 写在前面

本次练习接上一篇内容:点一下我啦

在这里还是要说笔者使用的是MySQL 8.0版本的数据库,小伙伴注意不同数据库之间的有些语法不同哦!

2 实验准备

毕竟有上次的胡乱捣鼓,所以这里我们重新来过。当然一开始就是开心的删库不跑路(说错了,是删表,嘻嘻),那么如何一次性删除一个数据库中所有的表呢?当然是一个一个的删啦,你在想啥呢?虽然网上有一些方法,但是真的非常非常不靠谱,我还不如自己写个代码循环删呢!虽然不靠谱,还是给大家看看!

# 查询要删除数据库中所有的表,使用字符串连接形成删除表的语法,
#接下来不用我说大家都懂了,害,浪费我时间
select concat('DROP TABLE IF EXISTS ', table_name, ';') from information_schema.tables where table_schema='test_simple_practice';

上面的方法比较傻,所以我查阅官方文档,终于皇天不负有心人,比他的方法聪明那么一点点,只不过只在MySQL上试验过,其他数据库不清楚,如果有小伙伴使用其他数据库,可以做做试试并告诉我一下。

#首先使用group_concat()函数将查询结果集转化为字符串
SELECT group_concat(table_name) FROM information_schema.`tables` WHERE table_schema='test_simple_practice'
#结果:department,score,teach,temp,user_info,太贴心了,接着使用以下语法
#语法:DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE]
DROP TABLE IF EXISTS department,score,teach,temp,user_info;

但是可能大家会问,既然返回的是一个字符串,为什么不能直接放在DROP语句后面呢?这个笔者也试过,可惜不行,呜呜呜!

删除完数据表了,那么就按照这篇博文的爸爸(点一下就可以看到了)来创建数据库中的表吧,早知道上次实验的时候先备份的(吐血)!

CREATE TABLE IF NOT EXISTS Department(
DEPTNO CHAR(2),
DEPTNAME CHAR(10),
PRIMARY KEY(DEPTNO)
);

CREATE TABLE IF NOT EXISTS Student(
SNO CHAR(5),
SNAME CHAR(10) NOT NULL,
SDEPT CHAR(2) NOT NULL,
SCLASS CHAR(2) NOT NULL,
SSEX CHAR(2),
SAGE NUMERIC(2),
PRIMARY KEY(SNO),
CONSTRAINT fk_student_sdept FOREIGN KEY(SDEPT) REFERENCES Department(DEPTNO)
);

CREATE TABLE IF NOT EXISTS Course(
CNO CHAR(3),
CNAME CHAR(16) NOT NULL,
CTIME NUMERIC(3),
PRIMARY KEY(CNO),
UNIQUE(CNAME)
);

CREATE TABLE IF NOT EXISTS Teach(
TNAME CHAR(8),
TSEX CHAR(2),
CNO CHAR(3),
TDATE DATE,
TDEPT CHAR(2),
PRIMARY KEY(TNAME, CNO, TDEPT),
CONSTRAINT fk_teach_course FOREIGN KEY(CNO) REFERENCES Course(CNO)
);

CREATE TABLE IF NOT EXISTS SCORE(
SNO CHAR(5),
CNO CHAR(3),
SCORE NUMERIC(5,2),
PRIMARY KEY(SNO, CNO),
CONSTRAINT fk_score_student FOREIGN KEY(SNO) REFERENCES Student(SNO),
CONSTRAINT fk_score_course FOREIGN KEY(CNO) REFERENCES Course(CNO)
);

好了,现在就进行数据导入吧!

#Department表信息导入
INSERT INTO Department(DEPTNO,DEPTNAME) 
VALUES('CS','计算机系'),('MA','数学系'),('IS','信息系');

#Student表信息导入
INSERT INTO Student
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值