数据库中的有关表删除的SQL关键字有drop,delete以及truncate三个。
它们的SQL语句格式如下:(假如表名为Table_name)
drop table Table_name; --------------------完全删除表
delete Table_name;-----------------删除表内数据,保留表结构
truncate table Table_name;-----------------完全删除表内数据,保留表结构
delete from Table_name where 条件;-------------------------------删除相关数据
下面举例说明它们的区别:
首先,创建一个表Users
create table Users(
id int identity[C1] (1,1),
name varchar(20)
)
执行;再往表内插入数据:
insert into Users
values('A');
insert into Users(name)
values('B');
执行;此时select * from Users;
结果如下:
①如果执行删除语句:
delete Users;
select * from Users;
结果是
此时再插入数据:
insert into Users(name)
values('CC');
select * from Users;
结果是:
②如果执行删除语句:
truncate table Users;
select * from Users;
结果是:
此时再插入数据:
insert into Users(name)
values('CC');
select * from Users;
结果是:
③如果执行删除语句:
drop table Users;
则完全删除表,此时无论执行select * from Users;
还是insert into Users(name) values('CC');
都会提示表Users无效
注意identity是一个自增字段的关键字,通过 identity来设置参数有2个,一个是“初始值” 一个是“增量”。默认情况下insert语句中,不能对identity的字段进行赋值。当删除数据后,identity字段数据会不连续。此时,可以通过在insert 语句前执行语句set identity_insert 表名 on;
来允许对identity字段进行显式的插入动作。当执行语句set identity_insert 表名off;后,又不可以为identity字段赋值了。
第二篇:SQL语句创建数据库及修改、删除数据库
使用SQL语句:
CREATE DATABASE语句创建数据库
CREATE DATABASE database_name
[ON [PRIMARY] [<filespec> [ ,...n]
[ , <filegroup> [ ,...n ] ]
[LOG ON { <filespec> [ ,...n ] } ]
<filespec>::= {
(
NAME=logical_file_name , FILENAME = 'os_file_name'
) [ ,...n ]
}
<filegroup>::=
{
FILEGROUP filegroup_name <filespec> [ ,...n ]
}
T-SQL语法说明:
“[ ]”中的内容表示可以省略,省略时系统取默认值。
“{ }[ ,?n ]”表示花括号中的内容可以重复书写n次,必须用逗号隔开。 “|”表示相邻前后两项只能任取一项。
一条语句可以分成多行书写,但多条语句不允许写在一行。
CREATE DATABASE 数据库名
[ ON [PRIMARY]
{ ( [NAME=数据文件的逻辑名称 ,]
FILENAME=‘数据文件的物理名称’,
[SIZE=数据文件的初始大小 [ MB(默认) | KB | GB ] , ]
[MAXSIZE={ 数据文件的最大容量[ MB | KB | GB]
|UNLIMITED(不受限制) } ,]
[FILEGROWTH=数据文件的增长量[ MB | KB | GB | % ] ]
)
} [ , ?n ]
[ FILEGROUP 文件组名
{ ( [NAME=数据文件的逻辑名称 ,]
[FILENAME=‘数据文件的物理名称’, ]
[SIZE=数据文件的初始大小 [ MB | KB | GB ] ,]
[MAXSIZE={ 数据文件的最大容量 [ MB | KB | GB ]
| UNLIMITED } ,]
[FILEGROWTH=数据文件的增长量[ MB | KB | GB | % ] ]
)
} [ , ?n ]
]
LOG ON
{ ( [NAME=事务日志文件的逻辑名称 ,]
[FILENAME=‘事务日志文件的物理名称’,]
[SIZE=事务日志文件的初始大小 [MB | KB | GB ] ,] [MAXSIZE={ 事务日志文件的最大容量 [ MB | KB | GB ]
| UNLIMITED } ,]
[FILEGROWTH=事务日志文件的增长量[ MB|KB|GB| % ]]
)
} [ , ?n ]
]
说明:
ON 表示需根据后面的参数创建该数据库。
LOG ON 子句用于根据后面的参数创建该数据库的事务日志文件。
PRIMARY指定后面定义的数据文件属于主文件组PRIMARY,也可以加入用户自己创建的文件组。
NAME=‘数据文件的逻辑名称’:是该文件在系统中使用的标识名称,相当于别名。
FILENAME=‘数据文件的物理名称’:指定文件的实际名称,包括路径和后缀。 UNLIMITED 表示在磁盘容量允许情况下不受限制。
文件容量默认单位为MB字节,也可以使用KB单位。
例题一:
用T-SQL语句在C:\DATA\文件夹中创建一个教师信息数据库teacher,该数据库包含:
1、一个主数据文件逻辑名‘teacherdata1 ’,
物理名‘C:\DATA\tdata1.mdf ’,
初始容量1MB,最大容量10MB,每次增长量为15%。
2、一个辅助数据文件逻辑名‘teacherdata2 ’
物理名‘C:\DATA\tdata2.ndf ’,
初始容量2MB,最大容量15MB,每次增长量为2MB。
3、两个数据文件不单独创建文件组,即使用默认的PRIMARY组;
4、一个事务日志文件逻辑名‘teacherlog’物理名‘C:\DATA\teacherlog.ldf ’,初始容量500KB,最大容量不受限制,每次增长量为500KB。
先确认C:\DATA\文件夹已创建,在查询分析器中输入代码:
CREATE DATABASE teacher
ONPRIMARY
( NAME = teacherdata1 ,
FILENAME = 'C:\DATA\tdata1.mdf' ,
SIZE =5MB , -- 默认字节单位MB可以省略
MAXSIZE= 10 , -- 文件最大容量 10 MB
FILEGROWTH = 15% -- 增长量为文件容量15%
) ,
( NAME = teacherdata2 ,
FILENAME = 'C:\DATA\tdata2.ndf' ,
SIZE = 2 ,
MAXSIZE= 15 ,
FILEGROWTH = 2MB -- 增长量为2 MB
)
LOG ON /* 创建事务日志文件*/
( NAME = teacherlog ,
FILENAME = 'C:\DATA\teacherlog.LDF',
SIZE = 500 KB ,/* 初始容量,KB单位不能省略 */
MAXSIZE = UNLIMITED ,/* 日志文件最大容量不受限制 */
FILEGROWTH = 500 KB/* 增长量 KB 不能省略 */ )
例题2:课本P61
例题3:在C:\DATA1\文件夹中创建一个名为:
仓库库存管理数据库,要求它有3个数据文件,
其中主数据文件逻辑名为epdata1,大小为10MB,最大大小为50MB,每次增长5MB;
辅助数据文件属于FGroup文件组,文件逻辑名为epdata2,文件大小为20MB,最大大小不受限制,每次增长10%;
事物日志文件eplog,大小为20MB,最大大小为100MB,每次增长10MB。
CREATE DATABASE 仓库库存管理
ON PRIMARY
( NAME = epdata1,
FILENAME = 'C:\DATA1\epdata1.mdf' ,
SIZE = 10MB ,
MAXSIZE = 50MB ,
FILEGROWTH = 5MB ),
FILEGROUP FGroup
( NAME = epdata2,
FILENAME = C:\DATA1\epdata2.ndf , SIZE = 20MB ,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%)
LOG ON
( NAME = eplog,
FILENAME = C:\DATA1\eplog.ldf , SIZE = 20MB ,
MAXSIZE = 100MB ,
FILEGROWTH = 10MB )
例题四:阅读下面的SQL语句
create database employees on primary
(name=employee1,
filename='d:\ data\employee1.mdf', size=10,
maxsize=unlimited,
filegrowth=10%),
FILEGROUP EGroup
(name=employee2,
filename='d:\data\employee2.ndf', size=20,
maxsize=100,
filegrowth=1)
log on
(name=employeelog1,
filename='d:\data\employee1.ldf', size=10, maxsize=50,
filegrowth=1),
(name=employeelog2,
filename='d:\data\employee2.ldf',
size=10,
maxsize=50,
filegrowth=1)
用ALTER DATABASE语句设置、修改数据库
T-SQL设置修改数据库语句ALTER DATABASE的语法格式: ALTER DATABASE 数据库名
add file <文件格式> [to filegroup 文件组] | add log file <文件格式>
| remove file 逻辑文件名
| add filegroup 文件组名
| remove filegroup 文件组名
| modify file <文件格式>
| modify name new_dbname
| modify filegroup 文件组名
说明:
add file为增加一个辅助数据文件[并加入指定文件组];
<文件格式>为:
( name = 数据文件的逻辑名称
[,filename =‘数据文件的物理名称’]
[,size = 数据文件的初始大小 [ MB | KB|GB ] ]
[,maxsize={ 数据文件的最大容量[ MB | KB|GB ] | UNLIMITED } ]
[,filegrowth=数据文件的增长量 [ MB | KB | GB|% ] ]
)
在例题3的基础上进行数据库的修改。
例题3:在C:\DATA1\文件夹中创建一个名为:
仓库库存管理数据库,要求它有3个数据文件,
其中主数据文件逻辑名为epdata1,大小为10MB,最大大小为50MB,每次增长5MB;
辅助数据文件属于FGroup文件组,文件逻辑名为epdata2,文件大小为20MB,最大大小不受限制,每次增长10%;
事物日志文件eplog,大小为20MB,最大大小为100MB,每次增长10MB。
CREATE DATABASE仓库库存管理
ON PRIMARY
( NAME = epdata1,
FILENAME = 'C:\DATA1\epdata1.mdf' ,
SIZE = 10MB ,
MAXSIZE = 50MB ,
FILEGROWTH = 5MB ),
FILEGROUP FGroup
( NAME = epdata2,
FILENAME = C:\DATA1\epdata2.ndf ,
SIZE = 20MB ,
MAXSIZE = UNLIMITED, FILEGROWTH = 10%)
LOG ON
( NAME = eplog,
FILENAME = C:\DATA1\eplog.ldf , SIZE = 20MB ,
MAXSIZE = 100MB ,
FILEGROWTH = 10MB )
增加和删除文件组
增加文件组
语法:ALTER DATABASE 数据库名 add filegroup 文件组名
例:
ALTER DATABASE 仓库库存管理 Add filegroup epp1
ALTER DATABASE 仓库库存管理 Add filegroup epp2
可以写成
ALTER DATABASE 仓库库存管理 Add filegroup epp1,epp2 吗?
删除文件组
语法:ALTER DATABASE 数据库名
Remove filegroup 文件组名
例:ALTER DATABASE 仓库库存管理
Remove filegroup epp2
问:可以删除Fgroup文件组吗?
只能删除空文组
增加和删除数据文件和日志文件
1)增加数据文件和日志文件
语法:
ALTER DATABASE 数据库名
add file <文件格式>
<文件格式>为:
( name = 数据文件的逻辑名称
[,filename =‘数据文件的物理名称’]
[,size = 数据文件的初始大小 [ MB|KB|GB ] ]
[,maxsize={ 数据文件的最大容量[ MB|KB|GB ]| UNLIMITED } ]
[,filegrowth=数据文件的增长量 [ MB | KB | GB|% ] ] )
例:
增加一个辅助数据文件,文件逻辑名为epdata3,文件大小为30MB,最大大小不受限制,每次增长10%;
增加一个事物日志文件eplog1,大小为30MB,最大大小为50MB,每次增长10MB。 Alter database 仓库库存管理Alter database 仓库库存管理
Add fileAdd LOG file
( NAME = epdata3, ( NAME = eplog1,
FILENAME = FILENAME =
'C:\DATA1\epdata3.ndf' ,'C:\DATA1\eplog1.ldf',
SIZE = 30MB , SIZE = 30MB,
MAXSIZE = UNLIMITED, MAXSIZE = 50MB,
FILEGROWTH = 10%)FILEGROWTH = 10MB )
Alter database 仓库库存管理
Add file
( NAME = epdata3,
FILENAME = 'C:\DATA1\epdata3.ndf' , SIZE = 30MB ,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%)
Alter database 仓库库存管理
Add LOG file
( NAME = eplog1,
FILENAME = 'C:\DATA1\eplog1.ldf' , SIZE = 30MB ,
MAXSIZE = 50MB ,
FILEGROWTH = 10MB )
错误的写法:
Alter database 仓库库存管理
Add file
( NAME = epdata3,
FILENAME = 'C:\DATA1\epdata3.ndf' ,
SIZE = 30MB ,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%)
Add LOG file
( NAME = eplog1,
FILENAME = 'C:\DATA1\eplog1.ldf' ,
SIZE = 30MB ,
MAXSIZE = 50MB ,
FILEGROWTH = 10MB )
例:为仓库库存管理数据库,增加2个辅助数据文件,文件逻辑名为epdata4,epdata5,文件大小为30MB,最大大小不受限制,每次增长10%;
Alter database 仓库库存管理
Add file
( NAME = epdata4,
FILENAME = 'C:\DATA1\epdata4.ndf' ,
SIZE = 30MB ,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%),
( NAME = epdata5,
FILENAME = 'C:\DATA1\epdata5.ndf' , SIZE = 30MB ,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%)
2)删除数据文件和日志文件
语法:
ALTER DATABASE 数据库名 remove file 逻辑文件名
例:删除辅助数据文件epdata5.ndf ALTER DATABASE 仓库库存管理 remove file epdata5
例:删除日志文件eplog1.ldf
ALTER DATABASE 仓库库存管理 remove file eplog1
增加数据文件到指定的文件组
语法:
ALTER DATABSE 数据库名
Add file <文件格式>
ToFilegroup 文件组名(此文件组应存在)
例:
增加一个辅助数据文件,文件逻辑名为epdata6,文件大小为60MB,最大大小不受限制,每次增长10%,辅文件epdata6属于文件组epp1
ALTER DATABASE 仓库库存管理
Add file--添加数据文件加入文件组
(name=epdata6,
Filename='C:\DATA1\epdata6.ndf',
SIZE = 60MB ,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10%)
to filegroup epp1
更改数据文件和日志文件名称。
语法:
ALTER DATABASE 数据库名
Modify file
(name=逻辑名,
newname=新逻辑名)
例:修改数据库“仓库库存管理”,将辅文件epdata4,文件逻辑名修改为
Odata4。
ALTER DATABASE 仓库库存管理
Modify file
(name=epdata4,
newname=odata4)
物理名称修改
ALTER DATABASE 仓库库存管理
Modify file
(name=odata4,
Filename='c:\data2\odata4.ndf')
修改数据文件和日志文件的初始大小和增长方式
语法:
ALTER DATABASE 数据库名
modify file <文件格式>
例:
修改辅助数据文件epdata2,修改文件大小为100MB,最大大小200MB,每次增长10MB。
ALTER DATABASE仓库库存管理
modify file
(name=epdata2,
Filename='C:\DATA1\epdata2.ndf',
SIZE = 100MB ,
MAXSIZE = 200MB,
FILEGROWTH = 10MB)
修改数据文件大小,能将数据文件初始大小改小吗?
能改变epdata2所归属的文件组吗?
修改数据库名
语法:
alter database 数据库
modify name=newname
例:将数据库“仓库库存管理”改名为“仓库管理”
alter database仓库库存管理
modify name=仓库管理
EXECUTE sp_helpdb 仓库管理 --查看数据库信息
使用sql语句完成下列习题:
1)创建数据库:“text”
2)主数据文件逻辑名称:textdata1,物理位置:‘c:\data\textdata1.mdf’,初始大小1MB,最大10MB,增量1MB。
3)辅助数据库逻辑名称:textdata2,物理位置: c:\data\textdata2.ndf’,初始大小1MB,最大无限制,增量3MB。
4)事务日志文件逻辑名称:textlog,物理位置:‘c:\data\textlog.ldf’,初始大小1MB,最大5MB,增量1MB。
5)完成数据库建立
6)修改数据库“text”,增加一个文件组,文件组名:Gtext
7)增加一个辅助数据文件,文件逻辑名textdata3,物理名为:c:\data\textdata3.ndf’,初始大小为20MB,最大100MB,
增量10MB,归属于文件组“Gtext”。