實驗一:建立數據庫及DDL語言實踐

實驗內容與完成情況(記錄所有的實驗過程):

1.創建(用腳本)、分離和附加數據庫:

1)在SQL Server2008中建立一個StuDB數據庫:

有一個數據文件:邏輯名爲StuData,文件名爲“d:\db\StuData.mdf”,文件初始大小爲3MB,文件的最大大小不受限制,文件的增長率爲2MB;

有一個日誌文件,邏輯名爲StuLog,文件名爲“d:\db\ StuLog.ldf”,文件初始大小爲1MB,文件的最大大小爲10MB,文件的增長率爲10%

  2)實驗課結束前,將數據文件(StuData.mdf)和日誌文件(StuLog.ldf)備份回去,並附加到自己電腦的數據庫服務器中。

  3)將自己電腦中的相應數據文件和日誌文件分離並附加到實驗室電腦中的數據庫服務器中。

2.分離和附加數據庫:

3.設置StuDB爲當前數據庫,在StuDB數據庫中作如下操作:

設有如下關係表S: S(CLASS, SNO, NAME, SEX, AGE)。

其中:CLASS爲班號,char(7) , SNO爲座號,char(2);NAME爲姓名,char(10),姓名不能爲空且取值要求唯一;SEX爲性別,char(2);AGE爲年齡,int;表中主碼爲班號+座號。寫出實現下列功能的SQL語句。

(1)創建表S;

CREATE TABLE S(

    CLASS char(7),

    SNO char(2),

    NAME char(10) CONSTRAINT UQ_NAME UNIQUE NOT NULL,

    SEX char(2),

    AGE int,

    CONSTRAINT PK_CLASS_SNO PRIMARY KEY(CLASS,SNO)

);

(2)插入一個記錄(“2017031”,25,“李明”,“男”,21);
再插入一個記錄(“2017032”,10,“王麗”,“女”,20);

INSERT INTO S

VALUES

('2017031','25','李明','男',21),

('2017032','10','王麗','女',20);

(3)插入“2017031”班座號爲30,姓名爲“鄭和”的學生記錄;

INSERT INTO S(CLASS,SNO,NAME)

VALUES('2017031','30','鄭和');

(4)對錶S,按姓名升序建唯一索引(索引名爲sname);
對錶S,按年齡降序建索引(索引名爲sage);

CREATE UNIQUE INDEX sname
ON S(NAME);

CREATE INDEX sage

ON S (AGE DESC);

(5)向S表添加“入學時間(comedate)”列,其數據類型爲日期型(date);

ALTER TABLE S ADD COMEDATE date;

(6)刪除S表的sage索引;

DROP INDEX sage ON S;

(7)將年齡的數據類型改爲smallint;

ALTER TABLE S ALTER COLUMN AGE smallint;

(8)刪除學生姓名必須取唯一值的約束;

ALTER TABLE S DROP CONSTRAINT UQ_NAME;

(9)刪除S表;

DROP TABLE S;

(10)按照《數據庫系統概論》(第五版)P79頁的學生-課程數據庫創建Student、Course和SC三張表,每一張表都必須有主鍵約束,合理使用列級完整性約束和表級完整性約束。並輸入相關數據。

CREATE TABLE Student(

    Sno char(12) CONSTRAINT PK_SNO PRIMARY KEY NOT NULL,

    Sname char(10),

    Ssex char(5),

    Sage smallint,

    Sdept char(10)

);

CREATE TABLE Course(

    Cno int CONSTRAINT PK_CNO PRIMARY KEY NOT NULL,

    Cname char(20),

    Cpno char(20),

    Ccredit smallint

);

CREATE TABLE SC(

    Sno char(12),

    Cno int,

    Grade smallint,

    CONSTRAINT PK_SNO_CNO PRIMARY KEY(Sno,Cno)

);

 

INSERT INTO Student

VALUES

('201215121','李勇','男',20,'CS'),

('201215122','劉晨','女',19,'CS'),

('201215123','王敏','女',18,'MA'),

('201215125','張立','男',19,'IS');

 

INSERT INTO Course

VALUES

(1,'數據庫',5,4),

(3,'信息系統',1,4),

(4,'操作系統',6,3),

(5,'數據結構',7,4),

(7,'PASCAL語言',6,4);

 

INSERT INTO Course(Cno,Cname,Ccredit)

VALUES

(2,'數學',2),

(6,'數據處理',2);

 

INSERT INTO SC

VALUES

('201215121',1,92),

('201215121',2,85),

('201215121',3,88),

('201215122',2,90),

('201215122',3,80);

3.按照《數據庫系統概論》(第五版)P70-71頁習題6的SPJ數據庫。創建SPJ數據庫,並在其中創建S、P、J和SPJ四張表。每一張表都必須有主鍵約束,合理使用列級完整性約束和表級完整性約束。

CREATE TABLE S(

    SNO char(10) CONSTRAINT PK_SNO PRIMARY KEY NOT NULL,

    SNAME char(20),

    STATUS int,

    CITY char(10)

);

CREATE TABLE P(

    PNO char(10) CONSTRAINT PK_PNO PRIMARY KEY NOT NULL,

    PNAME char(20),

    COLOR char(5),

    WEIGHT int

);

CREATE TABLE J(

    JNO char(10) CONSTRAINT PK_JNO PRIMARY KEY NOT NULL,

    JNAME char(20),

    CITY char(10)

);

CREATE TABLE SPJ(

    SNO char(10),

    PNO char(10),

    JNO char(10),

    QTY int,

    CONSTRAINT PK_SNO_PNO_JNO PRIMARY KEY(SNO,PNO,JNO) 

);

 

INSERT INTO S

VALUES

('S1','精益',20,'天津'),

('S2','盛錫',10,'北京'),

('S3','東方紅',30,'北京'),

('S4','豐泰盛',20,'天津'),

('S5','爲民',30,'上海');

 

INSERT INTO P

VALUES

('P1','螺母','紅',12),

('P2','螺栓','綠',17),

('P3','螺絲刀','藍',14),

('P4','螺絲刀','紅',14),

('P5','凸輪','藍',40),

('P6','齒輪','紅',30);

 

INSERT INTO J

VALUES

('J1','三建','北京'),

('J2','一汽','長春'),

('J3','彈簧廠','天津'),

('J4','造船廠','天津'),

('J5','機車廠','唐山'),

('J6','無線電廠','常州'),

('J7','半導體廠','南京');

 

INSERT INTO SPJ

VALUES

('S1','P1','J1',200),

('S1','P1','J3',100),

('S1','P1','J4',700),

('S1','P2','J2',100),

('S2','P3','J1',400),

('S2','P3','J2',200),

('S2','P3','J4',500),

('S2','P3','J5',400),

('S2','P5','J1',400),

('S2','P5','J2',100),

('S3','P1','J1',200),

('S3','P3','J1',200),

('S4','P5','J1',100),

('S4','P6','J3',300),

('S4','P6','J4',200),

('S5','P2','J4',100),

('S5','P3','J1',200),

('S5','P6','J2',200),

('S5','P6','J4',500);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章