数据库定义语言DDL

 
数据库定义语言
 
 
DDL(Data Description Language) ,是用于描述数据库中要存储的现实世界实体的语言。一个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、操作方法定义等。
DDL 描述的模式,必须由计算机软件进行编译,转换为便于计算机存储、查询和操纵的格式,完成这个转换工作的程序称为模式编译器。
基本对象
 
创建
修改
删除
数据库
create database
 
drop database
create table
alter table
drop table
视图
create view
 
drop view
索引
reate index
 
drop index
 
一、 数据库
1
创建数据库语法:
create database 数据库名
 on [primary]
 {
    < 数据库文件参数 >
 }
[log on]
{
    < 日志文件参数 >
}

文件的具体参数的语法:
[name= 逻辑文件名 ]
[filename= 物理文件名 ]
[size= 初始容量 ]
[maxsize= 最大容量 | unlimited]
[filegrowth= 增长量 ]
各参数说明如下:
1 primary :指定主文件组中的文件。
2 log on :指明事务日志文件的明确定义。
3 name :指定数据库的逻辑名称,这是在 sql servler 系统中中使用的名称。
4 filename  :指定数据库文件 .mdf .ndf 的名称和路径。
5 size :数据库初始容量。
6 maxsize :数据库最大容量。
7 filegrowth :指定文件每次增加容量的大小,当指定为 0 时,表示文件不增长。可以按百分比增长、数值增长。
 
示例 1 :一个数据库文件和一个日志文件
 
use  master
execute  xp_cmdshell  ' mkdir d:stu ' ,no_output
go
/*建立数据库stuDB*/
if   exists ( select   *   from  sysdatabases  where  name = ' stuDB ' )
    
drop   database  stuDB
create   database  stuDB
on   primary
(
    name
= ' stuDB_data ' ,
    filename
= ' d:stustuDB_data.mdf ' ,
    size
= 3mb,
    maxsize
= 100mb,
    filegrowth
= 2 %
)
log   on
(
    name
= ' stuDB_log ' ,
    filename
= ' d:stustuDB_log.ldf ' ,
    size
= 1mb,
    maxsize
= 50mb,
    filegrowth
= 1
)
 
示例 2 :多个数据库文件和多个日志文件
use  master
execute  xp_cmdshell  ' mkdir d:shop ' ,no_output
go

-- 建立数据库shopDB--
if   exists ( select   *   from  sysdatabases  where  name = ' shopDB ' )
    
drop   database  shopDB
create   database  shopDB
on   primary
(
    
/*--主数据库文件的具体描述--*/
    name
= ' shopDB_data1 ' ,                   
    filename
= ' d:shopshopDB_data1.mdf ' ,        
    size
= 6mb,                     
    maxsize
= 800mb,                     
    filegrowth
= 15 %                     
),
/*--一定要加逗号--*/
(
    
/*--次要数据库文件的具体描述--*/
    name
= ' shopDB_data2 ' ,                   
    filename
= ' d:shopshopDB_data2.ndf ' ,        
    size
= 6mb,                     
    maxsize
= 800mb,                     
    filegrowth
= 1                     
)
log   on
(
    
/*--日志文件的具体描述--*/
    name
= ' shopDB_log1 ' ,
    filename
= ' d:shopshopDB_log1.ldf ' ,
    size
= 2mb,
    filegrowth
= 1mb
)
log   on
(
    
/*--日志文件的具体描述--*/
    name
= ' shopDB_log2 ' ,
    filename
= ' d:shopshopDB_log2.ldf ' ,
    size
= 2mb,
    filegrowth
= 1mb
)

go

 

 

2 删除数据库
语法:
drop database 数据库名
如:
user  master  -- 设置当前数据库为master,以便访问sysdatabases表--
go

if   exists ( select   *   from  sysdatabases  where  name = ' stuDB ' )
   
drop   database  stuDB


 

 二、
1 创建表
语法:
create table 表名
(
    字段名 1, 数据类型 , 列的特征 ,
    字段名 1, 数据类型 , 列的特征 ,
        ...
)
 
示例 : 创建表 stuInfo

 

use  stuDB
go
if   exists ( select   *   from  sysobjects  where  name = stuInfo ' )
    drop table stuInfo
'
create   table  stuInfo
(
    stuName 
varchar ( 20 not   null ,
    stuNo 
char ( 6 not   null ,
    stuAge 
int   not   null ,
    stuId numeric(
18 , 0 ),
    stuSeat 
smallint   identity ( 1 , 1 ),
    stuAddress 
text
)
go

 
 
2 修改表
(1) 添加字段
alter table 表名
[add 字段名 , 数据类型 , 列的特征 ]
:
alter table stuInfo
add tel varchar(20) not null
 
(2) 添加约束
alter table 表名
add constraint 约束名 约束类型 具体约束说明
:
alter   table  stuInfo  add
    
constraint  PK_stuNo  primary   key (stuNo),         -- 主键约束--
        constraint  UQ_stuID  unique (stuID),             -- 唯一约束--
     constraint  DF_stuAddress  default ( ' 地址不详 ' for  stuAddress,     -- 默认约束--
     constraint  CK_stuAge  check (stuAge  between   15   and   40 ),         -- 检查约束--
     constraint  FK_stuNo  foreign   key (stuNo)  references  stuInfo(stuNo)  -- 参照约束--

 
(3) 删除约束
alter table 表名
    drop constraint 约束名
如:
alter   table  stuInfo
    
drop   constraint  PK_stuNo

 

 
 
3 删除表
drop table 表名

 

if   exists ( select   *   from  sysobjects  where  name = ' stuInfo ' )
    
drop   table  stuInfo


 

 

三、 视图
1 创建视图
语法:
create view 视图名
[with encryption]
as
    SQL 语句体
其中 :
with encryption: 表示对视图文本加密

 

/*建立视图*/
if   exists ( select   *   from  sysobjects  where  name = ' stuInfo_view ' )
    
drop   view  stuInfo_view
create   view  stuInfo_view
with  encryption
as
    
select   *   from  stuInfo

/*查询视图*/
select   *   from  stuInfo_view

 
2 删除视图
 
drop view 视图名
   drop   view  视图名
if   exists ( select   *   from  sysobjects  where  name = ' stuInfo_view ' )
    
drop   view  stuInfo_view
 
 
 
四、 索引
索引 : SQL Server 编排数据的内部方法 .
索引页 : 数据库中存储索引的数据页 . 索引页存放检索数据行的关键字及该数据行的地址指针 . 索引页类似于汉语字典中按拼音或笔画排序的目录页 .
 
索引作用 : 提高数据库检索速度 , 改善数据库性能 .
 
1 创建索引:
语法:
create [unique][clustered|nonclustered] index 索引名
    on 表名 ( 列名 [asc|desc])
    [with fillfactor=x]
其中 :
unique: 指定唯一索引
clustered nonclustered: 指定是聚集还是非聚集索引 , 一个表只能创建一个聚集索引 , 但可以有多个非聚集索引 , 设置某列为主键 , 则此列默认为聚集索引 .
fillfactor: 填充因子 , 指定一个 -100 的值 , 该值指示索引页填满的空间所占的百分比 .

use  stuDB
go
if   exists ( select  name  from  sysindexes  where  name = ' stuInfo_index ' )
    
drop   index  stuInfo.stuInfo_index
create   nonclustered   index  stuInfo_index
    
on  stuInfo(stuNo  desc )
    
with   fillfactor = 30
go

select   *   from  stuInfo
    stuInfo_index 
where  stuAge > 18

 
 
2 删除索引
  drop index 表名 . 索引名
if   exists ( select  name form sysindexes  where  name = ' stuInfo_index ' )
    
drop   index  stuInfo.stuInfo_index


 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值