使用SQL语句管理数据库
创建数据库
CREATE DATABASE 数据库名称 [ON [PRIMARY] [ <数据文件参数>[,...n] [,<文件组参数>[,...n] ] ] [LOG ON {<日志文件参数>[,...n]}] ]
也可以为"CREATE DATABASE 数据库名称"而不指定任何参数,这样,数据文件和日志文件就会被创建到SQL Server的安装路径下,其它参数都为默认值.
创建数据库时指定的数据文件大小必须最少是3MB,否则数据库会创建失败.
若指定的数据库保存路径文件夹不存在时,调用xp_cmdshell系统存储过程创建文件夹.
具体调用过程为
--启用外围配置 EXEC sp_configure 'show advanced options',1 RECONFIGURE EXEC sp_configure 'xp_cmdshell',1 RECONFIGURE GO --调用dos命令创建文件夹 EXEC xp_cmdshell 'md E:\NetBar',no_output --no_output:不用输出结果 GO --创建数据库
删除数据库
单库删除:DROP DATABASE 数据库名称
多库删除:DROP DATABASE 数据库名称1,数据库名称2,...数据库名称n
为避免创建数据库时的已存在数据库报错,先执行判断删除,再创建数据库
语法1:
--判断是否存在,存在执行删除 if exists (select * from sys.sysdatabase where [NAME] = 'NetBarDB') drop database NetBarDB GO --创建数据库
语法2:
--判断是否存在,存在执行删除 if DB_ID('NetBarDB') is not null drop database NetBarDB go --创建数据库
使用SQL语句管理表
创建表
create table 表名
(
字段1 数据类型 字段特征,
字段2 数据类型 字段特征,
...
字段n 数据类型 字段特征
)
更改表
添加列
alter table 表名
add {字段 数据类型 字段特征}[,...n]
可以向现有表添加列,若表中有数据,添加列的约束为可空(null),若表中无数据,则无限制.
删除列
alter table 表名
dropcolumn {字段}[,...n]
修改列
alter table 表名 alter column 字段 数据类型 [null|not null]
删除表
语法:DROP TABLE 表名
相同的,在为了避免在创建表时有重复表而报错,可以先删除表再创建表
语法1:
--判断是否存在,存在执行删除 if exists (select * from sys.sysobjects where [NAME] = '表名') drop table 表名 GO --创建数据库表
语法2:
--判断是否存在,存在执行删除 if OBJECT_ID('表名','table') is not null drop database NetBarDB go --创建数据库表
数据库完整性
数据库完整性是确保数据正确性和一致性的机制.
分类:
1.域完整性:列(字段)的完整性
2.实体完整性:行完整性(通过主键,唯一索引和标识字段等机制来实现的)
3.参照完整性:引用完整性
4.用户定义完整性:针对用户实际定义的特殊约束条件(通常由规则,触发器,表约束等机制来实现)
使用SQL语句为表创建和删除约束
添加约束
1.主键约束
alter table 表名
add constraint 约束名称 primary key (字段)
2.唯一约束
alter table 表名
add constraint 约束名称 unique (字段)
3.默认值约束
alter table 表名 add constraint 约束名称 default 默认值 for 字段
4.检查约束
alter table 表名
add constraint 约束名称 check (逻辑表达式)
5.外键约束
alter table 表名
add constraint 约束名称 foreign key (从表字段) references 主表表名(主表字段)
删除约束
alter table 表名
drop [constraint] 约束名称
数据库的安全管理
一个用户要访问数据库中的对象,首先要是Windows的合法用户,在此基础上,还要经过三个认证过程才能最终访问数据对象.
第一个认证是身份验证,以确定用户是否有服务器的链接权.
第二个认证是验证是否为合法的数据库用户,以确定用户是否有权访问数据库.
第三个认证是验证用户是否具有待访问数据对象的访问权限,以确定用户是否能够对该数据对象进行相应地操作.
身份验证模式
SQL Server有两种身份认证方式来认证:一种是Windows身份验证方式,另一种是:SQL Server和Windows混合身份验证方式.
登陆账号
1.创建登陆账号
create login 登录名称 with password='登录密码'
2.修改登陆账号
修改登录名及密码
alter login 登录名称
with <set_option>[,...]
启用或禁用登陆账号
alter login 登录名称 {enable|disable}
删除登陆账号
drop login 登录名称
3.数据库用户
创建数据库用户
create user 用户名称 [{for|from} login 登录名]
修改数据库用户
alter user 用户名称
with name = 用户新名称
删除数据库用户
drop user 用户名称
授权
权限的种类
数据对象权限:数据操作语言(DML)的语句权限,即select,update,delete,insert,execute等语句权限.
语句权限:主要是数据定义语言(DDL)的语句,包括create database(创建数据库),create table(创建表),create view(创建视图),create procedure(创建存储过程),backup database(备份数据库)等.
隐含权限:SQL Server内置的或在创建对象时自动生成的权限.本质上可以归于数据对象权限和语句权限.
用户权限管理
授予(grant):对用户授予某种权限
收回(revoke):对用户收回(即删除)某种权限
禁用(deny):禁止用户拥有某种权限
语法:
{grant|revoke|deny} 权限 [on 表名[(字段[,...n])]] to 数据库用户
未指定具体表就相当于对当前数据库下所有表,字段等授予select,update,insert权限.