常用的Sql语句
SQL语言可以分为以下3类:
DDL—数据定义语言(Create,Alter,Drop,DECLARE)
DML—数据操纵语言(Select,Delete,Update,Insert)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
1.创建数据库
USE master;
GO
Create database mydatabase
GO
2.删除数据库
USE master;
GO
drop database mydatabase
GO
3.创建备份数据的device。其中sp_addumpdevice的作用是将备份设备添加到 Microsoft SQL Server 2005 数据库引擎的实例中。第一个参数指明备份设备的类型,disk表示将磁盘文件作为备份文件。第二个参数为在 BACKUP 和 RESTORE 语句中使用的备份设备的逻辑名称。第三个参数表示备份设备的物理名称。
USE master;
GO
EXEC sp_addumpdevice 'disk', 'mydiskdump','E:\Backup\dump1.bak';
4.开始备份
backup database AdventureWorks to mydiskdump
5.创建新表
Create table Person(id int ,firstname varchar(10),lastname varchar(10),gender char(8))
6.删除新表
Drop table Person
7.复制表的结构,但是不拷贝表的数据
select * into b from ProductResults where 1<>1
select top 0 * into c from ProductResults
8.拷贝表,既复制表的结构,又拷贝表的数据
insert into b(a, b, c) select d,e,f from b
9.随机取出表中的10条记录
select top 10 * from ProductResults order by newid()
10.选择第10到第15条记录
select top 5 * from (select top 15 * from HumanResources.Employee order by EmployeeID asc) HE order by EmployeeID desc
11. UNION 运算符(结果集的并集)
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 以AdventureWorks为例:
--判断数据库中是否已经存在Gloves表,如果存在就删除掉
USE AdventureWorks ;
GO
IF OBJECT_ID ('dbo.Gloves', 'U') IS NOT NULL
DROP TABLE dbo.Gloves ;
GO
-- 创建 Gloves 表.
SELECT ProductModelID, Name
INTO dbo.Gloves
FROM Production.ProductModel
WHERE ProductModelID IN (3, 4) ;
GO
--如果使用 UNION 运算符,那么各个 SELECT 语句不能包含它们自己的 ORDER BY 或 COMPUTE 子句。而只能在最后一个 SELECT 语句的后面使用一个 ORDER BY 或 COMPUTE 子句;该子句适用于最终的组合结果集。只能在各个 SELECT 语句中指定 GROUP BY 和 HAVING 子句。
USE AdventureWorks ;
GO
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID NOT IN (3, 4)
UNION
SELECT ProductModelID, Name
FROM dbo.Gloves
ORDER BY Name;
GO
12. EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
SELECT * FROM TableA
EXCEPT SELECT * FROM TableB
13. INTERSECT 运算符(结果集的交集)
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行的顺序及行的数据类型必须是一致的。INTERSECT 运算符优先于 EXCEPT.
SELECT * FROM TableA INTERSECT SELECT * FROM TableB
SELECT * FROM TableA EXCEPT SELECT * FROM TableB INTERSECT SELECT * FROM TableC
14.列出数据库中的所有表
select name from sysobjects where type='U'
15.列出数据库中Employee表的所有列
select name from syscolumns where id=object_id('HumanResources.Employee')