数据库学习摘记 —— SQL Server 数据定义语言DDL基本操作

创建基本表

基本语法

    方括[]为可选项

    CREATE TABLE 表名

    ( 列名 数据类型 [列级完整性约束条件]

    [, 列名 数据类型 [列级完整性约束条件] ]…)

常用约束语句

    NOT NULL:非空约束,指定某列不为空 。

    UNIQUE: 唯一约束,指定某列和几列组合的数据不能重复,但可以为多个null ( SQL Server除外)

                       在创建唯一约束的时候,如果不给唯一约束名称,就默认和列名相同

                       唯一约束的列上默认创建一个唯一非聚集索引

    PRIMARY KEY:主键约束,指定某列的数据唯一并且不为空

                                当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一聚集索引

    FOREIGN KEY:外键约束,指定该列记录属于主表中的一条记录,参照另一条数据

    CHECK:检查约束,指定一个表达式,用于检验指定数据

主要数据类型

TINYINT

整数类型,其值按1字节存储

SMALLINT

整数类型,其值按2字节存储

INT

整数类型,其值按4字节存储

REAL

实数类型,其值按4字节存储

FLOAT

实数类型,其值按8字节存储

DECIMAL(P,S)

实数类型,精确小数位数,P指定数据的数字长度,S指定小数点后的位数

CHAR(N)

字符类型,长度为N,其值按N字节存储

VARCHAR(N)

字符类型,最长为N,所占字节与实际字符数有关

DATETIME

日期时间类型,默认格式为MM-DD-YYYY HH:MM:AM/PM

TIMESTAMP

日期时间类型,系统自动记录,其值按8字节存储

实例一

    CREATE TABLE temp

    (id INT NOT NULL,

    num CHAR(8) NOT NULL DEFAULT ‘ 0’,

    gender CHAR(2) NULL)

    添加非空约束

    ALTER TABLE temp ALTER COLUMN gender CHAR(2) NOT NULL

    取消非空约束

    ALTER TABLE temp ALTER COLUMN gender CHAR(2) NULL

    增加默认值

    ALTER TABLE temp ADD DEFAULT 'ABC' FOR gender

实例二

    CREATE TABLE temp

    (id INT NOT NULL,

    password CHAR(10),

    name CAHR(4),

    CONSTRAINT id_pass_limit UNIQUE(id,password) )

    id和password组合不可重复

    添加唯一约束

    ALTER TABLE temp ADD UNIQUE(name, password)

    修改唯一性约束

    ALTER TABLE temp ALTER COLUMN name CHAR(25) UNIQUE

    删除约束

    ALTER TABLE temp DROP CONSTRAINT id_pass_limit

实例三

    CREATE TABLE temp(

    id INT NOT NULL,

    name CHAR(25),

    password CHAR(15),

    CONSTRAINT Limits PRIMARY KEY(name, password) )

    添加主键

    ALTER TABLE temp ADD PRIMARY KEY(name, password)

    修改列为主键

    ALTER TABLE temp ALTER COLUMN id INT PRIMARY KEY

    删除主键约束

    ALTER TABLE temp DROP CONSTRAINT Limits

删除基本表

    基本表删除后,索引和视图都将自动被删除

    DROP TABLE <表名>


创建视图

定义

    视图是从一个或几个基本表(或视图)导出的虚拟表,可以在此基础上定义新视图,并可以像基本表一样被查询和删除,但是对增加、删除和修改这些操作有一定限制:

    如果一个视图是从多个表使用连接操作导出,或是在导出过程中使用了分组和集函数,则不允许更新

基本语法

    CREATE VIEW <视图名> [(<列名>[,<列名>]…)]

    AS <SELECT子查询语句>

    [ WITH CHECK OPTION ]

    1. 视图的属性列名全省略或者全指定。

    2. SELECT子查询语句不允许含有ORDER BY 和 DISTINCT

    3. WITH CHECK OPTION表示用视图进行UPDATE,INSERT和DELETE操作时要保证更新、插入或删除的元组满足子查询中的条件表达式

实例一

    建立数学系学生的视图,且在进行修改和插入操作时仍需保证该视图只对数学系的学生,视图的属性名为sno,sname,sage,sdept

    CREATE VIEW C_Students

    AS

    SELECT Sno,Sname,Sage,Sdept

    FROM Students

    WHERE Sdept = ‘数学‘

    WITH CHECK OPTION

实例二

    定义一个反映学生出生年份的视图

    CREATE VIEW Students_birth(Sno,Sname,Sbirth)

    AS

    SELECT Sno,Sname,DATENAME(yyyy,GETDATE())-YEAR(Birthday)

    FROM Students

注意点

    1. 若想在视图中为某个列使用新的更合适的名字,可以指出视图的属性列名

    2. 若多表连接导出的视图中有几个同名列作为该视图的属性列名,需要指出视图的属性列名

    3. 某个目标列不是单纯的属性名,而是集函数或列表达式时,需要指出视图的属性列名

删除视图

    视图删除后视图的定义将从数据字典中删除

    但是由该视图导出的其它视图定义仍在数据字典中,但是这些视图已失效,要用 DROP VIEW语句显式将它们一一删除

    DROP VIEW <视图名>


创建索引

基本语法

    CREATE [UNIQUE] [CLUSTERED] INDEX<索引名>

    ON <表名> (<列名> [<排序方式>] [,<列名>[<排序方式>] ]… );

    1. <排序方式>来指定索引值按ASC(升序)或DESC(降序) 方式排序,缺省值为ASC

    2. UNIQUE:创建唯一索引,不允许两行具有相同的索引键值,且不允许为已包含重复值的列创建唯一索引。

        SQL Server会将多个NULL值视为重复值

    3. CLUSTERED:创建聚集索引,键值的逻辑顺序就是基本表中对应行的物理顺序

        一个基本表或视图只允许同时有一个聚集索引

        若不指定CLUSTERED,则创建非聚集索引,索引键值的排序独立于基本表数据的物理排序

删除索引

    DROP INDEX <表名.索引名>

猜你喜欢

转载自www.cnblogs.com/kuluo/p/12539410.html