T-SQL语言
Transact-SQL语言主要由4部分组成:
- 数据控制语言(DCL):进行安全性管理。主要语句:
GRANT、DENY、REVOKE
- 数据定义语言(DDL):进行数据任务。主要语句:
create、alter、drop
- 数据操作语言(DML):操作数据库中个对象,主要语句:
insert、update、delete
- 数据查询语言(DQL):用来对数据中的数据进行查询,主要语句:
select
除此之外,还有一些附加语言元素:运算符、变量、函数、注释等。
DCL
- GRANT:授予权限,可以把语句许可或对象许可权限授予其他用户或角色。
例如:授予用户MelanieK
创建表的权限。
USE AdventureWorks;
GRANT CREATE TABLE TO MelanieK;
GO
- REVOKE:收回权限,与GRANT功能相反,但不影响该用户或角色从其他角色中作为成员继承许可权限。
例如:在用户数据库上创建一个SCHEMA 、一个数据库用户和一个新角色。 将用户添加到该角色,向角色授予对SCHEMA 的 SELECT 权限,然后删除 (REVOKE) 角色的该权限。
CREATE SCHEMA Sales;
GO
CREATE USER Joe without login;
GO
CREATE ROLE Vendors;
GO
ALTER ROLE Vendors ADD MEMBER Joe;
GO
GRANT SELECT ON SCHEMA :: Sales TO Vendors;
GO
REVOKE SELECT ON SCHEMA :: Sales TO Vendors;
GO
- DENY:收回权限,功能与REVOKE相似,不同之处是除了收回权限外,还禁止从其他角色中继承许可权限。
例如:拒绝用户 CarmineEs 、以及 CarmineEs 已授予的 VIEW DEFINITION 权限。
USE AdventureWorks2012;
DENY VIEW DEFINITION TO CarmineEs CASCADE;
GO
DDL
- CREATE:创建数据库或数据库对象。
例如:创建my_test数据库。在创建之前如果存在名为my_test的数据,那么先删除该数据库。
USE master;
GO
IF DB_ID (N'my_test') IS NOT NULL
DROP DATABASE my_test;
GO
CREATE DATABASE my_test;
- ALTER:修改数据库或数据库对象
例如:将 AdventureWorks2012 数据库的名称更改为 Northwind。
USE master;
GO
ALTER DATABASE AdventureWorks2012
Modify Name = Northwind ;
GO
- DROP:删除数据库或数据库对象
例如:删除 Sales 数据库
DROP DATABASE Sales;
DML
- SELECT:从表或视图中查询数据。例如:从 Customers 表中选取所有列
SELECT * FROM Customers;
- INSERT:向表或视图中插入数据。例如:向CUSTOMERS表插入新的记录:
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );
- UPDATE:修改表或视图中的数据。例如:在CUSTOMERS表更新ID为6的客户的ADDRESS:
UPDATE CUSTOMERS
SET ADDRESS = 'Pune'
WHERE ID = 6;
- DELETE:从表或视图中删除数据。例如:在CUSTOMERS表中删除ID为6的客户的记录:
DELETE FROM CUSTOMERS
WHERE ID = 6;
创建数据库
一个数据库中包含三个文件:
- 主数据文件,一个数据库有且只有一个,其扩展名为.mdf
- 辅助数据文件,根据需要自由选择,当数据库很大时,可以选择多个(0,1,2…),其扩展名为.ndf
- 日志文件,用于恢复数据库所需要的事务日志信息,至少一个,其扩展名为.ld
创建数据库的方式
- 使用Management Studio
- 使用T-SQL。例如:创建一个名为pubs的数据库。
CREATE DATABASE [pubs] ON PRIMARY
( NAME = N'pubs', FILENAME = N'C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\pubs.mdf' , SIZE = 2240KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'pubs_log', FILENAME = N'C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\pubs_log.LDF' , SIZE = 560KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
- NAME =
逻辑名
- FILENAME =
文件的物理存放路径
- SIZE =
数据文件的初始大小
- MAXSIZE =
数据文件的最大大小
- FILEGROWTH =
文件的增长方式
练习
创建图书馆管理数据库tsgl
,数据库物理文件存放在D:\testdb文件夹下,其它要求如下:
文件 | 名称 | 初始大小 | 最大大小 | 增长方式 | 文件名 |
---|---|---|---|---|---|
主数据文件 | tsgl | 6mb | 不限制 | 2mb | tsgl.mdf |
日志文件 | tsgl_log | 2mb | 512mb | 15% | tsgl_log.ldf |
修改数据库
修改数据库的方式
- 使用Management Studio
- 使用T-SQL
常用的修改操作
- 修改数据库的名字,例如,将数据pubs的名称修改为
pub_db
:
ALTER DATABASE pubs
MODIFY NAME = 'pub_db'
- 添加辅助数据文件,例如,为数据pubs添加一个辅助数据文件
ALTER DATABASE pubs
ADD FILE
(NAME = N'pubs1', FILENAME = N'C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\pubs1.ndf' , SIZE = 2240KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB)
- 添加日志文件,例如,为数据pubs添加一个日志文件
ALTER DATABASE pubs
ADD LOG FILE
(NAME = N'pubs_log1', FILENAME = N'C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\pubs_log1.ldf' , SIZE = 2240KB , MAXSIZE = 400MB, FILEGROWTH = 1024KB)
练习
修改图书馆管理数据库tsgl
,将数据库的名称修改为tsgl_db,添加一个辅助数据文件和一个日志文件,将数据库物理文件存放在D:\testdb文件夹下,其它要求如下:
文件 | 名称 | 初始大小 | 最大大小 | 增长方式 | 文件名 |
---|---|---|---|---|---|
辅助数据文件 | tsgl1 | 6mb | 不限制 | 2mb | tsgl1.ndf |
日志文件 | tsgl_log1 | 2mb | 512mb | 15% | tsgl_log1.ldf |
删除数据库
删除数据库的方式
- 使用Management Studio
- 使用T-SQL,例如:删除数据库tsgl
DROP DATABASE tsgl
系统数据库
使用SQL Server Management Studio连接数据库服务后,在每一个数据库连接下,都具有该数据库服务器下的数据库,而每一个数据库下,都具有“关系图”、“表”、“视图”等数据库对象。
SQL Server中的数据库按照用途可以划分为如下两种。
- 系统数据库。
- 用户数据库。
其中,系统数据库是管理和维护 SQL Server所必需的数据库,用户数据库是用户自己建立的数据库。
系统数据库。
Master数据库
Master数据库记录SQL Server系统的所有系统级别信息,包括如下三类。
- 所有的登录账户和系统配置设置。
- 所有其他的数据库及数据库文件的位置。
- SQL Server的初始化信息。
Tempdb 数据库
Tempdb数据库保存所有的临时表和临时存储过程,以及临时生成的工作表。
Tempdb数据库在SQL Server 每次启动时都重新创建。
Model 数据库
Model数据库可用于在系统上创建的所有数据库的模板,例如,使用SQL语句创建一个新的空白数据库时,将使用模板中规定的默认值来创建。
Msdb 数据库
Msdb数据库供 SQL Server代理程序调度警报、作业及记录操作时使用,另外有关数据库备份和还原的记录,也会写在该数据库里。
Resource 数据库
Resource数据库是一个特殊的数据库,并且是一个只读数据库,它包含了SQL Server 中的所有系统对象,这些系统对象物理上存在于Resource数据库中,但是在逻辑上,它们却出现在每个数据库的 sys 架构中,所以,Resource数据库是“隐藏”了的数据库,我们无法使用查看所有数据库的SQL命令等方法看到它。
总结
- 了解T-SQL语言的组成部分
- 创建数据库
- 修改数据库
- 删除数据库