数据库学完了,但是脑子里还是没有一个系统的数据库操作 概念。借着考试复习的这个机会,总结一下数据库的常用操作。内容参考上课的课件进行了整理,整篇文章会很长。


  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)