数据库的SQL 查的子查询 和外连接查询 .... 希望对大家有帮助! 有什么疑问可以在下面评论在线解答!

– 多表查询
/*
歌手表
歌手编号 歌手姓名 歌手生日 歌手地区
1001 黄家驹 1962/6/10 香港
1002 罗大佑 1954/7/20 台湾
1003 刘德华 1961/9/27 中国内地
*/
– 创建表格一
CREATE TABLE singer(
ID INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
birthday DATE,
region VARCHAR(20)
);
– 删除表格
DROP TABLE singer;
– 加入数据
INSERT INTO singer VALUES(1001,‘黄家驹’,‘1962-6-10’,‘香港’),
(1002,‘罗大佑’,‘1954-7-20’,‘台湾’),
(1003,‘刘德华’,‘1961-9-27’,‘台湾内地’);
– 删除这一行
DELETE FROM singer WHERE id =1000;
– 删除全部
DELETE FROM singer;
– 查询
SELECT * FROM singer;
– 查询二
SELECT * FROM singer;
– 修改
UPDATE singer SET region=‘中国’ WHERE NAME =‘黄家驹’;
– 查询
SELECT * FROM singer;

– ===========================================================================================================================================

/*
1003 90 2016 sony 4
专辑表
专辑编号 专辑标题 歌手编号(外键关联) 专辑售价 发行日期 唱片公司 专辑排名
1 光辉岁月 1001 100 1993 百纳 1
2 老王的故事 1002 90 1990 华纳 2
3 老罗哭吧哭吧不是醉 1003 80 1999 百纳 3
4 咱屯里的人
*/
– 创建表二
CREATE TABLE album(
a_ID INT PRIMARY KEY AUTO_INCREMENT, – 专辑编号
a_name VARCHAR(30), – 专辑标题
a_singer_ID INT, – 歌手编号
a_price NUMERIC(4), – 专辑售价
a_date DATE, – 发行日期
a_company VARCHAR(10), – 唱片公司
a_ranking INT – 专辑排名
);
– 加入外键
ALTER TABLE album ADD CONSTRAINT fk_one FOREIGN KEY (a_singer_ID) REFERENCES singer(ID);
– 加入数据
INSERT INTO album VALUES(NULL,‘光辉岁月’,‘1001’,100,‘1993-10-23’,‘百纳’,1),
(NULL,‘老王的故事’,‘1002’,90,‘1990-10-23’,‘华纳’,2),
(NULL,‘老罗哭吧哭吧不是醉’,‘1003’,80,‘1999-10-23’,‘百纳’,3);
– 删除表
DELETE FROM album;
– 查看表
SELECT * FROM album;
– 销毁销毁表格
DROP TABLE album;

– ==============================================================================================================================================

/*
曲目表 将碟片编号直接作为唯一主键
曲目编号 专辑编号(外键关联) 歌名排序号 歌曲名
10001 1 1 光辉岁月
10002 1 2 真的爱你
10003 1 3 岁月无声
10004 2 1 老王的故事
10005 2 2 恋曲1990
10006 2 3 皇后大道东
10007 3 1 老罗哭吧哭吧不是醉
10008 3 2 冰雨
10009 3 3 笨小孩
*/
– 创建表格三
CREATE TABLE song(
s_ID INT PRIMARY KEY AUTO_INCREMENT,
s_album_id INT,
s_ranking INT,
s_songName VARCHAR(20)
);
– 外键加入
ALTER TABLE song ADD CONSTRAINT so_one FOREIGN KEY (s_album_id) REFERENCES album(a_ID);

– 加入数据insert into song values(10001,1,1,‘光辉岁月’),
(10002,1,2,‘真的爱你’),
(10003,1,3,‘岁月无声’),
(10004,2,1,‘老王的故事’),
(10005,2,2,‘恋曲1990’),
(10006,2,3,‘皇后大道东’),
(10007,3,1,‘老罗哭吧哭吧不是醉’),
(10008,3,2,‘冰雨’),
(10009,3,3,‘笨小孩’);
– 查看表格
SELECT * FROM song;

– ===============================================================================================================================================

/*
除了以上歌手,请再插入不少于两个歌手和专辑以及歌曲.
使用子查询
1 查询除了年龄最大的歌手信息
2 查询专辑售价高于平均价格的专辑
3 如果有歌曲<真的爱你>,则显示所有的歌曲信息,没有则不显示歌曲信息
*/
– 子查询
SELECT * FROM singer WHERE birthday>(SELECT MIN(birthday) FROM singer);
SELECT MIN(birthday) FROM singer ;
– 子查询
SELECT * FROM album WHERE a_price>(SELECT AVG(a_price) FROM album);
SELECT AVG(a_price) FROM album;
– 子查询
SELECT * FROM song WHERE EXISTS(SELECT * FROM song WHERE s_songName = ‘真的爱你’);
SELECT * FROM song WHERE s_songName = ‘真的爱你’;

– =======================================================================================================================================================

/*
1,列出包含含有“哭”字的歌曲信息和专辑名以及作者。
2,列出谁具有作品《恋曲1990》。
3,列出光辉岁月专辑里面所有的歌曲。
4,列出1961年的歌手的 专辑名称 和 全部 歌曲信息
5,列出所有歌手的歌曲数量。
6,列出所有歌手的歌曲数量大于1的歌手信息。
7,列出低于100元的专辑。
8,列出不包括黄家驹的所有歌曲列表。
9,列出香港地区歌手和歌曲。
10,列出所有的歌手最受欢迎的歌曲。(歌曲排在第一的表示最受欢迎歌曲)
11,列出所有的唱片公司发行的专辑。
*/
– 题目一
SELECT * FROM song s, album a , singer si
WHERE si.ID = a.a_singer_ID
AND a.a_ID=s.s_album_id
AND s.s_songName LIKE ‘%哭%’;

– 题目二
SELECT m.name FROM song s,album a , singer m
WHERE m.ID = a.a_singer_ID
AND a.a_ID = s.s_album_id
AND s.s_songName = ‘恋曲1990’;

– 题目三
SELECT s.s_songName FROM album a ,song s
WHERE s.s_album_id = a.a_ID
AND s.s_album_id=(SELECT a.a_ID FROM album a WHERE a.a_name= ‘光辉岁月’);
– 子查询
SELECT a.a_ID FROM album a WHERE a.a_name= ‘光辉岁月’;

– 题目四
SELECT * FROM song s, album a , singer si
WHERE si.ID = a.a_singer_ID
AND a.a_ID=s.s_album_id
AND si.birthday=‘1962-6-10’;

– 题目五
SELECT si.name AS 歌手名字,COUNT(s.s_album_id)AS 歌曲数 FROM singer si ,song s, album a
WHERE si.ID = a.a_singer_ID
AND s.s_album_id= a.a_ID
GROUP BY si.name
HAVING COUNT(s.s_album_id);

– 题目六
SELECT si.name AS 歌手名字 FROM singer si ,song s, album a
WHERE si.ID = a.a_singer_ID
AND s.s_album_id= a.a_ID
GROUP BY si.name
HAVING COUNT(s.s_album_id)
AND COUNT(s.s_album_id)>1 ;

– 题目七
SELECT * FROM album a WHERE a.a_price<100;

– 题目八 有问题
SELECT * FROM singer si ,song s , album a
WHERE si.ID = a.a_singer_ID
AND a.a_ID=s.s_album_id
AND si.ID!=(SELECT si.ID FROM singer si WHERE si.name=‘黄家驹’);
SELECT si.ID FROM singer si WHERE si.name=‘黄家驹’;

– 题目九
SELECT si.name,s.s_songName FROM singer si ,song s , album a
WHERE si.ID = a.a_singer_ID
AND s.s_album_id= a.a_ID
AND si.region != ‘香港’;

– 题目十
SELECT si.name,s.s_songNameFROM singer si ,song s , album a
WHERE si.ID = a.a_singer_ID
AND s.s_album_id= a.a_ID
AND s_ranking=1
GROUP BY si.name ;

– 题目十一
SELECT a.a_company , s.s_songName FROM song s , album a
WHERE s.s_album_id = a.a_ID;

猜你喜欢

转载自blog.csdn.net/c_v_sCtrl/article/details/99857816