【2019-2020春学期】数据库作业4:SQL练习1 - CREATE / DROP / ALTER

本文详细介绍了SQL中模式的定义与删除方法,包括如何为用户定义模式、模式下的表创建与操作,以及模式的删除策略。同时,深入讲解了基本表的定义、修改与删除过程,涵盖了完整性约束条件、数据类型选择、列与表级约束的添加与删除等关键知识点。
摘要由CSDN通过智能技术生成

一、模式的定义与删除
1、定义模式
例:为用户 WANG 定义一个学生-课程模式S-T
(1)CREATE SCHEMA "S-T" AUTHORIZATION WANG
这个命令成功执行的前提是存在 WANG 这个用户。若没有则先建立一个 SCHOOL 数据库。(若数据库已存在则跳过)
(2)CREATE DATABASE SCHOOL
然后
在这里插入图片描述建立一个用户名为 WANG 的用户(登录名用浏览里的第一个)。
在这里插入图片描述
!! 要将图中标红部分选择为包含WANG的数据库名才能执行。
再执行 **(1)**代码会成功完成。若无该用户(或未转换为正确数据库)执行后会提示WANG不存在,且代码WANG下会有红色波浪线报错。

SQL server中,默认用户为dbo,,再没有创建模式的情况下,默认的模式名为dbo,所以表名为dbo.*。

没有创建模式的例子:
(3)CREATE SCHEMA AUTHORIZATION WANG

定义模式实际上是定义了一个命名空间,在此空间可以定义该模式包含的数据库对象。如基本表、视图、索引等。

建立模式下的表

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

!!! 必须将执行过的代码删去,重复执行会报错
可以先点击“√”分析语句再执行。
!!! 若无第一句,TAb1默认建立在dbo。
也可去除第一句以下面的代码将表建立在TEST模式下(前提是TEST模式已建立)

CREATE TABLE TEST.TAB2
		(COL1 SMALLINT
		);

定义基本表所属模式
(1)在表名中明确给出模式名

Create table"S-T".Student(......);     

(2)创建模式语句中同时建表

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

(3)设置所属的模式

CREATE TABLE TEST.TAB2
              ( COL1 SMALLINT                                                                                    
              );

2、模式的删除
(1)CASCADE(级联)
删除模式的同时把该模式所有的数据库对象全部删除。
(2)RESTRICT(限制)
如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。仅当该模式中没有任何下属的对象时才执行。
就是级联不管是否有下属对象,执行即全部删除。限制若有下属对象则拒绝执行删除语句。

二、基本表的定义、删除与修改
1、表的定义
格式
CREATE TABLE <表名>
(<列名> <数据类型>[ <列级完整性约束条件> ]
[,<列名> <数据类型>[ <列级完整性约束条件>] ]

[,<表级完整性约束条件> ] );
<表名>:所要定义的基本表的名字
<列名>:组成该表的各个属性(列)
<列级完整性约束条件>:涉及相应属性列的完整性约束条件
<表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件
!!!<列名> <数据类型>至少有一行。
!!! 列级完整性约束条件,表级完整性约束条件,可以有也可以没有。
列级完整性约束条件 是约束当前列。涉及一个属性列的 表级完整性约束条件,可以写成列级完整性约束条件,涉及多个属性列的 表级完整性约束条件 只能写在最后。

:建立“学生”表Student。学号是主码,姓名取值唯一。

CREATE TABLE Student
		(Sno CHAR(9) PRIMARY KEY,  //学号是主码
		Sname CHAR(20) UNIQUE,     //取值唯一
		Ssex CHAR(2),
		Sage SMALLINT,
		Sdept CHAR(20)
		);

!!! 需在当前数据库的当前模式下执行。

建立一个“课程”表Course


CREATE TABLE  Course
          (Cno      CHAR(4) PRIMARY KEY,
           Cname    CHAR(40),            
           Cpno     CHAR(4),               	                      
           Ccredit  SMALLINTFOREIGN KEY (Cpno) REFERENCES  Course(Cno) 
          ); 

FOREIGN KEY (Cpno) REFERENCES Course(Cno)
意思为 Cpno 是外码,被参照表是 Course ,被参照列是 Cno 。
SQL中域的概念用数据类型来实现定义表的属性时需要指明其数据类型及长度。

选择合适的数据类型,推荐用变长的数据类型 ,二进制可以存照片,视频。

2、修改基本表
格式
ALTER TABLE <表名>
[ ADD[COLUMN] <新列名> <数据类型> [ 完整性约束 ] ]
[ ADD <表级完整性约束>]
[ DROP [ COLUMN ] <列名> [CASCADE| RESTRICT] ]
[ DROP CONSTRAINT<完整性约束名>[ RESTRICT | CASCADE ] ]
[ALTER COLUMN <列名><数据类型> ] ;

<表名>是要修改的基本表
ADD 子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件
DROP COLUMN 子句用于删除表中的列
如果指定了 CASCADE 短语,则自动删除引用了该列的其他对象
如果指定了 RESTRICT 短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列
DROP CONSTRAINT 子句用于删除指定的完整性约束条件
ALTER COLUMN 子句用于修改原有的列定义,包括修改列名和数据类型

可通过打开文件将文件里的代码导入。

(1)向表内增加列
向Student表增加“入学时间”列,其数据类型为日期型

  ALTER TABLE Student ADD S_entrance DATE;

不管基本表中原来是否已有数据,新增加的列一律为空值。

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

ALTER TABLE Student ALTER COLUMN Sage INT;

(3)增加约束条件
增加课程名称必须取唯一值的约束条件。

ALTER TABLE Course ADD UNIQUE(Cname);  	

3、删除基本表
格式
DROP TABLE <表名>[RESTRICT| CASCADE];
RESTRICT:删除表有限制。
(1)被删除表不能被其他表的约束所引用。
(2)被删除表不能有依赖该表的对象。
CASCADE:删除该表无限制
删除该表时,连连同相关的依赖对象一起删除。
和模式的删除类似。

:删除Student表

DROP TABLE Student  CASCADE;

有关对象全部删除。

若表上有视图,使用 RESTRICT时显示
–ERROR: cannot drop table Student because other objects depend on it 无法删除,使用CASCADE 可以删除表,视图也一同删去。

注意比较标准SQL与T-SQL之间的不同
SQL Server是结构化查询语言,是目前关系型数据库管理系统中使用最广泛的查询语言T-SQL即 Transact-SQL,是标准SQL语言的扩展,是SQL Server的核心,在SQL的的基础上添加了变量,运算符,函数和流程控制等新内容,SQL Server是几乎所有关系型数据库都支持的语言,而T-SQL是Microsoft SQL Server支持的语言

参考文章:https://blog.csdn.net/qq_43552118/article/details/87865970

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值