1 基础
2 创建数据库
3 /****** 创建数据库******/
4 CREATE DATABASE [PlateFormsExpress] ON PRIMARY
5 (
6 NAME = N'PlateFormsExpress', /*数据名称*/
7 FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\PlateFormsExpress.mdf' , /*文件路经*/
8 SIZE = 2304KB , /*大小*/
9 MAXSIZE = UNLIMITED, /*最大 UNLIMITED 是无限*/
10 FILEGROWTH = 1024KB )
11 LOG ON /*日志*/
12 ( NAME = N'PlateFormsExpress_log',
13 FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\PlateFormsExpress_log.LDF' ,
14 SIZE = 576KB ,
15 MAXSIZE = 2048GB ,
16 FILEGROWTH = 10%)
17 GO
18 删除数据库
19 /****** 删除数据库******/
20 IF EXISTS (SELECT name FROM sys.databases WHERE name = N'PlateFormsExpress')
21 DROP DATABASE [PlateFormsExpress]
22 GO
23
24 分离数据库
25 /*********分离数据库**********/
26 sp_detach_db
27 /**附加数据库**/
28 sp_attach_db --加名称,然后完整的路经
29 修改数据库
30
31 /*********修改数据库**********/
32 sp_renamedb '旧名称','新名称'
33
34 备份
35 /******* 备份数据库*******/
36
37 USE master
38 GO
39 EXEC sp_addumpdevice 'DISK','TESTBACK','C:\MSSQLBACKUP\MYDATABASE.DAT'
40 --开始备份
41 Backup database PlateFormsExpress to TESTBACK
42
43 创建表
44 /*********创建表**********/
45 CREATE TABLE 表名(列名 数据类型 [NOT NULL] [Primary key],列名 数据类型 [NOT NULL] Default '')
46
47 --根据已有的表创建新表
48 CREATE TABLE 新表名 like 旧表名
49
50 CREATE TABLE 新表名 as select 列名 from 旧表 definition only
51 删除表
52 /*********删除表**********/
53 drop table tableName
54
55 增加一列
56 /*********增加一个列**********/
57 ALTER TABLE [表名] add column [列] [字段类型]
58
59 --注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,
60 --唯一能改变的是增加varchar类型的长度
61 添加主键
62 /*********添加主键**********/
63
64 Alter table [表名] add primary key([列名])
65 --删除主键
66 Alter table [表名] drop primary key([列名])
67 创建索引
68 /*********创建索引**********/
69
70 create index 索引名
71 on [表名([列名])
72 --删除索引:
73 drop index 索引名称
74
75 eg:
76 CREATE INDEX SelectIndex
77 on Userinfo(UserCode)
78 创建视图
79 /*********创建视图**********/
80
81 create view [视图名] as
82 select [表名]
83 --删除视图名
84 drop view [视图名]
85 聚合函数应用
86 --总
87 select COUNT as 总数 from 表名
88 --求和:
89 select SUM([字段]) as 总和 from 表名
90 --平均
91 select AVG([字段]) as 平均 from 表名
92 --最大
93 select MAX([字段]) as 最大值 from 表名
94 --最小
95 select min([字段])as 最小 from 表名
96
97 简单语句:
98 --选择:
99 select * from Customer where [条件][范围]
100 --插入
101 insert into Customer(Id,Name,Address,Tel) values('','','','')
102 insert into Customer (Id,Name,Address,Tel) select userid,username,useraddress,usertel from userinfo
103 --删除
104 delete from table1 where 条件
105 --更新
106 update [表名] set 列名=value where 条件
107 --模糊查找
108 select * from [表名] where 列名 like '%[值]%'
109 --排序
110 select * from [表名] order by 字段名 desc
111 高级查询
112 A: UNION 运算符
113 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
114 B: EXCEPT 运算符
115 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
116 C: INTERSECT 运算符
117 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
118 注:使用运算词的几个查询结果行必须是一致的
119 D、left (outer) join:
120 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
121 SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
122 E:right (outer) join:
123 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
124 F:full/cross (outer) join:
125 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
126 分组 Group by
127 注:Group by 一般与聚合函数使用
128 select COUNT(UserCode) from userinfo group by username
129 go
130
1 --1说明:复制表(只复制结构,源表名:UserInfo 新表名:f_testa) (Access可用)
2 --A
3 select * into F_testa from UserInfo where 1<>1 --(仅Sql Server使用)
4 select * from f_testa
5 go
6 --B
7 select top 0 * into F_testb from UserInfo
8 --2拷贝表 (拷贝数据,源表名:UserInfo 目标表名:f_testa) (Access可用)
9 insert into f_testa (usercode,username,userage,PassWordInfo) select
10 usercode,username,userage,'Hello' from UserInfo
11 --3 说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
12 insert into f_testa(usercode,username,userage,PassWordInfo)
13 select id,name,AgentId,Password from store..Users where store..Users.Id='222'
14
15 --4子查询
16 select usercode,username,userage from UserInfo where UserCode in
17 (select UserCode from f_testa)
18 --多表查询
19 select a.ordercode,a.OrderName,a.orderdata,b.CommonName,b.CommonCount,b.CommonMoney
20 from F_OrderCommon as a,F_OrderDetail as b where a.OrderCode=b.Ordercode
21
22 --5 外连接查询
23 select a.ordercode,a.OrderName,a.orderdata,b.CommonName,b.CommonCount,b.CommonMoney
24 from F_OrderCommon as a inner join F_OrderDetail as b on a.Ordercode=b.Ordercode
25
26 select a.ordercode,a.OrderName,a.orderdata,b.CommonName,b.CommonCount,b.CommonMoney
27 from F_OrderCommon as a left join F_OrderDetail as b on a.Ordercode=b.Ordercode
28
29 --6 between /not between
30 select * from F_OrderCommon where builddate time1 and time2 --在time1 time2之间
31 select * from F_OrderCommon where commoncode not between 111 and 333
32 --7 in 使用方法
33 select * from UserInfo where UserCode in ('22','11','00')
34 select * from UserInfo where UserCode not in ('22','11')
35 select top 10 * from UserInfo where UserCode not in(select top 30 UserCode from UserInfo)
36 --8两张关联表,删除主键已在副表中没有的信息
37 delete from F_OrderCommon where not exists(select * from F_OrderDetail where
38 F_OrderCommon.ordercode=F_OrderDetail.Ordercode)
39 --9随机取10条数据
40 select top 10 * from UserInfo order by NEWID()
41
42 --10随机选择记录
43 select NEWID()
44
45 --11删除重复的记录
46 delete from UserInfo where UserCode not in (select MAX(UserCode) from UserInfo group by UserName)
47
48 select distinct * into usercodew from f_testa
49 delete from f_testa
50 insert into f_testa select * from usercodew
51 --注: 这种操作不能有大量数据操作。
52 --12列出数据库里面所有的表名
53 select name from sysobjects where type='u' --U代表用户
54 --13列出表里面所有的列名
55 select name from syscolumns where id=OBJECT_ID('UserInfo')
56 select * from syscolumns
备注:部分SQL语句代码来自网络