数据库作业3:SQL Server的部分操作(1)

2021年3月22日 10点热度 0条评论 来源: 偏偏意气用事_

操作目录

一.新建一个用户

展开需要操作的数据库,【安全性】->【用户】右击新建一个用户。
注意! 这里的【安全性】是在数据库级别之下的,而非服务器级别下的。

输入定义的【用户名】,【登录名】点击最右边的[…],选择【浏览】,在第一项打勾,选择【确定】。

二.模式的定义与删除

1.定义模式

右击刚刚编辑的数据库,点击【新建查询】。

SQL语句 :

CREATE SCHEMA <模式名> AUTHORIZATION <用户名>;`

①:为用户名YANG定义一个学生-课程模式S-T
CREATE SCHEMA "S-T" AUTHORIZATION YANG;

右击【架构】即为模式 点击【刷新】,然后就可以看到新建好的架构了。

注意! 操作过程中必须保证操作数据库 为 刚刚新建了用户的数据库,而非
master 数据库。

②:没有指定<模式名>,<模式名>隐含为<用户名>YANG。

CREATE SCHEMA AUTHORIZATION YANG;

③:为用户YANG创建一个模式TEST,并且在其中定义一个表TAB1。

CREATE SCHEMA TEST AUTHORIZATION YANG --语句一
CREATE TABLE TAB1(COL1 SMALLINT,--语句二
COL2 INT,
COL3 CHAR(20),
COL4 NUMERIC(10,3),
COL5 DECIMAL(5,2)
);

注意! 若不写语句一只写语句二,生成的表的前缀为dbo。

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

2.删除模式

在进行删除操作之前,最好把自己之前写的语句保存一下。
步骤是 点击【文件】->【另存为】->设置【文件名】->【保存】


推荐保存在桌面,再次使用时很方便。
打开步骤:找到文件->右击打开方式->选择【记事本】

CASCADE(级联):在删除模式的同时把该模式中所有的数据库对象全部删除。
SQL语句:

DROP SCHEMA <模式名>CASCADE;

RESTRICT(限制):如果该模式中已经定义了下属的数据库对象,则拒绝该删除语句的执行。
SQL语句:

DROP SCHEMA <模式名>RESTRICT;

注意! 由于SQL Server中的T-SQL语言不支持使用 CASCADE 和RESTRICT,所以使用上面的语句时会报错。

可以先删除模式下的表,再删除模式。

DROP TABLE TEST.TAB1;
DROP SCHEMA TEST;

三.基本表的定义、删除与修改

1.定义基本表

SQL语句:

CREATE TABLE <表名> (<列名><数据类型>[列级完整性约束条件]
					[,<列名><数据类型>[列级完整性约束条件]]
					...
					[,<表级完整性约束条件>]);

[ ]代表可选性,即 可有可无。

①.建立学生表Student

因为我曾经建过一个Student表,所以这个指令会报错,我就将Student建成了Student1。

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

);


②.建立课程表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*/
);

③.建立学生选课表SC

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

2.修改基本表

SQL语句:

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

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

ALTER TABLE Student1 ADD S_entrance DATE;

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

ALTER TABLE Student1 ALTER COLUMN Sage INT;

③:增加课程名称必须取唯一值的约束条件。

ALTER TABLE Course ADD UNIQUE(Cname);

3.删除基本表

①:删除Student 表

DROP TABLE <表名>RESTRICT| CASCADE;

②:若表上有视图,选择时RESTRICT表不能删除;选择CASCADE时可以删除表,视图也自动被删除。

建立视图:

CREATE VIEW IS_Student1/*Student表上建立视图*/
	AS
	SELECT Sno,Sname,Sage
	FROM Student1 
	WHERE Sdept='IS';


用RESTRICT删除表

DROP TABLE Student1 RESTRICT; 

用CASCADE删除表

DROP TABLE Student1 CASCADE;

注意! 由于SQL Server中的T-SQL语言不支持使用 CASCADE 和RESTRICT,所以使用上面的语句时会报错。

删除语句:

DROP TABLE Student1;


!这里删除的是Student而非Student1 是由于第二天再做实验重新进行了操作。

经查阅,先查询外键约束的名称:

exec sp_helpconstraint 'Student';


删除外键约束:

alter table Student drop constraint PK__Student__CA1FE464EBAD98CF;

然后删除表:

DROP TABLE Student;

查询是否删除:

SELECT *FROM IS_Student;


已经成功删除。

    原文作者:偏偏意气用事_
    原文地址: https://blog.csdn.net/weixin_46009153/article/details/115093000
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。