MySQL-数据库入门操作(二)

安装可视化操作窗口
链接:https://pan.baidu.com/s/1dge86tJIOIxwwSPmY1l4vQ
提取码:m3vd
里面有注册码文件,按照提示注册
在这里插入图片描述

给表中元素添加索引:方便查询数据,加快查询速度
1.首先添加主键索引

ALTER TABLE dept ADD PRIMARY KEY(sid);

2.添加唯一索引(主键索引只能添加一个,唯一索引可以添加多个)

ALTER TABLE dept ADD UNIQUE KEY(sname);

3.添加常规索引

ALTER TABLE dept ADD INDEX(spwd);

查看索引

SHOW INDEX FROM dept;

删除索引 类型

DROP INDEX spwd ON dept;

一般一张表里面什么字段会加上索引:
主键,这个字段经常被使用的时候。
关联的数据一般不建议加索引,每次匹配查询索引,降低查询效率。

视图:
好处:使我们查询出来的数据更加直观
创建一个视图

	CREATE VIEW view_name AS SELECT * FROM dept WHERE sid = 1;

查看视图

	SELECT * FROM view_name ;

删除视图dept

	DROP VIEW view_name;

触发器

	SHOW TRIGGERS
	CREATE TRIGGER my_tone BEFORE
	INSERT ON dept FOR EACH ROW 
	INSERT INTO emp(ename,epwd,did,salary) VALUES("yyy",1234,4,5000);
	INSERT INTO dept(dname ,salary )VALUE ("ttt",6000);

添加外键

ALTER TABLE emp ADD CONSTRAINT fk_emp FOREIGN KEY(did) REFERENCES dept(did);

删除部门信息

DELETE FROM dept WHERE did = 3;

层级操作
在删除父表的时候,相对于字表的数据也会删除

ALTER TABLE emp ADD CONSTRAINT fk_emp1 FOREIGN KEY(did) REFERENCES dept(did) ON DELETE CASCADresultE

在删除父表的时候,相对于字表的数据 置为NULL

ALTER TABLE emp ADD CONSTRAINT fk_emp2 FOREIGN KEY(did) REFERENCES dept(did) ON DELETE SET NULL

删除外键

ALTER TABLE emp DROP FOREIGN  KEY fk_emp

导入一个学生表,练习对学生表的操作
可以直接下载导入
链接:https://pan.baidu.com/s/1-eEggNfHPdSEHLMcoyMYXA
提取码:t9lm

从学生表里查询出学号、学生姓名

SELECT s.studentNO,s.studentName FROM student s;

从分数表里查询科目编号、分数

SELECT r.subjectNO,r.studentResult FROM result r;

查询《数据库结构-1》的所有考试结果,并按成绩由高到低排列

SELECT sub.subjectName,r.StudentResult FROM `subject` sub 
NNER JOIN result r ON sub.SubjectNo = r.SubjectNo 
WHERE sub.SubjectName = "数据库结构-1" ORDER BY r.StudentResult DESC;

查询所有课程《数据库结构-2》的考试成绩,并按照由高到低的显示,同时把该成绩对应的学生的学号、姓名打印出来

SELECT s.studentNo,s.studentName,sub.subjectName,r.StudentResult
FROM `subject` sub INNER JOIN result r ON sub.SubjectNo = r.SubjectNo 
INNER JOIN student s ON r.StudentNo = s.StudentNo
WHERE sub.SubjectName = "数据库结构-2" ORDER BY r.StudentResult DESC;

查询《C语言1》的前5名学生成绩信息

SELECT sub.SubjectName,r.StudentResult
FROM `subject` sub INNER JOIN result r ON sub.SubjectNo = r.SubjectNo WHERE sub.SubjectName = "C语言-1"  LIMIT 0,5; 

按照不同的课程,分别算出其平均分、最高分和最低分,对于低于60分平均分的不予显示

SELECT sub.SubjectName, AVG(r.StudentResult),MAX(r.StudentResult),MIN(r.StudentResult)
FROM `subject` sub LEFT JOIN result r ON r.SubjectNo = sub.SubjectNo GROUP BY sub.SubjectNo HAVING AVG(r.StudentResult)>=60;

查询密码长度不足6位的学员信息(学员编号、姓名、密码、年级名称)

SELECT s.StudentNo,s.StudentName,s.LoginPwd,g.GradeName
FROM student s LEFT JOIN grade g ON g.GradeID = s.GradeId WHERE LENGTH(s.LoginPwd)<6

查找李东方所有考试的成绩(科目名称、考试成绩)

SELECT s.StudentName,r.studentResult, sub.subjectName
FROM student s INNER JOIN result r ON r.studentNo = s.StudentNo INNER JOIN `subject` sub ON sub.subjectNo = r.subjectNo
WHERE s.StudentName = "李东方";

使用表连接方式查询所有U1年级学员学号、姓名及年级名称

SELECT s.StudentNo,s.StudentName,g.GradeName
FROM student s INNER JOIN grade g ON s.GradeId = g.GradeID WHERE g.GradeName = "大一";

使用子查询方式查询所有U1年级学员学号、姓名、年级ID

SELECT s.StudentName,s.StudentNo,s.GradeId FROM student s 
WHERE s.GradeId IN(SELECT g.GradeID FROM grade g WHERE g.GradeName="大一")

使用表连接方式查询“Java”课程至少一次考试刚好等于60分的学生姓名

SELECT s.StudentName,r.studentResult,sub.subjectName
FROM student s INNER JOIN result r ON s.StudentNo = r.StudentNo INNER JOIN `subject` sub ON r.subjectNo = sub.subjectNo 
WHERE r.studentResult = 60 AND sub.subjectName LIKE "java%"

使用子查询方式查询“Java”课程至少一次考试刚好等于60分的学生

SELECT s.StudentName FROM student s WHERE s.StudentNo IN
(SELECT r.StudentNo FROM result r WHERE r.subjectNo IN
( SELECT sub.subjectNo FROM `subject` sub WHERE sub.subjectName LIKE "java%") AND r.studentResult = 60 )

子查询方式+表连接方式混合查询“Java”课程至少一次考试刚好等于60分的学生

SELECT s.studentName FROM student s INNER JOIN result r ON s.StudentNo = r.studentNo 
WHERE r.subjectNo IN(SELECT sub.subjectNo FROM `subject` sub WHERE sub.subjectName LIKE "java%" AND r.studentResult = 60)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值