标签:
一、创建数据库
?
注意一点:在新建数据库的时候,一般放置数据文件与日志文件的位置,需要提前建立文件夹,不然会报错。
一般主数据文件,我们以.mdf结尾,次数据文件用.ndf结尾。对于日志文件,我们一般以.ldf结尾。
create database UserDB
on primary
(name=userdb_dat,filename=‘d:\magmisdata\magdbdat1.mdf‘,
size=10,maxsize=50,filegrowth=5)
?
log on
( name=userdb_log,filename=‘d:\magmisdata\magdblog1.ldf‘,
size=10,maxsize=50,filegrowth=5)
打开数据库:
use database UserDB
?
CREATE DATABASE UserBD1
ON PRIMARY
(name=user1,filename=‘d:\dbfile\user1.mdf‘,size=20,maxsize=200,filegrowth=5
),
(name=user2,filename=‘d:\dbfile\user2.ndf‘,size=20,maxsize=200,filegrowth=10%
),
(name=user3,filename=‘d:\dbfile\user3.ndf‘,size=20,maxsize=200,filegrowth=5
)
log on
(name=use1log,filename=‘d:\dbfile\user1.ldf‘,size=20,maxsize=200
),
(name=user2log,filename=‘d:\dbfile\user2.ldf‘,size=20,maxsize=200
)
增加和删除数据文件和日志文件
缩小分配给数据文件或日志文件的空间
扩大分配给数据文件或日志文件的空间
创建文件组
改变默认文件组
改变数据库名称
?
注意:在利用文件组的时候需要先增加文件组,然后在把增加的文件放到文件组里面去。
而且 name 记录的是 数据文件的逻辑名称,不是物理名称。
alter database UserBD1
add filegroup userdbFG
alter database UserBD1
add file
(name=add_user2,filename=‘d:\dbfile\adddat2.ndf‘,size=5,maxsize=200,filegrowth=10%)
to filegroup userdbFG
?
注意:如果把下面的modify换成 remove的话,就可以删除某一个数据文件或者日志文件
当我们增加日志文件的话,我们使用命令 add log file (文件参数)
alter database UserBD1
modify file
(name=add_user2,size=10)
下面是缩小数据文件或数据库命令,
use UserBD1
dbcc shrinkfile(add_user2,5)
?
dbcc shrinkdatabase(UserBD1,100)
删除数据库
drop database UserBD1
二、数据库表
1、创建数据库表
注意: identity(10,5) 表示初始值为10,然后按照5的速度往上涨。默认为自增1.
对于表名,一般#开头的表示临时表,它是存在于内存空间中的,随之数据库的关闭,自动关闭,不会保存到硬盘中。
建立表格
use UserBD1
create table mag_dept
(
DepId int identity primary key,
DepName varchar(50) NOT NULL,
DepManager varchar(50) ,
DepTel varchar(24),
)
?
create table mag_emp
(
EmpId int identity,
EmpName varchar(30) NOT NULL,
SexInfo char(2),
EmpAge tinyint,
DepId int,
EmpRole varchar(20),
PermitStr varchar(100)
)
?
create table mag_info
(
MagId char(9),
MagName varchar(50) NOT NULL,
DesignerName varchar(30),
DesFinishDate datetime,
PubDate datetime,
DepId int
)
?
create table mag_doc
(
DocId int identity,
DocTitle varchar(180),
AuthorName varchar(30),
DocText text,
WordsSum int,
EditorName varchar(50),
EditFinishDate datetime,
ColumnName varchar(50),
DepId int,
MagId char(9)
)
字符型 char varchar
日期时间类型 datetime smalldatetime
数值类型 int samllint tinyint float real decimal numeric money samllmoney
二进制类型 binary varbinary
位型 bit
文本型 text
图像型 image
时间戳型 timestamp
?
添加列
alter table mag_emp
add ID char(18)
?
删除列
alter table mag_emp
drop column ID
?
修改列的属性
alter table mag_info
alter column PubDate smalldatetime
?
?
更改列名和表名
use UserTest
create table test
(
number int identity,
stu_name varchar(10),
class varchar(20)
)
use UserTest 这一句不用加,不然会报错
?
更改列名的写法 表名.列名
Sp_rename ‘表名.列名‘ , 新的列名
sp_rename ‘test.class‘,class_no
?
更改表名 中间的逗号不可以省略
Sp_rename 原表名 , 新表名
sp_rename test,student
总共有5种约束,分别是 primary key 主键约束 、unique 该列不允许出现重复、
foreign key 外键约束,保证数据表间数据的一致性 、check定义表中某些列的数据范围、 default 为列的数据提供默认值。
可以实现实体完整性、参照完整性、自定义完整性。
建立约束:
1)实体完整性
增加主键约束
use UserBD1
alter table mag_dept
add primary key (DepId)
?
联合主键的定义
use UserBD1
create table grade
(
sno varchar(10) NOT NULL ,
cno varchar(10) ,
gmark numeric(5,1) -- 表示整数有位,小数位,其中这里的逗号可有可无,但是上面的逗号不可少
primary key (sno,cno)
)
?
不允许重复出现
use UserBD1
alter table mag_dept
add unique (DepManager)
2)参照完整性
[constraint 约束名] foreign key (列名1[,列名2]) references 表名(列名1[,列名2])
定义外键
use UserBD1
alter table mag_emp
add foreign key(DepId) references mag_dept(DepId)
?
use UserTest
create table mag_dept
(
DepId int identity primary key,
DepName varchar(50) NOT NULL,
DepManager varchar(50) ,
DepTel varchar(24),
)
?
create table mag_emp
(
EmpId int identity,
EmpName varchar(30) NOT NULL,
SexInfo char(2),
EmpAge tinyint,
DepId int references mag_dept (DepId), //省略foreign key
EmpRole varchar(20),
PermitStr varchar(100)
)
3)用户自定义完整性
自定义数据范围约束,将年龄值固定在到1与100之间 (注:这里是自主命名的,前面几个都不是自主命名)
use UserTest
alter table mag_emp
add constraint ck_age check (EmpAge between 1 and 100)
?
为某个属性添加默认值
use UserTest
alter table mag_emp
add default ‘编辑‘ for EmpRole
删除约束 如果是自主命名的,直接删去约束名即可,如果不是,需要删除系统自动生成的约束名
注意斜杠的个数,不然容易弄错
use UserTest
?
alter table mag_emp
drop constraint FK__mag_emp__DepId__03317E3D
总结:建立约束总共有2种方法,其一是使用 cteate table 命令在建立表的同时一同定义。其二是利用alter table 命令针对已经建立的表添加约束。
还有就是不自主定义约束名时,需要省略 constraint 约束名。
索引分成两类:聚集索引(物理存储方式)与非聚集索引(逻辑存储方式)。
聚集索引:顺序存储结构。非聚集索引:线性结构。
?
Create [unique][clustered|noclustered] index 索引名 on 表名(列名1,列名2)
?
默认建立的是非唯一的非聚集索引。建立索引时必须先建立聚集索引,然后建立非聚集索引。
而且,当一个数据表建立主键后,自动建立了一个唯一的聚集索引。当使用了unique 约束后,自动建立一个非聚集索引。
建立与删除索引 虽然标红了,但语法正确
use UserTest
create index age_index on mag_emp(EmpAge)
?
drop index 表名.索引名
drop index mag_emp.age_index
Drop table 表名
标签:
原文地址:http://www.cnblogs.com/zhuxuekui/p/4397422.html