Student: Course: SC: 1.資料庫的定義、刪除 1.1資料庫的定義(創建) 1 CREATE DATABASE student; 1.2資料庫的刪除 1 DROP DATABASE student; 2.表的定義、修改與刪除 2.1表的定義 建表語句: 1 CREATE TABLE ...
Student:
Course:
SC:
1.資料庫的定義、刪除
1.1資料庫的定義(創建)
1 CREATE DATABASE student;
1.2資料庫的刪除
1 DROP DATABASE student;
2.表的定義、修改與刪除
2.1表的定義
建表語句:

1 CREATE TABLE student( 2 Sno VARCHAR(255) PRIMARY KEY, 3 Sname VARCHAR(255), 4 Ssex CHAR(4), 5 Sage SMALLINT, 6 Sdept CHAR(4) 7 );create table
添加數據:

1 INSERT INTO student(Sno,Sname,Ssex,Sage,Sdept) VALUES ("20170707001","張一","男",20,"CS"); 2 INSERT INTO student VALUES ("20170707002","張二","男",21,"CS"); 3 INSERT INTO student(Sno,Sname,Ssex,Sage,Sdept) VALUES ("20170707003","張三","女",22,"MA"); 4 INSERT INTO student(Sno,Sname,Ssex,Sage,Sdept) VALUES ("20170707004","張四","女",18,"IS");insert
2.2表的修改
2.2.1向student表中添加“入學時間”列,數據類型為日期型
SQL語句:
1 ALTER TABLE student ADD s_entrance DATE;
結果:
2.2.2將年齡的數據類型由字元型改為整型
mysql>>
ALTER TABLE student MODIFY COLUMN Sage INT;
2.2.3修改表名
ALTER TABLE studentt RENAME TO course;
2.3表的刪除
DROP TABLE course;
3.數據查詢
3.1單表查詢
3.1.1查所有
1 -- 方式一 2 SELECT * from student; 3 -- 方式二 4 SELECT Sno,Sname,Ssex,Sage,Sdept,S_entrance from student;
3.1.2選擇查詢表中某些列
SELECT Sno,Sname,Sdept FROM student;
3.1.3查詢經過計算的值並起個別名birthday
SELECT Sname,2014-Sage as birthday FROM student;
3.1.4 查詢所在系(用小寫字母表示系名)
1 SELECT Sname,LOWER(Sdept) FROM student;
3.1.5去除結果中重覆的行
SELECT DISTINCT s_entrance FROM student;
3.1.6查詢滿足條件的元組
1)年齡小於25歲的
SELECT * FROM student WHERE Sage<25;
2)Sno等於20170707001的
-- Sno值可以加"",也可以不加"" SELECT * FROM student WHERE Sno="20170707001";
3)年齡在20到30之間的
SELECT * FROM student WHERE Sage BETWEEN 20 AND 30; -- 等價於 SELECT * FROM student WHERE Sage >= 20 AND Sage <=30;
4)名字中含有“一”的
SELECT * FROM student WHERE Sname LIKE "_一";
5)名字中不含“一”的
SELECT * FROM student WHERE Sname NOT LIKE "_一";
6)按學號降序排列
-- 預設升序(ASC) SELECT * FROM student ORDER BY Sno DESC;
7)聚集函數

1 -- 統計元組個數 2 SELECT COUNT(*) FROM student; 3 -- 統計一列中的個數(空值不算) 4 SELECT COUNT(DISTINCT s_entrance) FROM student; 5 -- 計算一列值的總合(必須為int) 6 SELECT SUM(Sage) FROM student; 7 -- 計算一列值的平均值 8 SELECT AVG(DISTINCT Sage) FROM student; 9 -- 找一個值的最大值 10 SELECT MAX(Sage) FROM student; 11 -- 找一列值的最小值 12 SELECT MIN(Sage) FROM student;View Code
8)GROUP BY:分組語句
SELECT Sname,SUM(Sage) FROM student GROUP BY Sname; -- GROUP BY 與WHERE語句不能共用 SELECT Sname,SUM(Sage) FROM student GROUP BY Sname HAVING SUM(Sage)>=50;
3.2連接查詢
3.2.1等值與非等值連接查詢
等值連接與非等值連接:當連接運算符為“=”時,稱為等值連接。使用其它運算符稱為非等值連接。
例:查詢每個學生及其選修課程的情況
SELECT Student.*,SC.* FROM Student,SC WHERE Student.Sno=SC.Sno;
把目標列中重覆的屬性列去掉則為自然連接。
3.2.2自身連接
例:查詢每一門課的間接先修課
SELECT f.Cno,s.Cpno FROM Course f,Course s WHERE f.Cpno=s.Cno;
3.2.3外連接
分為:左外連接,右外連接,內連接
left join,right join,inner join
如:
SELECT * FROM Course f LEFT JOIN Course s ON f.Cpno=s.Cno; SELECT * FROM Course f RIGHT JOIN Course s ON f.Cpno=s.Cno; SELECT * FROM Course f INNER JOIN Course s ON f.Cpno=s.Cno;
3.2.4多表連接
兩個表以上的操作稱為多表連接
例:查詢每個學生的學號,姓名,選修的課程名及成績
SELECT Student.Sno,Sname,Cname,Grade FROM Student,SC,Course WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno;
3.3嵌套查詢
3.4集合查詢