1.2 Transact-SQL语句的类型
查询就是获取存储在SQL Server中的数据。所有的查询都使用SELECT语句为用户提供一个结果集。一个结果集是运行SELECT语句后所得到的一个表数据集,包含行和列。 编写和运行Transact-SQL语句是向SQL Server发出查询申请的一种方法。在编写这些语句时,你将会用到下列类型的Transact-SQL语句: 数据定义语句(DDL),允许你在数据库中创建对象; 数据控制语句(DCL),允许你决定谁能查看或更改数据; 数据操作语句(DML),允许你查询或更改数据。
本课程主要讲述的是数据操作语言(DML)的语句。
1.2.1 数据定义语言(DDL)
数据定义语句(DDL)通过创建数据库、表和用户自定义数据类型来定义一个数据库。你也可以使用DDL语句管理数据库对象。DDL语句包括CREATE 、ALTER和 DROP 。 默认情况下,只有sysadmin、dbcreator、db_owner或db_ddladmin预定义角色(role)的成员才能执行DDL语句。一般不推荐其他角色的用户使用DDL语句。如果不同的用户在数据库中创建了他们自己的对象,那么每个对象的所有者都需要给予其他用户使用这些对象的权限。这将给管理工作带来沉重的负担,所以应当尽量避免发生这种情况。通过限制用户使用语句的权限,还能够避免对象所有权带来的问题。当对象所有者被从数据库删除,或者一个存储过程、视图的所有者并不拥有内部数据表的使用权的时候将导致这种问题。
下面的脚本在数据库Northwind中创建一个叫customer的表。表中包含cust_id, company、contact和phone字段。
USE northwind
CTRATE TABLE customer
(cust_id int, company varchar(40), contact varchar(30), phone char(12))
GO
1.2.2 数据控制语言(DCL)语句
数据控制语句(DCL)用于改变与某个数据库用户或角色的相关权限。
语句
描述
GRANT
允许用户能够访问数据或运行某些Transact-SQL语句。
DENY
禁止某个安全账号的访问并阻止某个用户、用户组或角色从它的组和角色成员中继承原有的权限。
REVOKE
删除一个原来设置的允许或拒绝的权限。
默认情况下,只有属于sysadmin、dbcreator、db_owner或db_secudtyadmin角色的成员才能运行这些语句。
下面的例子赋予public角色的成员查询表products的权限。
USE nothwind
GRANT SELECT ON products TO public
GO
1.2.3 数据操作语句(DML)
数据操作语句(DML)对数据库中的数据进行操作。通过使用这些语句,你可以更改或获取数据库信息。DML语句包括SELECT、 INSERT、 UPDATE 和DELETE。
默认情况下,只有属于sysadmin,dbcreator,db_owner或db_datawriter角色的成员能够运行这些语句。
下面的例子从数据库Northwind中查询category ID,product name,product ID和unitprice的值。
USE northwind
SELECT category ID, product name, product ID, unitprice FROM products
GO