1
一、基础
2
3
1
、说明:创建数据库
4
Create
DATABASE
database
-
name
5
6
2
、说明:删除数据库
7
drop
database
dbname
8
9
3
、说明:备份sql server
10
--
- 创建 备份数据的 device
11
USE
master
12
EXEC
sp_addumpdevice
disk
, testBack, c:\mssql7backup\MyNwind_1.dat
13
--
- 开始 备份
14
BACKUP
DATABASE
pubs
TO
testBack
15
16
4
、说明:创建新表
17
create
table
tabname(col1 type1
[
not null
]
[
primary key
]
,col2 type2
[
not null
]
,..)
18
根据已有的表创建新表:
19
A:
create
table
tab_new
like
tab_old (使用旧表创建新表)
20
B:
create
table
tab_new
as
select
col1,col2…
from
tab_old definition
only
21
22
5
、说明:删除新表
23
drop
table
tabname
24
25
6
、说明:增加一个列
26
Alter
table
tabname
add
column
col type
27
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
28
29
7
、说明:添加主键:
Alter
table
tabname
add
primary
key
(col)
30
说明:删除主键:
Alter
table
tabname
drop
primary
key
(col)
31
32
8
、说明:创建索引:
create
[
unique
]
index
idxname
on
tabname(col….)
33
删除索引:
drop
index
idxname
34
注:索引是不可更改的,想更改必须删除重新建。
35
36
9
、说明:创建视图:
create
view
viewname
as
select
statement
37
删除视图:
drop
view
viewname
38
39
10
、说明:几个简单的基本的sql语句
40
选择:
select
*
from
table1
where
范围
41
插入:
insert
into
table1(field1,field2)
values
(value1,value2)
42
删除:
delete
from
table1
where
范围
43
更新:
update
table1
set
field1
=
value1
where
范围
44
查找:
select
*
from
table1
where
field1
like
’
%
value1
%
’
--
-like的语法很精妙,查资料!
45
排序:
select
*
from
table1
order
by
field1,field2
[
desc
]
46
总数:
select
count
as
totalcount
from
table1
47
求和:
select
sum
(field1)
as
sumvalue
from
table1
48
平均:
select
avg
(field1)
as
avgvalue
from
table1
49
最大:
select
max
(field1)
as
maxvalue
from
table1
50
最小:
select
min
(field1)
as
minvalue
from
table1
51
52
11
、说明:几个高级查询运算词
53
A:
UNION
运算符
54
UNION
运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当
ALL
随
UNION
一起使用时(即
UNION
ALL
),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
55
B:
EXCEPT
运算符
56
EXCEPT
运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当
ALL
随
EXCEPT
一起使用时 (
EXCEPT
ALL
),不消除重复行。
57
C:
INTERSECT
运算符
58
INTERSECT
运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当
ALL
随
INTERSECT
一起使用时 (
INTERSECT
ALL
),不消除重复行。
59
注:使用运算词的几个查询结果行必须是一致的。
60
61
12
、说明:使用外连接
62
A、
left
outer
join
:
63
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
64
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
65
B:
right
outer
join
:
66
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
67
C:
full
outer
join
:
68
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
69
70
二、提升
71
72
1
、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
73
法一:
select
*
into
b
from
a
where
1
<>
1
74
法二:
select
top
0
*
into
b
from
a
75
76
2
、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)
77
insert
into
b(a, b, c)
select
d,e,f
from
b;
78
79
3
、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)
80
insert
into
b(a, b, c)
select
d,e,f
from
b
in
‘具体数据库’
where
条件
81
例子:..
from
b
in
&
Server.MapPath(.)
&
\data.mdb
&
where
..
82
83
4
、说明:子查询(表名1:a 表名2:b)
84
select
a,b,c
from
a
where
a
IN
(
select
d
from
b ) 或者:
select
a,b,c
from
a
where
a
IN
(
1
,
2
,
3
)
85
86
5
、说明:显示文章、提交人和最后回复时间
87
select
a.title,a.username,b.adddate
from
table
a,(
select
max
(adddate) adddate
from
table
where
table
.title
=
a.title) b
88
89
6
、说明:外连接查询(表名1:a 表名2:b)
90
select
a.a, a.b, a.c, b.c, b.d, b.f
from
a
LEFT
OUT
JOIN
b
ON
a.a
=
b.c
91
92
7
、说明:在线视图查询(表名1:a )
93
select
*
from
(
Select
a,b,c
FROM
a) T
where
t.a
>
1
;
94
95
8
、说明:between的用法,between限制查询数据范围时包括了边界值,
not
between不包括
96
select
*
from
table1
where
time
between
time1
and
time2
97
select
a,b,c,
from
table1
where
a
not
between
数值1
and
数值2
98
99
9
、说明:
in
的使用方法
100
select
*
from
table1
where
a
[
not
]
in
(‘值1’,’值2’,’值4’,’值6’)
101
102
10
、说明:两张关联表,删除主表中已经在副表中没有的信息
103
delete
from
table1
where
not
exists
(
select
*
from
table2
where
table1.field1
=
table2.field1 )
104
105
11
、说明:四表联查问题:
106
select
*
from
a
left
inner
join
b
on
a.a
=
b.b
right
inner
join
c
on
a.a
=
c.c
inner
join
d
on
a.a
=
d.d
where
..
107
108
12
、说明:日程安排提前五分钟提醒
109
SQL:
select
*
from
日程安排
where
datediff
(minute,f开始时间,
getdate
())
>
5
110
111
13
、说明:一条sql 语句搞定数据库分页
112
select
top
10
b.
*
from
(
select
top
20
主键字段,排序字段
from
表名
order
by
排序字段
desc
) a,表名 b
where
b.主键字段
=
a.主键字段
order
by
a.排序字段
113
114
14
、说明:前10条记录
115
select
top
10
*
form table1
where
范围
116
117
15
、说明:选择在每一组b值相同的数据中对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.)
118
select
a,b,c
from
tablename ta
where
a
=
(
select
max
(a)
from
tablename tb
where
tb.b
=
ta.b)
119
120
16
、说明:包括所有在 TableA 中但不在 TableB和TableC 中的行并消除所有重复行而派生出一个结果表
121
(
select
a
from
tableA )
except
(
select
a
from
tableB)
except
(
select
a
from
tableC)
122
123
17
、说明:随机取出10条数据
124
select
top
10
*
from
tablename
order
by
newid
()
125
126
18
、说明:随机选择记录
127
select
newid
()
128
129
19
、说明:删除重复记录
130
Delete
from
tablename
where
id
not
in
(
select
max
(id)
from
tablename
group
by
col1,col2,
)
131
132
20
、说明:列出数据库里所有的表名
133
select
name
from
sysobjects
where
type
=
U
134
135
21
、说明:列出表里的所有的
136
select
name
from
syscolumns
where
id
=
object_id
(TableName)
137
138
22
、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 中的case。
139
select
type,
sum
(
case
vender
when
A
then
pcs
else
0
end
),
sum
(
case
vender
when
C
then
pcs
else
0
end
),
sum
(
case
vender
when
B
then
pcs
else
0
end
)
FROM
tablename
group
by
type
140
显示结果:
141
type vender pcs
142
电脑 A
1
143
电脑 A
1
144
光盘 B
2
145
光盘 A

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106


107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130


131

132

133

134

135

136

137

138

139

140

141

142

143

144

145
