数据库学完了,但是脑子里还是没有一个系统的数据库操作 概念。借着考试复习的这个机会,总结一下数据库的常用操作。内容参考上课的课件进行了整理,整篇文章会很长。
1.数据库创建管理
CREATE DATABASE DB
ON PRIMARY
(
NAME = DB_data,
FILENAME = 'F:\DB_data1.mdf',
SIZE = 10MB,
MAXSIZE = UNLIMTED
),
(
NAME = DB_data2,
FILENAME = 'F:\DB_data2.ndf',
SIZE = 11MB,
MAXSIZE = 20MB,
FILEGROWTH = 2MB
)
LOG ON
(
NAME = DB_log1,
FILENAME = 'F:\DB_log1.ldf',
SIZE = 1MB,
MAXSIZE = 30MB,
FILEGROWTH = 10%
)
1.2 修改数据库
1.2.1 增加数据文件
语法:
alter database 数据库名称
add file 数据文件
[to file group 文件组名称]
add log file 日志文件
操作:
ALTER DATABASE DB
ADD FILE
(
NAME = ,
FILENAME = ,
SIZE = ,
FILEGROWTH =
)
1.2.2 增加日志文件
ALTER DATABASE DB
ADD LOG FILE
(
NAME = ,
FILENAME = ,
SIZE = ,
FILEGROWTH = ,
MAXSIZE =
)
1.2.3 修改数据文件
语法:
ALTER DATABASE 数据库名
MODIFY FILE 文件属性
操作:将数据库db1中的数据文件data2的初始大小改为10MB,最大容量为20MB,增长幅度为10%
alter database db1
modify file
(
name = data2,
size = 10,
maxsize = 20,
filegrowth = 10%
)
ALTER DATABASE DB
MODIFY FILE
(
NAME = ,
SIZE = ,
)
1.2.4 删除数据文件和日志文件
语法:
alter database 数据库名称
remove file 数据文件或日志文件的逻辑文件名
操作:删除数据库db1中的数据文件data4和日志文件log2
alter database db1
remove data4
alter database db1
remove log2
1.2.5 增加文件组
语法:
alter database 数据库名
add filegroup 文件组名
操作:在数据库db1中增加一个g2文件组
alter database db1
add filegroup g2
1.2.6 重命名文件组
语法:
alter database 数据库名
modify filegroup 文件组名
name=新文件组名
操作:将数据库db1中的文件组g2更名为g3
alter database db1
modify filegroup g2 name=g3
1.2.7 删除文件组
语法:
alter database 数据库名称
remove filegroup 文件组名
操作:删除数据库db1的文件组g3
alter database db1
remove filegroup g3
1.2.8 修改数据库名称
语法:
alter database 数据库名
modify name = 新数据库名
操作:将数据库db1的名字修改为gl
alter database db1
modify name = gl
1.3 删除数据库
语法: Drop database 数据库名 [,……n]
操作:删除数据库DB1,DB2,DB3
DROP DATABASE DB1,DB2,DB3
2.架构与基本表
2.1 创建架构
CREATE SCHEMA T2 AUTHORIZATION User1
CREATE TABLE Test(C1 INT PRIMATY KEY, C2 CHAR(4) )
GRANT SELECT TO User2
DENY DELETE TO User3;
2.2 修改架构
ALTER SCHEMA T1 TRANSFER T2.Test
2.3 删除架构
DROP SCHEMA T2
2.4 创建基本表
2.4.1 表约束
类型:
主键(PRIMARY KEY)约束
惟一(UNIQUE)约束
外键(FOREIGN KEY)约束
检查(CHECK)约束
说明:非空和默认值也可看成是约束。
创建表约束的方法:新建表时,在单列后创建约束或者在所有列之后,再创建约束;如果表已存在,只能通过修改表,添加约束。
语法:
create table 表名
(字段名 类型[(长度)] [,……n])
操作:
CREATE TABLE Student
(
SNO CHAR(7) PRIMATY KEY,
SNAME NCHAR(5) NOT NULL,
SID CHAR(18) UNIQUE,
SEX NCHAR(1) DEFAULT 'MAN',
SAGE TINYINT CHECK (SAGE >= 15 AND SAGE <= 40)
SDEPT NVARCHAR(20)
)
CREATE TABLE Course
(
cno CHAR(6) PRIMARY KEY,
cname NVARCHAR(20) NOT NULL,
credit NUMRIC(3,1) CHECK (credit > 0),
senester TINYINT
)
CREATE TABLE SC
(
sno CHAR(7) NOT NULL,
cno CHAR(9) NOT NULL,
grade TINYINT,
PRIMARY KEY (sno, cno)
FOREIGN KEY (sno) REFERENCES Student (SNO)
FOREIGN KEY (cno) REFERENCES Course (cno)
)
2.4.1.1 PRIMARY KEY
主键约束的作用:
1.不允许输入重复的值
2.不能取空值 (当主键是由多个属性组成时:某一属性上的数据可以重复,但其组合必须是惟一的;每个属性的值都不能为空。)
3.一个表上只能有一个主键。
2.4.1.2 UNIQUE
惟一性约束的作用:保证列中不会出现重复的数据。
主键约束与惟一性约束的区别:
1.一个表中只能定义一个主键约束,但可以定义多个惟一约束。 2.定义了惟一约束的列数据可以为空值,而定义了主键约束的列数据不能为空值。
2.4.1.3 FOREIGN KEY
外间约束的作用:用于建立和强制两个表间的关联,限制外键的取值必须是主表的主键值。
2.4.1.4 CHECK
检查约束的作用: 1.用来限制列上可以接受的数据值 2.使用逻辑表达式来判断数据合法性
2.4.1.5 DEFAULT
默认约束的作用:当列值未确定且该列又不能为空时,可由系统自动为该列添加一个值
2.4.2 添加主键约束
操作:在学生情况表student中,添加“sno”的主键约束,主键约束命名为pk_student
如果表不存在
create table student
( sno char (6),
sname char (8),
ssex bit ,
sphone char(11)
constraint pk_student
primary key (sno)
)
如果表已存在
alter table student
add constraint pk_student
primary key (sno)
2.4.3 创建唯一性约束
操作:在student表中,创建“sphone”字段惟一性约束,并且将约束命名为uq_sphone
alter table student
add constraint uq_sphone
unique (sphone)
2.4.4 创建外键约束
create table sc
( sno char ( 6 ) not null references student ( sno ),
cno char ( 3 ),
grade tinyint
primary key (sno,cno),
foreign key ( cno ) references course ( cno )
)
2.4.5 创建检查约束
操作1:在student表中,设置名为ck_student的检查约束,该约束限制“性别”为man或woman
alter table student
add constraint ck_student
check (sex=man or sex=woman)
操作2:在学生与课程表sc中,添加名ck_sc j的检查约束,该约束限制“成绩”在0到100之间
add constraint ck_sc
check (grade>=0 and grade<=100)