右键服务器下的数据库节点,在弹出的窗口中设置新建数据库的属性。
在查询编辑器中执行查询语句新建数据库,执行后在对象资源管理器中刷新即可选择新建的数据库。
create database testDb1
(
name = testDb1_data,
filename = '从盘符开始的物理文件路径\testDb1.ss' --设置数据库主文件的文件名和物理路径,自动创建文件
/* 有需要可以设置更多属性,比如下面几个 */
size = 1mb, --系统创建数据库时,给主文件分配的初始空间大小
maxsize = 64mb, --主文件的最大空间
filegrowth = 15% --文件自动增长的幅度
)
右键数据库,选择属性,在弹窗里设置数据库的属性。
alter database testDb1 collate Chinese_PRC_CI_AS --数据库按中文排序
/* 添加数据库日志文件 */
alter database testDb1
add log file
(
name = 'testDb1_log', --日志文件逻辑文件名
filename = 'D:\testDb1_log.ldf', --日志文件物理文件名
size = 5mb, --日志文件初始大小
maxsize = 500mb, --日志文件最大大小
filegrowth = 5 --启动自动增长
)
/* 删除日志文件 */
alter database testDb1
remove file testDb1_log
alter database testDb1 modify file
(
name = 'testDb1_data', --通过修改数据库文件,增加数据库容量
maxsize = 128mb
)
右键数据库,选择删除,在弹出的对话框中判断是否删除备份。
/* 方法一 */
drop database testDb1
/* 方法二:当直接删除报错时,尝试下面的语句 */
declare @dbname sysname
set @dbname = 'testDb1' --填写无法删除的数据库名称
declare @s nvarchar(1000)
declare tb cursor local
for
select s = 'kill ' + cast(spid as varchar)
from master.dbo.sysprocesses
where dbid = DB_ID(@dbname)
open tb
fetch next from tb into @s
while @@fetch_status = 0
begin
exec (@s)
fetch next from tb into @s
end
close tb
deallocate tb
exec ('drop database [' + @dbname + ']')
右键数据库下的表节点,在表设计器中填写列名、数据类型、是否为空以及其他属性。
create table testTable1
(
id varchar(10) not null primary key,
name nvarchar(50) not null,
age int not null,
joindate date null,
note nvarchar(50) null
)
右键要修改的表,选择设计,在窗口中增/删/改列,设置索引等。
/* 添加列 */
alter table testTable1 add data float null
/* 修改列 */
alter table testTable1 alter column data decimal null
--修改建立了索引的列时,要先将索引删除再修改
alter table testTable1 drop constraint PK_testTable1_id
alter table testTable1 alter column id int not null
/* 删除列 */
alter table testTable1 drop column data
右键要删除的表,选择删除。删除之前,确定所有的依赖都已经被删除之后,点击确认删除。
/* 删除数据表中的全部数据 */
delete from t01
/* 删除数据库表 */
drop table t01
右键要修改的表,选择设计,右键要设置为主键的列,选择设置主键。
右键要修改的表,选择设计,右键主键列,选择删除主键。
/* 创建表时设置主键 */
create table testTable1
(
id varchar(10) not null primary key, --primary key 标识此列为主键,但修改和删除主键时比较麻烦
name nvarchar(50) not null,
age int not null,
joindate date null,
note nvarchar(50) null
)
/* 单独设置主键 */
alter table testTable1 add constraint PK_testTable1_name_age primary key (name, age) --设置主键约束的名称为PK_testTable1_name_age,方便后续修改和删除
/* 修改主键 */
--先删除原有主键
alter table testTable1 drop constraint PK_testTable1_name_age
--再新建主键
alter table testTable1 add constraint PK_testTable1_id primary key (id)
主键约束(PRIMARY KEY):定义数据库表的主键,主键的所有列都不能为null
constraint constraint_name
primary key (column_name[,…n])
惟一性约束(UNIQUE):用于限制某一列或某几列的组合值惟一
constraint constraint_name
unique (column_name[,…n])
检查约束(CHECK):为某一列或整个表中的值设置限制条件
constraint constraint_name
check (logical_expressions)
默认值约束(DEFAULT):若执行插入操作时没有提供该列的值,系统自动插入默认值
constraint constraint_name
default constraint_expression [for column_name]
右键要设置约束的表,选择设计,右键要设置索引的列,选择“索引/键”或“CHECK约束”。在弹出的窗口中添加或删除索引。
/* 创建表时设置约束 */
create table testTable2
(
id varchar(10) not null
constraint PK_testTable1 primary key,
name nvarchar(50) not null
constraint UK_testTable1_name unique,
age int not null
constraint CHK_testTable1_age check (age > 0),
joindate date null
constraint DF_testTable1_date default getdate(),
note nvarchar(50) null
)
/* 单独设置约束 */
alter table testTable1 add constraint PK_testTable1_name_age primary key (id)
alter table testTable1 add constraint UK_testTable1_name unique (name)
alter table testTable1 add constraint CHK_testTable1_age check (age > 0)
alter table testTable1 add constraint DF_testTable1_date default getdate()
/* 修改约束 */
--先删除约束
alter table testTable1 drop constraint CHK_testTable1_age
alter table testTable1 drop constraint DF_testTable1_date
--再添加约束
alter table testTable1 add constraint CHK_testTable1_age check (age > 0 and age < 100)
alter table testTable1 add constraint DF_testTable1_date default null