1. 程式人生 > >mysql 常用命令實例

mysql 常用命令實例

練習 語文 inner 成績 desc ins 喬布斯 李磊 innodb

-- 完成項目素材中的sql練習,並將編寫的sql文件和運行截圖保存,打包後作為作業提交。

-- 設計一個學生成績數據庫,該庫包含學生,老師,課程和成績等信息並完成後面的練習(註意主外鍵關系)。
-- 學生:學號(SNO)、姓名(SNAME)、性別(SSEX)、生日(SBIRTHDAY )、所屬班級(CLASS )
CREATE DATABASE IF NOT EXISTS sss;
USE sss;
CREATE TABLE IF NOT EXISTS student(
id TINYINT UNSIGNED AUTO_INCREMENT KEY ,
sno INT UNSIGNED NOT NULL ,
sname VARCHAR(20) NOT NULL ,
ssex ENUM(‘男‘,‘女‘,‘保密‘),
sbirthday DATE ,
class INT UNSIGNED NOT NULL
)ENGINE = INNODB;
-- 課程:課程編號(CNO)、課程名(CNAME)、授課老師(TNO)
CREATE TABLE IF NOT EXISTS course(
id TINYINT UNSIGNED AUTO_INCREMENT KEY ,
cno INT UNSIGNED UNIQUE NOT NULL ,
cname VARCHAR(50) UNIQUE NOT NULL ,
tno VARCHAR(20) NOT NULL
)ENGINE = INNODB;
-- 成績:學號(SNO)、課程編號(CNO)、得分(DEGREE)
CREATE TABLE IF NOT EXISTS score(
id TINYINT UNSIGNED AUTO_INCREMENT KEY ,
sno INT UNSIGNED UNIQUE NOT NULL ,
cno INT UNSIGNED NOT NULL ,
degree INT UNSIGNED
);
-- 老師:教師編號(TNO)、教師姓名(TNAME)、性別(TSSEX)、生日(TBIRTHDAY)、職稱(TITLE)、單位科室(DEPART)
CREATE TABLE IF NOT EXISTS teacher(
id TINYINT UNSIGNED AUTO_INCREMENT KEY ,
tno INT UNSIGNED UNIQUE ,
tname VARCHAR(20) NOT NULL,
tssex ENUM(‘男‘,‘女‘,‘保密‘),
tbirthday DATE,
title VARCHAR(20),
depart VARCHAR(40)
);
-- 要求:

-- 一、每張表使用sql語句插入至少10條數據
INSERT student(id,sno,sname,ssex,sbirthday,class) VALUES (1,1011,‘張三‘,‘男‘,‘1991-10-10‘,95301);
INSERT student(id,sno,sname,ssex,sbirthday,class) VALUES (2,1031,‘李四‘,‘男‘,‘1992-11-11‘,95303);
INSERT student(id,sno,sname,ssex,sbirthday,class) VALUES (3,1021,‘王二‘,‘女‘,‘1991-10-10‘,95302);
INSERT student(id,sno,sname,ssex,sbirthday,class) VALUES (4,1012,‘李磊‘,‘男‘,‘1991-10-10‘,95301);
INSERT student(id,sno,sname,ssex,sbirthday,class) VALUES (5,1032,‘韓梅梅‘,‘女‘,‘1991-10-10‘,95303);
INSERT student(id,sno,sname,ssex,sbirthday,class) VALUES (6,1022,‘王明‘,‘女‘,‘1991-10-10‘,95302);
INSERT student(id,sno,sname,ssex,sbirthday,class) VALUES (7,1013,‘白楊‘,‘男‘,‘1991-10-10‘,95301);
INSERT student(id,sno,sname,ssex,sbirthday,class) VALUES (8,1033,‘熊八‘,‘男‘,‘1991-10-10‘,95303);
INSERT student(id,sno,sname,ssex,sbirthday,class) VALUES (9,1023,‘楊一‘,‘女‘,‘1991-10-10‘,95302);
INSERT student(id,sno,sname,ssex,sbirthday,class) VALUES (10,1014,‘胡五‘,‘女‘,‘1991-10-10‘,95301);

INSERT course(cno,cname,tno) VALUES (3105,‘計算機導論‘,‘張旭‘);
INSERT course(cno,cname,tno) VALUES (3106,‘語文‘,‘熊濤‘);
INSERT course(cno,cname,tno) VALUES (3107,‘數學‘,‘廖凡‘);
INSERT course(cno,cname,tno) VALUES (3108,‘英語‘,‘王勃‘);
INSERT course(cno,cname,tno) VALUES (1101,‘高等數學‘,‘李晨‘);
INSERT course(cno,cname,tno) VALUES (1102,‘通信原理‘,‘霍思燕‘);
INSERT course(cno,cname,tno) VALUES(1103,‘大學物理‘,‘阿凡達‘);
INSERT course(cno,cname,tno) VALUES (2101,‘微積分‘,‘愛因斯坦‘);
INSERT course(cno,cname,tno) VALUES (2102,‘數據結構‘,‘喬布斯‘);
INSERT course(cno,cname,tno) VALUES (2103,‘電路理論‘,‘愛迪生‘);
INSERT course(cno,cname,tno) VALUES (2104,‘電磁感應‘,‘愛迪生‘);


INSERT score(sno,cno,degree) VALUES (1011,3105,85);
INSERT score(sno,cno,degree) VALUES (1031,3105,86);
INSERT score(sno,cno,degree) VALUES (1021,3105,88);
INSERT score(sno,cno,degree) VALUES (1012,2102,65);
INSERT score(sno,cno,degree) VALUES (1032,2102,70);
INSERT score(sno,cno,degree) VALUES (1022,2102,75);
INSERT score(sno,cno,degree) VALUES (1013,3105,90);
INSERT score(sno,cno,degree) VALUES (1033,3105,55);
INSERT score(sno,cno,degree) VALUES (1023,2104,45);
INSERT score(sno,cno,degree) VALUES (1014,2104,45);

INSERT teacher(tno,tname,tssex,tbirthday,title,depart) VALUES (01,‘張旭‘,‘男‘,‘1991-10-09‘,‘教授‘,‘110‘);
INSERT teacher(tno,tname,tssex,tbirthday,title,depart) VALUES (02,‘熊濤‘,‘女‘,‘1991-10-09‘,‘教授‘,‘110‘);
INSERT teacher(tno,tname,tssex,tbirthday,title,depart) VALUES (03,‘廖凡‘,‘男‘,‘1991-10-09‘,‘教授‘,‘110‘);
INSERT teacher(tno,tname,tssex,tbirthday,title,depart) VALUES (04,‘王勃‘,‘女‘,‘1991-10-09‘,‘學士‘,‘111‘);
INSERT teacher(tno,tname,tssex,tbirthday,title,depart) VALUES (05,‘李晨‘,‘男‘,‘1991-10-09‘,‘學士‘,‘111‘);
INSERT teacher(tno,tname,tssex,tbirthday,title,depart) VALUES (06,‘霍思燕‘,‘女‘,‘1991-10-09‘,‘學士‘,‘111‘);
INSERT teacher(tno,tname,tssex,tbirthday,title,depart) VALUES (07,‘阿凡達‘,‘男‘,‘1991-10-09‘,‘學士‘,‘111‘);
INSERT teacher(tno,tname,tssex,tbirthday,title,depart) VALUES (08,‘愛因斯坦‘,‘女‘,‘1991-10-09‘,‘科學家‘,‘112‘);
INSERT teacher(tno,tname,tssex,tbirthday,title,depart) VALUES (09,‘喬布斯‘,‘男‘,‘1991-10-09‘,‘科學家‘,‘112‘);
INSERT teacher(tno,tname,tssex,tbirthday,title,depart) VALUES (010,‘愛迪生‘,‘男‘,‘1991-10-09‘,‘科學家‘,‘112‘);

-- 二、完成以下查詢題目:
-- 1、 查詢Student表中的所有記錄的Sname、Ssex和Class列。
SELECT sname,ssex,class FROM student;
-- 2、 查詢教師所有的單位即不重復的Depart列。
SELECT DISTINCT depart FROM teacher;
-- 3、 查詢Student表的所有記錄。
SELECT * FROM student;
-- 4、 查詢Score表中成績在60到80之間的所有記錄。
SELECT degree FROM score WHERE degree BETWEEN 60 AND 80;
-- 5、 查詢Score表中成績為85,86或88的記錄。
SELECT * FROM score WHERE degree IN (85,86,88);
-- 6、 查詢Student表中“95301”班或性別為“女”的同學記錄。
SELECT * FROM student WHERE ssex=‘女‘ OR class="95301";
-- 7、 以Class降序查詢Student表的所有記錄。
SELECT * FROM student ORDER BY class desc;
-- 8、 以Cno升序、Degree降序查詢Score表的所有記錄。
SELECT * from score ORDER BY cno asc,degree desc;
-- 9、 查詢“95031”班的學生人數。
SELECT COUNT(*) FROM student WHERE class="95301";
-- 10、查詢Score表中的最高分的學生學號和課程號。
SELECT * FROM score WHERE degree=(SELECT MAX(degree) FROM score);
-- 11、查詢‘3-105’號課程的平均分。
SELECT AVG(degree) FROM score WHERE cno=3105;
-- 12、查詢Score表中至少有5名學生選修的並以3開頭的課程的平均分數。

SELECT AVG(degree) from score WHERE cno LIKE ‘3%‘
HAVING COUNT(*) >=5;
-- 13、查詢所有學生的Sname、Cno和Degree列。
SELECT s.sname,sc.cno,sc.degree
FROM student AS s
INNER JOIN score AS sc
ON s.sno=sc.sno;

-- 14、查詢“95303”班所選課程的平均分。
SELECT AVG(sc.degree) FROM score AS sc
INNER JOIN student AS s
ON s.sno=sc.sno
WHERE s.class=95303;
-- 15、假設使用如下命令建立了一個grade表:
create table grade(low int,upp int,rank char(1));
insert into grade values(90,100,‘A‘);
insert into grade values(80,89,‘B‘);
insert into grade values(70,79,‘C‘);
insert into grade values(60,69,‘D‘);
insert into grade values(0,59,‘E‘);
commit;
-- 現查詢所有同學的Sno、Cno和rank列。
select sno,cno,rank from Score,grade where Degree between low and upp;
-- 16、查詢"張旭"教師任課的學生成績。
SELECT s.sname ,sc.degree
FROM student AS s
INNER JOIN score AS sc
ON s.sno=sc.sno
INNER JOIN course AS c
ON sc.cno=c.cno
WHERE c.tno=‘張旭‘;

-- 17、查詢選修某課程的同學人數多於5人的教師姓名。
SELECT c.tno FROM course AS c
INNER JOIN score AS sc
ON c.cno=sc.cno
HAVING COUNT(*)>=5;

-- 18、查詢所有教師和同學的name、sex和birthday.
SELECT tname,tssex,tbirthday FROM teacher UNION SELECT sname,ssex,sbirthday FROM student;
-- 20、查詢至少有2名男生的班號。
SELECT class FROM student WHERE ssex=‘男‘
HAVING COUNT(*)>=2;
-- 21、查詢Student表中不姓“王”的同學記錄。
SELECT * FROM student WHERE sname NOT LIKE ‘王%‘;
-- 22、查詢所有選修“計算機導論”課程的“男”同學的成績表。
SELECT s.sname,sc.degree,c.cname FROM score AS sc
INNER JOIN course AS c
ON sc.cno=c.cno
INNER JOIN student AS s
ON sc.sno=s.sno
WHERE c.cname=‘計算機導論‘AND s.ssex=‘男‘;

mysql 常用命令實例