SQL server的数据操作

目录

  • 准备
  • 模式的定义与删除
    • 模式定义
      • 例3.1 为用户wang定义一个学生-课程模式S-T
      • 例3.2CREATE SCHEMA AUTHORIZATION wang;
      • 例3.3 为用户wang创建一个模式TEST,并定义一个表TABLE1
    • 删除模式语句:
      • DROP SCNHEMA wang CASCADE
  • 基本表的定义,删除与修改
    • 定义基本表
      • 例3.5 建立Student表
      • 例3.6 建立Course表
      • 例3.7 建立SC表
      • 创建定义于模式的基本表
      • 例3.8 向Student表增加“入学时间”列,类型为日期型
      • 例3.9将年龄的数据类型有字符型改为整形
      • 例3.10 增加课程名称必须取唯一值的约束条件
    • 删除基本表
      • 例3.11 删除Student表
      • 例3.12 若表上建有视图,使用RESTRICT时表不能删除;使用 CASCADE时可以删除表,视图也自动被删除。

准备

按下图新建一个用户wang,注意找好位置
SQL server的数据操作_第1张图片
SQL server的数据操作_第2张图片

模式的定义与删除

模式定义

模式定义语句:

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

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

CREATE SCHEMA "S-T" AUTHORIZATION wang;

SQL server的数据操作_第3张图片

例3.2CREATE SCHEMA AUTHORIZATION wang;

CREATE SCHEMA AUTHORIZATION wang;

SQL server的数据操作_第4张图片
该语句并没有指明<模式名>,则模式名隐含为用户名wang,同时,此处只是定义了一处空间,但由于未指明空间名称,所以并未创建架构

CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<表定义子句>|<视图定义子句>|<授权定义子句>];

例3.3 为用户wang创建一个模式TEST,并定义一个表TABLE1

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

SQL server的数据操作_第5张图片

删除模式语句:

DROP SCHEMA <模式名><CASCADE|RESTRICT>;

DROP SCNHEMA wang CASCADE

DROP SCHEMA wang CASCADE; --删除模式wang

SQL server的数据操作_第6张图片

这是因为T-sql不具备CASCADE语句识别,所以将CASCADE删去,要逐层删去其包含的项目才行,首先就是TAB1

SQL server的数据操作_第7张图片
然后删去TEST
SQL server的数据操作_第8张图片

基本表的定义,删除与修改

定义基本表

例3.5 建立Student表

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

SQL server的数据操作_第9张图片

例3.6 建立Course表

CREATE TABLE Course
(Cno CHAR(4)PRIMARY KEY, --定义主码
Cname CHAR(40)NOT NULL, --不可取空值
Cpno CHAR(4), --先修课
Ccradit SMALLINT,
FOREIGN KEY(Cpno)REFERENCES Course(Cno) 
 --Cpno是外码,Course是被参照表,Cno被参照列
);

SQL server的数据操作_第10张图片

例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是被参照表
);

SQL server的数据操作_第11张图片

创建定义于模式的基本表

CREATE TABLE "S-T".CS(
A CHAR(10)
);

SQL server的数据操作_第12张图片

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

ALTER TABLE Student ADD S_entrance DATE;`

SQL server的数据操作_第13张图片

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

ALTER TABLE Student ALTER COLUMN Sage INT;

SQL server的数据操作_第14张图片

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

ALTER TABLE Course ADD UNIQUE(Cname);

SQL server的数据操作_第15张图片

删除基本表

warning:最离谱儿的地方

例3.11 删除Student表

DROP TABLE<表名>[RESTRICT|CASCADE];

SQL server的数据操作_第16张图片
啊~下意思,删了CADSCADE,小事儿
SQL server的数据操作_第17张图片

SQL server的数据操作_第18张图片
嘛意思
SQL server的数据操作_第19张图片

找了好久,一点点抠唆,吐了吐了
在这里插入图片描述
找到了下边这个查找外键的语句,我表示看不懂

SELECT name
  FROM sys.foreign_key_columns f
  JOIN sys.objects o
    ON f.constraint_object_id = o.object_id
 WHERE f.parent_object_id = OBJECT_ID('表名');

SQL server的数据操作_第20张图片
改一下试试

SELECT name
  FROM sys.foreign_key_columns f
  JOIN sys.objects o
    ON f.constraint_object_id = o.object_id
 WHERE f.parent_object_id = OBJECT_ID('SC');

介表名啊,不一定是本表的,要去找引用的表,然后看name的_Sno_是是目标表的属性名,对,就他,ctrl+c,crtl+v,
SQL server的数据操作_第21张图片
未删前的属性列
SQL server的数据操作_第22张图片
应用公式

ALTER TABLE 表名 DROP CONSTRAINT 外键约束名;

实际语句

ALTER TABLE SC DROP CONSTRAINT FK__SC__Sno__628FA481;

操作后可以发现FK没了,就成了
SQL server的数据操作_第23张图片

然后就可以删了…
SQL server的数据操作_第24张图片

SQL server的数据操作_第25张图片

例3.12 若表上建有视图,使用RESTRICT时表不能删除;使用 CASCADE时可以删除表,视图也自动被删除。

在Course表上建立视图:

CREATE VIEW IS_Course
AS
SELECT Cno,Cname,Cpno 
FROM Course
WHERE Ccradit = 'IS';

SQL server的数据操作_第26张图片
删除Course表

DROP TABLE Course ;

在这里插入图片描述
SQL server的数据操作_第27张图片
有点熟悉对吧,往上看例3.11

SELECT name
  FROM sys.foreign_key_columns f
  JOIN sys.objects o
    ON f.constraint_object_id = o.object_id
 WHERE f.parent_object_id = OBJECT_ID('Course');
 ALTER TABLE Course DROP CONSTRAINT FK__Course__Cpno__5FB337D6;

SQL server的数据操作_第28张图片
SQL server的数据操作_第29张图片
还有SC呢

SELECT name
  FROM sys.foreign_key_columns f
  JOIN sys.objects o
    ON f.constraint_object_id = o.object_id
 WHERE f.parent_object_id = OBJECT_ID('SC');

SQL server的数据操作_第30张图片

ALTER TABLE SC DROP CONSTRAINT FK__SC__Cno__6383C8BA;

删完被引用部分,开删开删

DROP TABLE Course;

最后来检查一下视图部分

SELECT * FROM IS_Course;

SQL server的数据操作_第31张图片
呜呼~起飞,搞完收工
说一下难的:删除那块找了好久,现在看还看不懂,先会用吧…

你可能感兴趣的:(sql)