SQL Server——从入门到放弃(1)--CREATE / DROP / ALTER 练习

在开始之前先总结一下SQL语句
SQL动词

SQL功能动词
数据查询SELECT
数据定义CREATE,DROP,ALTER
数据操纵INSERT,UPDATE,DELETE
数据控制GRANT , REVOKE

数据定义
在这里插入图片描述
定义模式格式:
在这里插入图片描述
删除模式格式:
在这里插入图片描述
基本表定义格式:
在这里插入图片描述
修改基本表格式:
在这里插入图片描述
ADD用于增加新列、新的列级/表级完整型约束条件
DROP COLUMN用于删除表中列
DROP CONSTRAINT用于删除指定的完整型约束条件
ALTER COLUMN用于修改原有的列定义,包括列名和数据类型

删除基本表格式:
在这里插入图片描述

**

接下来是对上述语句的练习

**
【例3.1】为用户WANG定义一个学生-课程模式S-T
定义之前需要先检查数据库中有没有用户WANG,如果没有,请创建。
创建过程详见:数据库使用SQL语句新建数据库及新建用户WANG
创建完成后,输入以下语句,【执行】

CREATE SCHEMA "S-T" AUTHORIZATION 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),
				  );

在这里插入图片描述
注意: 要想在自己的命名空间下建表,要么在创建模式TEST的同时创建表TAB1,要么在表名中明显的给出模式名TEST.TAB1,要么设置所属的格式(DBMS中先设置模式,再建表),不然就会成为默认条件dbo.TAB1。
SQL server 中,默认用户为 dbo,在没有创建模式的情况下,默认的模式名为dbo,所以表名为dbo.TAB2。如

CREATE TABLE TAB2(COL1 SMALLINT,
                  COL2 INT,
				  COL3 CHAR(20),
				  COL4 NUMERIC(10,3),
				  COL5 DECIMAL(5,2),
				  );

在这里插入图片描述

【例3.4】DROP SCHEMA WANG CASCADE
1)美好的理想:CASCADE 关键字在删模式的同时会将原数据库对象全部删除,一劳永逸。

DROP SCHEMA WANG CASCADE

然而:
在这里插入图片描述
残酷的现实是:SQL Server 不支持 在DROP SCHEMA时使用CASCADE
只剩一个办法——一个一个删

 DROP TABLE TEST.TAB1
 DROP TABLE dbo.TAB2
DROP SCHEMA TEST;

在这里插入图片描述

【例3.5】建立一个“学生”表 Student.学号是主码,姓名取唯一

CREATE TABLE Student
             (
			 Sno CHAR(9) PRIMARY KEY,
			 Sname CHAR(20) UNIQUE,
			 Ssex CHAR(2),
			 Sage SMALLINT,
			 Sdept CHAR(20)
			 );

在这里插入图片描述

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

CREATE TABLE Course
             (
			 Cno CHAR(4) PRIMARY KEY,
			 Cname CHAR(40),
			 Cpno CHAR(4),     /*先修课*/
			 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*/
			 );

在这里插入图片描述

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

ALTER TABLE Student ADD S_entrance DATE

在这里插入图片描述

【例3.9】将年龄的数据类型由字符型改为整形

ALTER TABLE Student ALTER COLUMN Sage INT

在这里插入图片描述

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

ALTER TABLE Course ADD UNIQUE(Cname)

在这里插入图片描述

【例3.11】删除Student表

DROP TABLE Student CASCADE;

上面已经说过了,SQL Server 不支持CASCADE,所以上述代码不行。
没办法,再次一个一个删,这里注意,由于SC表中有外码,参照表Student,所以需要先将SC表删除,再删除Student表。

DROP TABLE SC    /*后面没有逗号,分号等任何东西*/
DROP TABLE Student

在这里插入图片描述

【例3.12】若表上建有视图,使用RESTRICT时表不能删除;使用CASCADE时可以删除表,视图也自动删除。
创建基于Student的视图IS_Student:

CREATE VIEW IS_Student      
    AS 
	    SELECT SNO,SNAME,SAGE
	    FROM  Student
    	    WHERE SDEPT='IS';

在这里插入图片描述
删除:

DROP TABLE Student RESTRICT; 

由于该表下有视图,RESTRICT不能使用,会报错。
再次按顺序删

DROP VIEW IS_Student
DROP TABLE Student ;

在这里插入图片描述

这是本人的血泪教训:
做实验一定要看好顺序,虽然3.12在3.11后面,但后面的实验还要用Student 表,别着急删!!! 写过的代码也别随便删。找个地方存下,总有用的着的一天。😭不说了,伤心。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值