SQL SERVER 中的数据定义语言

本文详细介绍了SQLSERVER中的数据定义语言,包括创建、删除和修改数据库、用户、模式、表、视图和索引的操作。通过实例展示了如何使用CREATE、DROP和ALTER命令进行各种数据库对象的管理,并探讨了模式定义、表级完整性约束和索引的创建与删除。内容详实,适合SQLSERVER数据库管理员参考。
摘要由CSDN通过智能技术生成

数据定义

操作对象创建删除修改
模式CREATE SCHEMADROP SCHEMA
CREATE TABLEDROP TABLEALTER TABLE
视图CREATE VIEWDROP VIEW
索引CREATE INDEXDROP INDEXALTER INDEX

一、建立数据库

CREATE DATABASE STUDENT;--建立名为‘STUDENT’的数据库

二、新建用户

打开安全性→右击用户→新建→用户名→登录名(选择第一个)→确定
新建用户

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

三、模式的定义与删除

1、定义
①仅建立模式

CREATE SCHEMA "S-T" AUTHORIZATION WANG; --创建模式

②建立模式的同时,定义TABLE/VIEW等
不指明架构,则为系统默认架构

CREATE SCHEMA "S-T" AUTHORIZATION WANG --创建模式
CREATE TABLE TAB1(COL1 SMALLINT,
                  COL2 INT,
                  COL3 CHAR(20),
                  COL4 NUMERIC(10,3),
                  COL5 DECIMAL(5,2)
                  ); --创建模式同时创建

指明特定架构

CREATE TABLE "S-T".TAB2(COL6 SMALLINT,
                  COL7 INT,
                  COL8 CHAR(20),
                  COL9 NUMERIC(10,3),
                  COL10 DECIMAL(5,2)
                  ); --指明特定架构S-T

注意:
(1)建立模式时,需选定当前数据库
在这里插入图片描述
(2)与SQL语句不同,T-SQL中若没有指定<模式名>,并不会隐含为用户名WANG,而是建立SQL SERVER的默认dbo架构
在这里插入图片描述

2、删除

DROP SCHEMA "S-T" RESTRICT;--或CASCADE

RESTRICT:限制删除
CASCADE:级联删除

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

1、定义

建立Student、Course、SC表

注意:如果完整性约束条件涉及该表的多个属性列,则必须定义在表记上,佛则既可以定义在列级也可以定义在表级。

CREATE TABLE Student        --定义表
(Sno CHAR(9) PRIMARY KEY,   --设置主码
Sname CHAR(20) UNIQUE,      --属性值唯一
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);

CREATE TABLE Course        --定义表
(Cno CHAR(4) PRIMARY KEY,   --设置主码
Cname CHAR(40) NOT NULL,      --属性值非空
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY(Cpno) REFERENCES Course(Cno)      --表级完整性约束,Cpno是外码,被参照表是Course,被参照列是Cno
);

CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),--表级完整性约束
FOREIGN KEY (Sno) REFERENCES Student(Sno),--表级完整性约束
FOREIGN KEY(Cno) REFERENCES Course(Cno)--表级完整性约束
);

表与模式
方法一:在表名中明显地给出模式名

CREATE TABLE "S-T".Student        --定义表
(Sno CHAR(9) PRIMARY KEY,   --设置主码
Sname CHAR(20) UNIQUE,      --属性值唯一
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);

CREATE TABLE "S-T".Course        --定义表
(Cno CHAR(4) PRIMARY KEY,   --设置主码
Cname CHAR(40) NOT NULL,      --属性值非空
Cpno CHAR(4),
Ccredit SMALLINT,
FOREIGN KEY(Cpno) REFERENCES Course(Cno)      --表级完整性约束,Cpno是外码,被参照表是Course,被参照列是Cno
);

CREATE TABLE "S-T".SC
(Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY(Cno) REFERENCES Course(Cno)
);

方法二:在创建模式的语句中同时创建表

CREATE SCHEMA 'S-T' AUTHORIZATION WANG
CREATE TABLE TAB3(COL1 SMALLINT,
                  COL2 INT,
                  COL3 CHAR(20),
                  COL4 NUMERIC(10,3),
                  COL5 DECIMAL(5,2)
                  ); --创建模式同时创建

方法三:设置所属模式,这样在创建表时表名不必给出模式名

2、删除

DROP TABLE TAB3 RESTRICT;--删除TAB3表

RESTRICT:限制删除
CASCADE:级联删除

3、修改

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

具体例子

ALTER TABLE "S-T".Student ADD S_entraAnce DATE;--增加新的属性列
ALTER TABLE "S-T".Student ALTER COLUMN Sage INT;--改变数据类型
ALTER TABLE "S-T".Course ADD UNIQUE(Cname);--增加表级完整性约束条件

五、索引的建立与删除

1、建立
UNIQUE:表明此索引的每一个索引值只对应唯一的数据记录
CLUSTER:表示要建立的索引是聚簇索引
ASC:按升序排列(默认状态)
DESC:按降序排列

CREATE UNIQUE INDEX Stusno ON Student(Sno);--在Student的Sno属性列建立索引,默认升序
CREATE UNIQUE INDEX Coucno ON Course(Cno);--在Course的Cno属性列建立索引,默认升序
CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);--在SC的Sno、Cno属性列建立索引,先按照Sno升序排列,再按照Cno降序排列
CREATE UNIQUE INDEX Stuname ON Student(Sno);

2、删除
注意:SQL SERVER中删除索引一定要同时指明表和搜因

DROP INDEX Student.Stuname;

在这里插入图片描述
**注意:给INDEX重命名时,T-SQL与SQL标准语言不同:
**

EXEC SP_rename 'SC.SCno', 'SCSno';--ALTER INDEX SCno RENAME TO SCSno;

OVER!!!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊佳啊呀啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值