drop database 库名 删库
drop table 表名 删表
delete from 表名 删表,保留字段
truncate table 表名 删表,保留字段(更高效,删除的同时重置了表的自动增长)
--建库
create database 库名
on(
name=‘库名‘,
filename=‘地址\库名.mdf‘
)
--建表
create table 表名
(
列名 数据类型 primary key,主键约束
列名 数据类型 foreign key references 主键名(联接列列名),外键约束
列名 数据类型 not null,非空约束
列名 数据类型 unique,唯一约束
列名 数据类型 identity(开始自增值,自增变量),自增约束
列名 数据类型 default ‘默认值‘,默认约束
列名 数据类型 check(约束值或者表达式) 检查约束
)
--增加记录
insert 表名(列名A,列名B) values (‘值A‘,‘值B‘) 值与列名一一对应
--删除记录
delete from 表名 where 条件 删除符合条件的值
--修改记录
update 表名 set 列名=‘修改成为的值‘ where 条件 修改符合条件的值
--查询记录
select * from 表名 “*”号代表所有,可以是列名
--增加列
alter table 表名 add 列名 数据类型
--删除列
alter table drop column 列名
--查询
select 查询的首词
from 查询的外键表(也可以就是外键表)
inner join 查询的主键表(inner可以省略,其次还有left(显示左边表的全部)和right(显示右边表的全部))
on 联接的外键的列名=主键的列名
where 需要什么条件
like 按什么查询
group by 按什么分组
having 分组显示的条件
order by 按什么排列(asc是升序,第一个最小,desc是降序,第一个最大)
--子查询
将子查询的结果做为母表的条件进行查询
用in去检索子查询的结果
--all
<all 表示小于最小值,即小于所有
>all 表示大于最大值,即大于所有
--any和some的查询功能相同
<any|some 表示小于最大值
=any|some 表示与in运算符等价
>ang|some 表示大于最小值
--相关子查询
独立于外部主查询而存在称为非相关子查询
依赖于外部主查询的子查询称为相关子查询
当主查询执行结果行数较大时,相关子查询的效率较低
当子查询执行结果行数较大时,非相关子查询的效率较低
--exists
检查子查询是否至少会返回一行数据
返回为true或false
当子查询的行存在时,则执行主查询表达式,否则不执行
外表大内表小用in
外部小内表大用exists
--T-SQL
--局部变量(自己声明的变量)
1.声明:declare {@名字 类型,@名字 类型=值}(保存单个数据,声明后初始化为NULL)
2.赋值:set @名字=值
select @名字=值 或select @名字=值 from 表(即将查询出来的结果当值)
--全局变量(系统声明的变量,即系统变量)
@@erroy 返回上一条T-SQL的错误号,无错误为0,即执行完成为0
@@identity 返回最后插入的标志值,即插入后自动增长的主键值,没有则无法
查询
@@rowcount 返回上一条语句所影响的行数
@@servername 返回本地服务器名称
@@servicename 返回运行在注册表中的名称
(用户不能修改全局变量的值,用户也不能建立全局变量,使用一次后恢复默认值)
--打印
print:将字符串输出到消息栏(只能是字符串,系统提供convert(varchar(20),值)将money,decimal类型转换为varchar打印)
--begin end
逻辑执行块,相当于花括弧
--条件
>,<,>=,<=,=,<>(不等于)
--if...else
if 条件
begin
执行语句
end
else
begin
执行语句
end
(在sql中没有if...if.else...else)
--while循环
while 条件
begin
end
(break跳出循环,continue跳过本次循环)
--case
case 变量
when 等于值(多个用and) then 输出值
else 输出值(都不满足则输出)
end
或者做if...if.else...else用
case
when 判断(同where一样,多个用and) then 输出值
else 输出值(都不满足则输出)
end
--视图
一张由一张表或多张表生成的虚表
1.创建
create view v_视图名
as
查询的数据
2.查询
select * from v_视图名
--索引
聚集索引:主键索引(自动生成)
非聚集索引:其他索引(按表字段建立)
(聚集索引的建立是为了查询,非聚集索引的建立是为了插入)
创建
create [unique](唯一) [clustered(聚集索引)|nonclustered(非聚集索引)]
index idx_索引名
on 表名(列名A,列名B)
--事务
1.特性
原子性:一个事务或者执行或者不执行,没有执行到一半的道理
一致性:一个事务完成后则一个数据库里所有的表都要保证一致
隔离性:一个事务在查看数据时查看事务完成后的值,不查看事务中间值
持久性:一个事务完成后对数据库的改变是永久的
2.执行一个事务
begin transaction(开始一个事务)
执行内容
判断
true
commit transaction(提交事务,即完成事务)
false
rollback transaction(回滚事务,即撤销事务开始到这里执行的内容)
3.分类
显示事务:即用户创建执行的事务
隐式事务:当本事务回滚后则自动开始下一个事务
自动提交事务:每一个T-SQL语句都是一个事务,当语句执行出错则回滚到之前(即不执行)
4.作用
保证数据的一致性和可恢复性
--储存过程:需要多次使用的固定操作编写的程序或查询
1.特点
加快系统运行速度,封装复杂操作,实现模块化程序设计和代码复用,增强安全性,减少网络流量
2.系统储存过程
sp_database:列出所有数据库
sp_helpdb:报告所有数据库或指定数据库的信息
sp_renamedb:更改数据库名称
sp_tables:返回当前环境下可查询的对象列表
sp_columns:查看某个表的所有列信息
sp_help:查看某个表的所有信息
sp_helpconstraint:查看某个表的约束
sp_helpindex:查看某个表的索引
sp_stored_procedures:列出当前环境下的所有储存过程
sp_passward:修改帐号登录名
2.创建
go
if exists(select * from sysobjects where name=‘proc_储存过程名‘)
begin drop procedure proc_储存过程名 end
(判断是否存在创建的储存过程,若有则删除)
go
create proc[edure](edure可以省略) proc_储存过程名
(@变量名A 类型 (输入的值,给下面的查询判断用)
@变量名B 类型 output (output表示输出变量,即执行后拿出去的数据))
(这里可以也不带参数)
as
select @变量名B=查询值 from where 查询值[email protected]变量名A
(查询为例)
3.查询(即执行储存过程)
go
declare @变量名A 类型 ,@变量名B 类型
exec proc_储存过程名 @变量名A=值或值,@变量名B=值或值 output(注明为输出变量)
(这里的传入的值要注意顺序,乱序则需带上创建的变量名)
4.比较(视图与储存过程)
查询的数据需要进行操作用视图
仅仅进行查询用储存过程