数据库T-SQL语句

1.创建一个数据库,代码如下

create database test1   //通过这个语句我们知道了要创建一个名字为test1的数据库
on primary    //通过这个我们对主文件组进行添加
(name='test1',filename='c:\DATA\test1',size=5mb,maxsize=10mb,filegrowth=10mb),  //这里要有逗号
filegroup fgroup1   //通过这个语句我们可以创建一个次文件组,并往里面添加文件
(name='data1',filename='c:\DATA\data1',size=4mb,maxsize=10mb,filegrowth=20%),
(name='data2',filename='c:\DATA\data2',size=4mb,maxsize=10mb,filegrowth=10%)  //这里不能有对号
log on                //通过这个语句我们对事物日志进行设置
(name='test1_log',filename='c:\DATA\data3',size=3mb,maxsize=10mb,filegrowth=30%)

说明:1.一个文件只能在一个文件组里,一个文件组只能被一个数据库使用
      2.一个数据库至少有一个数据文件和一个事物日志文件
	  3.我们必须在c盘新建一个DATA文件夹来存放这些文件

2修改数据库
2.1添加新的数据文件
use test1   //表示我们对哪个数据库进行操作
alter database test1 add file  //表示对数据库test1进行增加文件的操作,这个时候我们仅仅增加了文件,并没有将文件放在哪个文件组里
(name='data4',filename='c:\DATA\data4.ndf',size=2mb,maxsize=6mb,filegrowth=1mb)

2.2添加新的数据文件到指定文件组

alter database test1 add file
(name='data5',filename='c:\DATA\data5.ndf',size=2mb,maxsize=10mb,filegrowth=10%)
to filegroup fgroup1   //这个语句指明将文件放到fgroup1里面

2.3修改数据文件的文件增长速度
alter database test1 modify file  //表示我们对于数据库的文件要进行修改
(name='data5',size=8mb,maxsize=10mb,filegrowth=20%)

3.删除数据库

drop database test1

二:对表进行操作(表是包含数据库中所有数据的数据库对象)

2.1 创建表
create table test1.dbo.kecheng
//create table表明我们要创建表,后面跟着的是表的位置和名字(我们要在数据库名和表名中间加个dbo)
(课程号 char(4) not null primary key,  //我们在这里对表的一些属性进行设置,必须有的是列名和数据类型,能否有空值我们可以不设置,默认可以有
学时 varchar(30),
学分 tinyint)

2.2 修改表
ALTER TABLE 学生管理.dbo.课程 //将“课程”表中的课程名宽度修改为 32个字符。 ALTER COLUMN 课程名 varchar(32)
ALTER TABLE 学生管理.dbo.课程 //将“学号”列增加非空约束。
ALTER COLUMN 学号  varchar(20) NOT NULL
 
   
ALTER TABLE 学生管理.dbo.选修 
ADD 学分 tinyint
ALTER TABLE 学生管理.dbo.选修 
DROP COLUMN 学分
 
   
//删除“学生”表
DROP TABLE 学生


2.3 约束
通过限制列中的数据,行中的数据和表之间的数据来保证数据的完整性。

2.3.1 主键约束:该约束强 制实体完整性。一个表中最多只能有一个主键, 主键列不允许取空值。
主键经常定义在一个列上,但是也可以定义在多个列的组合上。当主键定义在多个列上时,虽然某一个列中的数据可能重复,但是这些列的组和值不能重复。 
CREATE TABLE 成绩1  //这里我们说明对哪个表进行操作
( 学号 char(6) , 课程号 char(4),
成绩 int  CONSTRAINT PK_st PRIMARY KEY (学号,课程号)  ) //这里我们指定了增加主键的列的组合,并指定了主键的名字
 
  
ALTER TABLE 学生1 
ADD CONSTRAINT pk_st PRIMARY KEY (学号)
ALTER TABLE 学生1 
DROP CONSTRAINT pk_st


2.3.2 uniqe约束(唯一性约束)
指定表中某一个列或多个 列不能有相同的两行或两行以上的数据存在。一个表里可以有多个unique约束。

 
  
//新建表的时候加上这个约束
CREATE TABLE 学生1 
( 学号 char(6) PRIMARY KEY, 姓名 char(8) NOT NULL,
身份证号 char(20) CONSTRAINT uk _st1 UNIQUE,  //在这里我们用constraint表明我们要设置约束,约束的名字我们设置为uk—st1,约束的类型为unique
性别 bit NOT NULL  )
设置“学生”表“身份证号”字段值唯一。 
alter table 学生 
ADD constraint uk_st UNIQUE (身份证号)
 
  
ALTER TABLE 学生1 
DROP constraint uk_st1

2.3.3 foreigen key约束(外键约束)
表和表之间的引用关系可以通过FOREIGN KEY (外键)约束来实现。创建外键约束既可以由 FOREIGN KEY子句完成,也可以在表设计器中完 成。
foreign key约束要求列中的每个值在被引用表的对应列中都存在,并且被引用的列必须添加primary key约束或者unique约束。

在数据库“STUDENT1”中创建一个“成绩”表,包括:学号、课程号、成绩,并为成绩表创建外键约束,该约束把“成绩”表中的“学号”字段 和“学生”表中的“学号”字段关联起来。 
USE STUDENT1 //指明数据库
CREATE TABLE 成绩 
( 学号 char(6) constraint st_xh FOREIGN KEY references学生(学号), //references学生(学号)表明我们对学号这个列设置外键约束,并跟学生表 的学号列进行关联
课程号 char(4),
成绩 int )

将“教学库”数据库中学生表、课程表和选课 表进行关联,学生表和课程表为主表,其中的学号和课程号 字段为主键,选课表为从表,将选课表的学号和课程号字段 定义为外键。 USE 教学库 GO
ALTER TABLE 选课表
ADD   CONSTRAINT st_foreign FOREIGN KEY   (学号)  REFERENCES  学生(学号)   
ALTER TABLE 选课表 
ADD   CONSTRAINT kc_foreign FOREIGN KEY   (课程号)  REFERENCES  课程(课 程号 )   
USE STUDENT1 
GO 
ALTER TABLE 成绩 
DROP CONSTRAINT st_xh

2.3.4 check约束
CHECK约束用来限制用户输入某一个列的数据, 即在该列中只能输入指定范围的数据。
 
  
//创建表时定义check约束 在STUDENT1数据库中创建表books,其中包含CHECK约束定义。
USE STUDENT1
GO
CREATE TABLE books (书号 smallint PRIMARY KEY,
书名 varchar(50) NOT NULL,
最高价 tinyint CHECK (最高价 <= 250) /我们指定最高价这个列的值的范围
*书允许的最高价CHECK约束*/ )
通过修改STUDENT1数据库的“成绩”表,增加成绩字段的 CHECK约束。 
USE STUDENT1 
GO 
ALTER TABLE 成绩 
ADD CONSTRAINT cj_constraint CHECK (成绩>=0 and 成绩 <=100) //这个时候我们没有指明对哪个列加上这个约束,因为在后面的条件中我们可以判断出是成绩这个列
 
  
删除例5-23*创建的CHECK约束。 
USE STUDENT1 
GO 
ALTER TABLE 成绩 
DROP CONSTRAINT cj_constraint

2.3.5 default约束
当使用INSERT语句插入数据时,如果没有为某一个列指定数据,那么DEFAULT约束 就在该列中输入一个默认值。

在创建表时定义默认值约束
先在“STUDENT1”数据库中创建表ST,定义一个 “入学日期”字段的默认值为系统当前日期。 
USE STUDENT1 
GO 
CREATE TABLE ST 
(学号 char(6) NOT NULL,
姓名 char(8) NOT NULL, 专业名 char(10) NULL, 性别 bit NULL, 出生时间 smalldatetime NULL, 
总学分 tinyint NULL, 备注 text NULL, 
入学日期 datetime DEFAULT getdate() //我们在这里使用了默认值约束,入学时期这个列用getdate()的值作为默认值
 
  
alter table 学生 add constraint df_学生_性别 default '男' for 性别 // df_学生_性别为约束的名字, default表明约束的类型 ,‘男’是约束的值,for 性别表明我们是对性别这个列进行添加了默认值约束
alter table 学生
drop constraint df_学生_性别



3.对表中数据进行操作

3.1 插入数据
在“教学库”数据库的“学生表”中插入一行数据 (学号、姓名、性别、年级)为(‘0100215’、‘刘玲玲’、 ‘女’、‘10级’)。 
USE 教学库 
GO
INSERT into 学生表(学号,姓名,性别,年级) VALUES('0100215','刘玲玲','女','10级') //我们先用insert表明我们要进行插入操作,into学生表表明我们要插到学生表这个表里,后面是学生表的设计模式, values后面是具体的插入数据

3.2 update(修改)数据
 
  
在“学生”表中,将学号为 “120101”的学生姓名改为“王武” USE STUDENT1 
GO 
UPDATE 学生 SET 姓名='王武' WHERE 学号='120101' //我们通过where语句得知是对学生表里的哪个学生进行操作 将STUDENT1数据库的“学生”表中的 “性别”字段的值设为“男”。
USE STUDENT1 
GO 
UPDATE 学生 SET 性别='男‘ //我们这时没用where语句,所有就将学生表里的所有的性别都进行修改

3.3 删除数据
 
  
删除“学生”表中“120101”号学生的记 录。 USE STUDENT1
DELETE 学生 WHERE 学号 = '120101'

3.4 清空表中所有数据
truncate TABLE 学生
3.5 数据库文件的复制


你可能感兴趣的:(数据库T-SQL语句)