一、建数据库
1、使用T-SQL创建数据库 (次要数据文件是可写可不写的,根据实际情况看)
create database databasesName
on [primary]
(
--以下是主数据文件属性
name = 'database_data',
--表示主数据文件的逻辑名称
filename = '路径\database_data.mdf',
--表示主数据文件的物理路径
size = XXmb,
--表示主数据文件的初始大小
maxsize = XXmb,
--表示主数据文件的最大值
filegrowth = xx
--表示主数据文件的增长速度,可以按mb增长,也可以按百分比增长
),
(
--以下是次要数据文件属性
name = 'database_data2',
--表示次要数据文件的逻辑名称
filename = '路径\database_data2.ndf',
--表示次要数据文件的物理路径
size = XXmb,
--表示次要数据文件的初始大小
maxsize = XXmb,
--表示次要数据文件的最大值
filegrowth = xx
--表示主数据文件的增长速度,可以按mb增长,也可以按百分比增长
)
[log on]
(
--以下是日志文件的属性
name = 'database_log',
--表示日志文件的逻辑名称
filename = '路径\database_log.ldf',
--表示日志文件的物理名称
size = XXmb,
--表示日志文件的初始大小
maxsize = XXmb,
--表示日志文件的最大值
filegrowth = xx
--表示主数据文件的增长速度,可以按mb增长,也可以按百分比增长
)
二、建表
2、使用T-SQL语句创建表
create table 表名
(
列名1 数据类型 列的特征,
列名2 数据类型 列的特征,
列名3 数据类型 列的特征
……
)
列的特征(在建表的过程建立约束):
主键:primary key
外键:foreign key references 包含主键的表名(主键字段)
联合主键:constraint <主键名> primary key(字段,另一个字段)
检查约束:check (约束的范围)
默认约束:default(默认的内容)
在现有的数据表上添加约束:
alter table 表名
add constraint 约束名 约束类型 具体的约束说明
例如:
加主键约束:alter table students
add constraint pk_stuno primary key(stuno)
加唯一约束:alter table class
add constraint uq_classname unique(classname)
加默认约束:alter table students
add constraint df_sex default('男') for sex
加检查约束:alter table students
add constraint ck_age check(age between 15 and 40)
加外键约束:(主表class和从表students建立联系,关联字段为classno)
alter table students
add constraint fk_classno foreign key(classno)
references class(classno)
三、增、删、改
insert [into] 表名 [(列名)] values (值列表)
注意:
1、值列表的个数必须与列名数目保持一致
2、值列表中的值的数据类型、精度要与对应的列类型保持一致
3、可以不指定列名,但值列表中值得顺序应该与表中字段顺序保持一致
4、不应为标识列字段指定值,因为它是系统控制自动增长的
5、值列表中的数据项,应符合对应列的检查约束要求
6、如果表中某些字段设置了为非空约束,那么insert语句必须为其指定列值
7、如果一个表中某些字段设置了默认值,那么使用insert语句如何给该列插入默认值呢?
1> insert语句中不指定具体默认值的列名和列值
2> insert语句中指定列名,在值列表中使用‘default’关键字与之相对应
4、一次插入多行数据
1> insert select 语句插入多行数据
insert into <表2> [列名] select <列名> from <表1>
注意: 1、语法中<表2>必须事先存在。如果不存在,执行时将会出现错误
2、查询出的字段数目、数据类型、字段顺序,与插入列保持一致
2> select into 语句插入多行数据
select <列名> into <新表> from <原始表>
注意: 1、<新表>不能事先存在,它是在执行该语句时系统自动创建的
select identity(数据类型,标识种子,标识增量) as 列名
into <新表>
from <原始表>
3> 使用union关键字插入多行数据
insert [into] <表名> [列名]
select <值列表> union
select <值列表> union
select <值列表>
注意: 1、[列名]可以省略,如果省略列名,那么<值列表>的数据个数、顺序、数据类型必须与
表中字段顺序、数据类型保持一致
2、在union语句中,如果列名部分有默认约束列,不能试图在<值列表>中使用default关键字
设定默认值
5、使用T-SQL中update语句修改数据
update <表名> set <列名=值> [where <更新条件>]
其中:
1、<列名=值>为必选项,用于更新表中某列数据,在set后面可以出现多个,只需用逗号隔开
2、where关键字是可选的,用来限定条件,如果update语句不限定条件,表中所有数据行都将被更新
注意:
1、可以更新主键列数据,但应保证更新后的主键列数据不能出现重复信息,否则,将更新失败
2、可以更新表中外键列数据,但应保证数据在主键表中应事先存在
6、使用T-SQL中delete语句删除数据
delete from <表名> [where <更新条件>]
7、使用Truncate Table 语句删除数据
truncate table <表名>
四、查(基础篇)
8、使用select语句进行查询
select [列名] from [表名]
[where <查询条件表达式>]
[order by <排序的列名> [ASC或DESC]]
其中:
1、如果有多个列名需要用逗号隔开
2、order by 是用于排序的,可以将查询出的数据按照order by 所指定的字段进行排序,排序时还可以通过ASC
或DESC指定升序或降序排列
注意:
1、查询表中的部分列
2、如果要将表中所有列查询出来,可以在<列名>处使用‘*’字符,‘*’代表所有列
3、使用where过滤部分行数据
4、使用as字句将列转别名(还可以使用‘=’实现)
1> 使用as转别名时,如果是中文别名时,可以不写引号
2> 列名应使用英文半角引号,否则将出现错误
5、使用‘+’连接多个字段,合并成一列
6、使用TOP关键字查询表中限定行数
7、在查询结果中使用常量列
8、使用distinct关键字屏蔽重复数据
9、使用is null查询空数据
10、如果要将多个表的数据一并查出,并且以一个结果集的形式显示,可以使用union联合查询
9、对结果集进行排序
可以使用order by 字句对生成的结果集进行排序
1> 在select语法中order by后面的<排序列名>可以是字段名也可以是表达式。
2> 当有多个排序列时,需要用逗号隔开
3> ASC为升序排序,DESC为降序排序,如果不指定默认为升序
10、模糊查询
where <列名> [not] like <字符表达式>
where <列名> [not] in <[常量列表]>
where <列名> [not] between <起始表达式> and <结束表达式>
11、常用SQL内置函数
(不整理)
五、查(进阶篇:分组统计与多表关联查询)
12、聚合函数
1> sum()
2> avg()
3> max() min()
4> count(): count(*): 返回表中所有数据行的记录数
count(列名):返回指定列非空值个数
13、分组统计
select 字段列表 [聚合函数]
from 表
[where 条件]
[group by <字段列表>]
[having 条件]
[order by 字段列表 ASC|DESC]
其中:group by <字段列表>可以有多个字段,各字段用逗号隔开,它表示按多列进行分组
注意:select语句中应除聚合函数之外的所有列,应写在group by字句后面,否则将出现错误
14、多表关联查询
1> 内连接
(俩表)
select <列名>
from 表1 inner join 表2
on 表1.列名 条件运算符 表2.列名
[where 条件]
[order by 排序列]
(多表)
select <列名>
from 表1 inner join 表2
on 表1.列名 条件运算符 表2.列名
inner join 表3
on 表1.列名 条件运算符 表3.列名
……
[where 条件]
[order by 排序列]
2> 外连接
select <列名>
from 主表 left|right [outer] join 从表
on 主表.列名 条件运算符 从表.列名
[where 条件]
[order by 排序列]
3> 完全连接
select <列名>
from 主表 full [outer] join 从表
on 主表.列名 条件运算符 从表.列名
[where 条件]
[order by 排序列]
15、子查询语句(就是select查询语句的嵌套)
1> in和not in查询
2> exists和not exists
六、T-SQL编程
16、T-SQL变量
1> 局部变量
变量声明
declare @变量名称 变量类型[, @变量名称 变量类型 ……]
变量赋值
set @局部变量 = 变量值
(单个变量赋值)
select @局部变量 = 变量值 …… (多个变量赋值)(select查询语句中赋值)
注意:
1、select赋值语句不要和select语句混合使用
如:select @age = age, sex from students where stuno = '64'
错
select @age = age, @sex = sex from students where stuno = '64' 对
2> 全局变量
@@rowcount
前一条SQL语句处理的行数
@@error
前一条SQL语句报错的错误号
@@identity
最后一次插入的标识值
@@servername
本地SQL Server的名称
@@language
返回当前所用语言的名称
@@version
返回当前SQL Server的安装版本、处理器体系结构、生成日期和操作系统
17、输出语句
print 表达式
其中:表达式可以是变量、字符串或运算式等
18、流程控制语句
1> 语句块
begin
<命令行或程序块>
end
2> 条件语句
if <条件表达式>
<命令行或程序块>
[else [条件表达式]
<命令行或程序块>]
3> 循环语句
while <条件表达式>
begin
<命令行或程序块>
[break]
[continue]
[命令行或程序块]
end
4> 分支语句
case <运算式>
when <运算式> then <运算式>
……
when <运算式> then <运算式>
[else <运算式>]
end
19、批处理语句
“go”就是批处理的标志
20、注释语句
1> --
2> /* */