【数据库】作业4——SQL练习1 - CREATE / DROP / ALTER

Rohana ·
更新时间:2024-11-13
· 590 次阅读

课本的【例3.1】~【例3.12】,在SQLserver上运行一遍。 注意比较标准SQL与T-SQL之间的不同。 做完实验后,写一下心得体会。

作业原地址:作业

需要使用:新建查询,输入语句,执行。

注:“√”(分析,快捷键ctrl+F5) ,执行前先分析,查看是否有错误语句。

新建数据库:右键数据库,新建数据库“STU”。或输入语句:

CREATE DATABASE STU;

新建用户:点开安全性→右键用户→新建用户→输入用户名→选择登录名。

1.定义模式

语句:CREATE SCHEMA AUTHORIZATION;

【3.1】为用户WANG定义一个学生-课程模式S-T。

CREATE SCHEMA "S-T" AUTHORIZATION WANG;

截图:

————创建成功√。

注:查看是否已经存在用户WANG,若没有,则可以新建。

【3.2】CREATE SCHEMA AUTHORIZATION WANG;

该语句没有指定,所以隐含为用户名WANG。

CREATE SCHEMA AUTHORIZATION WANG;

【3.3】为用户WANG创建了一个模式TEST,并且在其中定义一个表TAB1

CREATE SCHEMA TEST AUTHORIZATION WANG CREATE TABLE TAB1 ( COL1 SMALLINT, COL2 INT, COL3 CHAR(20), COL4 NUMERIC(10,3), COL5 DECIMAL(5,2), );

截图:

2.删除模式

语句:DROP SCHEMA;

【3.4】DROP SCHEMA WANG CASCADE;

删除模式ZHANG,同时该模式中定义的表TAB1也被删除

DROP SCHEMA WANG CASCADE;

这里出现了问题,向同学请教之后才明白,SQL Server不支持使用CASCADE/RESTRICT删除,若删除,可手动删除或直接输入语句

DROP SCHEMA WANG;

参考链接:https://blog.csdn.net/qq_38975453/article/details/104691601

3.基本定义表

SQL语言使用CREATE TABLE 语句定义基本表,其基本格式如下:

CREATE TABLE
      ( [ ]
      [, [ ] ] 
        …
      [, ] );
 

【3.5】新建一个“学生”表Student

CREATE TABLE Student( Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件,Sno是主码*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) );

截图:

【3.6】 建立一个“课程”表Course。

CREATE TABLE Course (Cno CHAR(4) PRIMARY KEY, /*列表完整性约束条件,Cno是主码*/ Cname CHAR(40)NOT NULL, /*列表完整性约束条件,Cname不能取空值*/ Cpno CHAR(4), /*Cpno的含义是先修课*/ Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) /*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/ );

截图:

【3.7】建立学生选课表SC

CREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY (Sno,Cno), /*主码由两个属性构成,必须作为表级完整性进行定义*/ FOREIGN KEY (Sno) REFERENCES Student(Sno), /*表级完整性约束条件,Sno是外码,被参照表是Student*/ FOREIGN KEY (Cno)REFERENCES Course(Cno) /*表级完整性约束条件,Cno是外码,被参照表是Course*/ );

截图:

4.修改基本表

SQL 语言用ALTER TABLE 语句修改基本表,其一般格式为:

ALTER TABLE
[ ADD[COLUMN] [ 完整性约束 ] ]
[ ADD ]
[ DROP [COLUMN] [CASCADE| RESTRICT] ]
[ DROP CONSTRAINT[ RESTRICT | CASCADE ] ]
[ALTER COLUMN ] ;
 

是要修改的基本表;
ADD 子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件;
DROP COLUMN 子句用于删除表中的列;
DROP CONSTRAINT 子句用于删除指定的完整性约束条件;
ALTER COLUMN 子句用于修改原有的列定义,包括修改列名和数据类型。

注:

如果指定了CASCADE短语 ,则自动删除引用了该列的其他对象,比如视图;

如果指定了RESTRICT短语,则如果该列被其他对象引用,RDBMS将拒绝删除该列。

【3.8】向Student表增加“入学时间”列,其数据类型为日期型。

ALTER TABLE Student ADD S_entrance DATE;

截图:

【3.9】将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。

ALTER TABLE Student ALTER COLUMN Sage INT;

截图:

修改成功,Sage为int型

【3.10】增加课程名称必须取唯一值的约束条件。

ALTER TABLE Course ADD UNIQUE(Cname);

截图:

5.删除基本表

使用DROP TABLE 语句删除它,其一般格式为:

DRIO TABLE RESTRICT | CASCADE];

默认情况是RESTRICT。

【3.11】删除Student表

DROP TABLE Student CASCADE;

截图:

这里也出现了问题,情况与上述删除模式相似。

但是按之前的方法删除,会显示表被一个外键约束。

查找资料后,得到如下方法:

1.找出表中的外键约束,代码如下:     

select fk.name,fk.object_id,object_name(fk.parent_object_id) as referencetablename from sys.foreign_keys as fk join sys.objects as o on fk.referenced_object_id=o.object_id where o.name = ''


如图:

2.删除外键约束,代码如下:

alter table drop constraint

如图:

原文链接:https://blog.csdn.net/muyie/article/details/79829314?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158374482219726867814708%2522%252C%2522scm%2522%253A%252220140713.130056874..%2522%257D&request_id=158374482219726867814708&biz_id=0&utm_source=distribute.pc_search_result.none-task

【3.12】若表上建有视图,选择RESTRICT时表不能删除;选择CASCADE时可删除表,视图自动被删除 。

CREATE VIEW IS_Student /*Student表上建立视图*/ AS SELECT Cno,Cname FROM Course WHERE Ccredit='IS';

注:因为Student表上例已经删除,所以这个例子按步骤做了,但是没有截图。偷偷略过吧。

总结:通过12个例子,学到了一些基本的语句以及操作。期间碰到了删除模式、删除表的报错问题,通过查找资料也得以解决。

目前所有操作都是照搬着书上的步骤来的,一些具体的方法、知识什么的还没有渗透,换句话说,按照例题的内容,我以及明白了,但是如果换到新的题的话,我可能还会蒙圈。可能也是接触的新学科吧,这次作业足足做了2小时28分钟,花了好长的时间。虽然这些可能都是简单不能再简单的知识,可能我理解新知识的能力还是欠缺,好多新知识我还要一点一点琢磨。

备注(2020.3.9):这条备注是新加的,这次作业应该也是周五(2020.3.8)和作业3一起上交的,因为我个人的大意,不小心没有成功提交这次作业,而且没能及时发现,导致没有按时交作业,已经向老师说明原因。

今天重新看一次这个作业,发现耗时真的太多了,知识还是要上课认真听讲,尽快理解,课下自己悟太费时间了。而且内容也稍有问题,我回顾了一下,大部分的时间应该都是用在截图了吧,扫一眼有些截图大可不用上传,耗时间也冗篇幅,以后尽量修改。

作业3老师已经看完了,评分是B,回去看了一遍,emm,好像大多数都是书上定义的原话。我自己理解的话(嘴笨也不知道怎么形容),不过每条定义都是我读了几遍一键一键敲上文章去的,脑力也能有个印象,至于自己理解的话,还是不清楚要怎么描述。...   或者把思路写上应该也可以,下次试试。

          以上

                                         ————(2020.3.8)


作者:Kannoame_Ling00



DROP ALTER SQL create 数据 sql练习 数据库

需要 登录 后方可回复, 如果你还没有账号请 注册新账号