SQL 模式的定义与删除 基本表的定义、删除、修改

创建新的数据库后,创建新的用户和模式(架构)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

模式定义:

模式定义语句
CREATE SCHEMA <模式名> AUTHORIZATION <用户名>

例3.1:为用户WANG定义一个学生课程模式S-T

CREATE SCHEMA "S-T" AUTHORIZATION WANG;

在这里插入图片描述
刷新架构,出现S-T

如果模式定义语句没有指定模式名,模式名隐含用户名

例3.2:

该语句没有指定<模式名>,<模式名>隐含为<用户名>
在没有创建模式的情况下,默认的模式名为dbo,表名为dbo.*?。

CREATE SCHEMA AUTHORIZATION WANG;

例3.3:为用户WANG创建一个TEST,并且在其中定义一个表TAB1

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

在这里插入图片描述
这里的第一行打上注释是因为,第一个语句已经执行过,已经为用户WANG创建了模式TEST,所以再执行一遍会重复——报错。因此要注释掉

CREATE TABLE TEST.TAB2(
	COL1 SMALLINT
);

在这里插入图片描述

模式删除:

删除模式语句:
DROP SCHEMA <模式名> <CASCADE/RESTRICT>
CASCADE 和 RESTRICT二选一

CASCADE(级联):删除模式的同时,把该模式中的所有数据库对象全部删除
RESTRICT(限制):如果该模式下,已经定义了下属数据库对象,则拒绝这条删除语句执行

例3.4:

DROP SCHEMA TEST1 CASCAD

在这里插入图片描述
这里语法错误是因为SQL Server不支持在删除过程中使用CASCADE/RESTRICT关键字,如果简单地去掉的话,是不可以的,因为有下属文件TAB1 TAB2在引用

DROP TABLE TEST1.TAB1;
DROP TABLE TEST1.TAB2;
DROP CASCADE TEST1;

在这里插入图片描述

定义基本表:

定义基本表的格式:

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)
); 

代码部分可以写在编辑器里改成sql后缀之后,在SQL中打开,也可以新建查询输入执行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

CREATE TABLE  Course(
	Cno CHAR(4) PRIMARY KEY,
	/*列级完整性约束条件,Cno是主码*/
    Cname CHAR(40),
    /*列级完整性约束条件,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*/
); 

修改基础表:

ALTER TABLE <表名>
  [ ADD [COLUMN] <新列名> <数据类型>  [ 完整性约束 ] ]
  [ ADD <表级完整性约束>]
  [ DROP [COLUMN] <列名> [CASCADE | RESTRICT] ]
  [ DROP CONSTRAINT <完整性约束名> [ RESTRICT | CASCADE ] ]
  [ALTER COLUMN <列名> <数据类型> ] ;

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

ALTER TABLE Student ADD S_entrance DATE;

在这里插入图片描述
3.9:将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数
在这里插入图片描述

ALTER TABLE STU ALTER COLUMN Sage INT;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.10:增加课程名称必须取唯一值的约束条件

ALTER TABLE Course ADD UNIQUE(Cname);

在这里插入图片描述
在这里插入图片描述

删除基本表:

3.11:删除Student表

DROP TABLE STU CASCADE;

在这里插入图片描述
报错的原因还是因为SQL不支持删除语句使用CASCADE/RESTRICT关键字

DROP TABLE STU;

在这里插入图片描述
发现和STU相关的文件全部删除掉了
在这里插入图片描述
3.12:若表上建有视图,选择RESTRICT时表不能删除;选择CASCADE时可删除表,视图自动被删除

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

在这里插入图片描述
个人感觉SQL语言刚开始记忆起来还是有些困难,需要查阅T-SQL来进行写代码。虽然已经实操了一遍,但感觉还是对这款软件的使用比较陌生,不是很熟练,有时间还是要多多练习

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值