一、SQL定義語句
1.用SQL定義語句創建符合如下條件的數據庫:
數據庫名爲:學生數據庫,模式:默認模式
數據文件的物理文件名爲:主數據文件Students_data.mdf(邏輯文件同名),日誌文件:Students_log.ldf(邏輯文件同名),存放在D:\Data文件夾下(若D:盤中無此文件夾,請先建立此文件夾,然後再創建數據庫。)
2.選用已建立的“學生數據庫”,用SQL定義語句創建符合如下條件的表C-1到C-4(注意各種完整性約束)
上述兩題,界面方式或命令方式均需要熟練掌握
表C-1 Student表結構
列名 |
說明 |
數據類型 |
約束 |
Sno |
學號 |
普通編碼定長字符串,長度爲7 |
主鍵 |
Sname |
姓名 |
普通編碼定長字符串,長度爲10 |
|
Ssex |
性別 |
普通編碼定長字符串,長度爲2 |
|
Sage |
年齡 |
微整型(tinyint) |
|
Sdept |
所在系 |
普通編碼不定長字符串,長度爲20 |
|
Sid |
身份證號 |
普通編碼定長字符串,長度爲10 |
|
Sdate |
入學日期 |
日期 |
|
表C-2 Course表結構
列名 |
說明 |
數據類型 |
約束 |
Cno |
課程號 |
普通編碼定長字符串,長度爲10 |
主鍵 |
Cname |
課程名 |
普通編碼不定長字符串,長度爲20 |
|
Credit |
學時數 |
整型 |
|
Semester |
學分 |
小整型 |
|
表C-3 SC表結構
列名 |
說明 |
數據類型 |
約束 |
Sno |
學號 |
普通編碼定長字符串,長度爲7 |
主鍵,引用Student的外鍵 |
Cno |
課程號 |
普通編碼定長字符串,長度爲10 |
主鍵,引用Course的外鍵 |
Grade |
成績 |
小整型 |
|
表C-4 Teacher表結構
列名 |
說明 |
數據類型 |
約束 |
Tno |
教師號 |
普通編碼定長字符串,長度爲8 |
|
Tname |
教師名 |
普通編碼定長字符串,長度爲10 |
|
Salary |
工資 |
定點小數,小數點前4位,小數點後2位 |
|
3. 寫出實現如下功能的SQL語句,並執行所寫代碼,查看執行結果。
(1) 在Teacher表中添加一個職稱列,列名爲:Title,類型爲nchar(4)。
(2) 將Course表中Credit列的類型改爲:tinyint。
(3) 刪除Student表中的Sid和Sdate列。
(4) 爲Teacher表添加主鍵約束,其主鍵爲:Tno。
表C-1 Student表中的記錄,本次上機使用窗口方式錄入數據
錄入數據時請務必保證數據格式與定義的數據類型一致,否則會報錯。
學號 |
姓名 |
性別 |
年齡 |
系別 |
身份證號 |
入學日期 |
0811101 |
李勇 |
男 |
21 |
計算機系 |
|
|
0811102 |
劉晨 |
男 |
20 |
計算機系 |
|
|
0811103 |
王敏 |
女 |
20 |
計算機系 |
|
|
0811104 |
張小紅 |
女 |
19 |
計算機系 |
|
|
0821101 |
張立 |
男 |
20 |
信息管理系 |
|
|
0821102 |
吳賓 |
女 |
19 |
信息管理系 |
|
|
0821103 |
張海 |
男 |
20 |
信息管理系 |
|
|
0831101 |
錢小平 |
女 |
21 |
通信工程系 |
|
|
0831102 |
王大力 |
男 |
20 |
通信工程系 |
|
|
0831103 |
張姍姍 |
女 |
19 |
通信工程系 |
|
|
表C-2 Course表中的記錄
Cno |
Cname |
Credit |
Semester |
C001 |
高等數學 |
4 |
1 |
C002 |
大學英語 |
3 |
1 |
C003 |
大學英語 |
3 |
2 |
C004 |
計算機文化學 |
2 |
2 |
C005 |
VB |
2 |
3 |
C006 |
數據庫基礎 |
4 |
5 |
C007 |
數據結構 |
4 |
4 |
C008 |
計算機網絡 |
4 |
4 |
表C-3 SC表中的記錄
Sno |
Cno |
Grade |
0811101 |
C001 |
96 |
0811101 |
C002 |
80 |
0811101 |
C003 |
84 |
0811101 |
C005 |
62 |
0811102 |
C001 |
92 |
0811102 |
C002 |
90 |
0811102 |
C004 |
84 |
0821102 |
C001 |
76 |
0821102 |
C004 |
86 |
0821102 |
C005 |
73 |
0821102 |
C007 |
NULL |
0821103 |
C001 |
50 |
0821103 |
C004 |
80 |
0831101 |
C001 |
50 |
0831101 |
C004 |
80 |
0831102 |
C007 |
NULL |
0831103 |
C004 |
78 |
0831103 |
C005 |
65 |
0831103 |
C007 |
NULL |
表C-4 Teacher表中的記錄
Tno |
Tname |
Salary |
T001 |
張美霞 |
5000 |
T002 |
王洪林 |
5500 |
T003 |
李麗芬 |
4800 |
T004 |
周良水 |
6000 |
T005 |
吳翔 |
7000 |
三.實驗結果
Student表
sql語句:
create table Student(
Sno char(7) primary key,
Sname char(10),
Sex char(2),
Sage tinyint,
Sdept varchar(20),
Sid char(10),
Sdate date
);
Course表
sql語句:
create table Course(
Cno char(10) primary key,
Cname varchar(20),
Credit int,
Semester smallint
);
Sc表
Sql語句:
create table SC(
Sno char(7),
Cno char(10),
Grade smallint,
foreign key(Sno) references Student(Sno),
foreign key(Cno) references Course(Cno),
primary key(Sno,Cno)
);
Teacher表
Sql語句:
create table Teacher(
Tno char(8) primary key,
Tname char(10),
Salary numeric(6,2)
);
寫出實現如下功能的SQL語句,並執行所寫代碼,查看執行結果。
- 在Teacher表中添加一個職稱列,列名爲:Title,類型爲nchar(4)。
ALTER table Teacher add Title nchar(4);
- 將Course表中Credit列的類型改爲:tinyint。
ALTER table Course alter column Credit tinyint;
- 刪除Student表中的Sid和Sdate列。
ALTER table Student drop column Sid,Sdate;
- 爲Teacher表添加主鍵約束,其主鍵爲:Tno。
ALTER table Teacher add unique(Tno);
Student表插入數據
INSERT INTO Student(Sno,Sname,Sex,Sage,Sdept) VALUES
('0811101','李勇','男',21,'計算機系'),
('0811102','劉晨','男',20,'計算機系'),
('0811103','王敏','女',20,'計算機系'),
('0811104','張小紅','女',19,'計算機系'),
('0821101','張立','男',20,'信息管理系'),
('0821102','吳賓','女',19,'信息管理系'),
('0821103','張海','男',20,'信息管理系'),
('0831101','錢小平','男',21,'信息管理系'),
('0831102','王大力','女',20,'計算機系'),
('0831103','張姍姍','男',19,'計算機系');
Course表插入數據
INSERT INTO Course(Cno,Cname,Credit,Semester) VALUES
('C001','高等數學',4,1),
('C002','大學英語',3,1),
('C003','大學英語',3,2),
('C004','計算機文化學',2,2),
('C005','VB',2,3),
('C006','數據庫基礎',4,5),
('C007','數據結構',4,4),
('C008','計算機網絡',4,4);
SC表插入數據
INSERT INTO SC(Sno,Cno,Grade) VALUES
('0811101','C001',96),
('0811101','C002',80),
('0811101','C003',84),
('0811101','C005',62),
('0811102','C001',92),
('0811102','C002',90),
('0811102','C004',84),
('0821102','C001',76),
('0821102','C004',86),
('0821102','C005',73),
('0821102','C007',NULL),
('0821103','C001',50),
('0821103','C004',80),
('0831101','C001',50),
('0831101','C004',80),
('0831102','C007',NULL),
('0831103','C004',78),
('0831103','C005',65),
('0831103','C007',NULL);
Teacher表插入數據
INSERT INTO Teacher(Tno,Tname,Salary) VALUES
('T001','張美霞',5000),
('T002','王洪林',5500),
('T003','李麗芬',4800),
('T004','周良水',6000),
('T005','吳翔',7000);