SQL Server 2016 学习记录 --- 数据定义

8 篇文章 0 订阅
7 篇文章 1 订阅

学习目标:

1、模式的定义与删除
2、 基本表的定义、删除与修改
3、 数据类型
4、索引的建立与删除
5、 数据字典


学习内容:

1、模式的定义与删除

定义模式

--[例3.1]定义一个学生-课程模式S-T
create schema "S-T" authorization test;
/*为用户test定义了一个模式S-T*/
--如果没有指定<模式名>,那么<模式名>隐含为<用户名>

定义模式实际上定义了一个命名空间。
在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。
在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句,故可在创建模式的同时创建表、视图等。

--[例3.3]为用户ZHANG创建了一个模式TEST,并且在其中定义一个表TAB1
CREATE SCHEMA AAA AUTHORIZATION test 
CREATE TABLE TAB1   ( COL1 SMALLINT, 
                      COL2 INT,
                      COL3 CHAR(20),
                      COL4 NUMERIC(10,3),
                      COL5 DECIMAL(5,2)
                      );

删除模式
DROP SCHEMA <模式名> <CASCADE|RESTRICT>
CASCADE(级联): 删除模式的同时把该模式中所有的数据库对象全部删除
RESTRICT(限制): 如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。当该模式中没有任何下属的对象时才能执行

--[例3.4]
DROP SCHEMA s1 CASCADE;
/*删除模式ZHANG,同时该模式中定义的表TAB1也被删除*/

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

定义基本表

--[例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)
      ); 
-- [例3.6 ] 建立一个“课程”表Course
CREATE TABLE  Course
          (Cno       CHAR(4) PRIMARY KEY,
           Cname  CHAR(40),            
           Cpno     CHAR(4),               	                      
           Ccredit  SMALLINT,
           FOREIGN KEY (Cpno) REFERENCES  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 Student ALTER COLUMN Sage INT;

--[例3.10] 增加课程名称必须取唯一值的约束条件。
ALTER TABLE Course ADD UNIQUE(Cname); 

删除基本表
DROP TABLE <表名>[RESTRICT| CASCADE];
RESTRICT:删除表是有限制的。
欲删除的基本表不能被其他表的约束所引用
如果存在依赖该表的对象,则此表不能被删除
CASCADE:删除该表没有限制。
在删除基本表的同时,相关的依赖对象一起删除

--[例3.11]  删除Student表
DROP TABLE  Student  CASCADE ;
/*基本表定义被删除,数据被删除
表上建立的索引、视图、触发器等一般也将被删除 */

3、数据类型

字符数据类型

在这里插入图片描述

精确数值数据类型

在这里插入图片描述

近似数值数据类型

在这里插入图片描述

二进制数据类型

在这里插入图片描述

日期和时间数据类型

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

4、 索引的建立与删除

索引建立的目的:加快查询的速度

关系数据库管理系统中常见索引:

  • 顺序文件上的索引
  • B+树索引
  • 散列(hash)索引
  • 位图索引

特点:
B+树索引具有动态平衡的优点
HASH索引具有查找速度快的特点

建立索引
CREATE [UNIQUE] [CLUSTERED] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
<表名>:要建索引的基本表的名字
索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔
<次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC
UNIQUE:此索引的每一个索引值只对应唯一的数据记录
CLUSTERED:表示要建立的索引是聚簇索引

--[例3.13] 在Student表的Sname(姓名)列上建立一个聚簇索引
CREATE CLUSTERED INDEX Stusname 
           ON   Student(Sname);

*在最经常查询的列上建立聚簇索引以提高查询效率
一个基本表上最多只能建立一个聚簇索引
经常更新的列不宜建立聚簇索引 *

--[例3.14]为学生-课程数据库中的Student,Course,SC三个表建  立索引。
--Student表按学号升序建唯一索引;Course表按课程号升序建唯一索引;SC表按学号升序和课程号降序建唯一索引
CREATE UNIQUE INDEX  Stusno ON Student(Sno);
CREATE UNIQUE INDEX  Coucno ON Course(Cno);
CREATE UNIQUE INDEX  SCno ON SC(Sno ASC,Cno DESC);

删除索引
DROP INDEX <索引名>;
删除索引时,系统会从数据字典中删去有关该索
引的描述。

--[例3.15]  删除Student表的Stusname索引
DROP INDEX Stusname on student;

5、 数据字典

数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有定义信息:

  • 关系模式定义
  • 视图定义
  • 索引定义
  • 完整性约束定义
  • 各类用户对数据库的操作权限
  • 统计信息等

关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值