/*****切换数据库*****/sql
use master
go -- 批处理shell
/*****指定位置新建文件夹*****/
exec xp_cmdshell 'mkdir E:\222',no_output -- 调用系统已存在的存储过程数据库
/*****检测是否存在****/
-- 检测数据库
if exists (select * from sysdatabases where name = 'SQL')
-- 检测表,视图,存储过程,索引
if exists (select * from sysobjects where name = 'SQL')ide
/*****删除数据库******/
drop database SQL
go函数
/*****新建数据库******/spa
if exists(select * from sysdatabases where name = 'AAA') -- 查询方法
drop database AAA -- 若是返回有数据执行删除数据库
create database AAA -- 建立数据库
on primary
(
name = 'aa.mdf', -- 数据库名称 *.mdf
filename = 'E:\TTT\aa.mdf', -- 保存路径
size = 10mb, -- 初始大小
maxsize = 100mb, -- 增加最大值
filegrowth = 15% -- 增加率
)
log on
(
name = 'aa.ldf' -- 日志文件名称 *.ldf
,filename = 'E:\TTT\aa.ldf' -- 保存路径,基本同上
,size = 1mb
,maxsize =10mb
,filegrowth = 15%
)
go.net
/*****新建表******/日志
create table aaa
(
-- 列名 类型 非空 主键 标识列(开始数,增加率)
bb int not null primary key identity(1,1) ,
cc varchar(20) not null ,
dd varchar(50) not null check (len(dd)>9), -- 添加 检查约束 (值 = '' or and '值')
ee nvarchar(20) not null default ('默认'), -- 添加 默认约束 ('默认值')
rr bit not null unique(rr), -- 添加 惟一约束 (列名)
-- 外键(列名) 来自哪一个表的哪一个(列名)
oo int not null foreign key(oo) references aaa(bb) -- 添加 外键约束
)
go排序
select * from sql -- 查看表
insert into sql values ('') -- 插入数据 索引
/*****删除表***/
drop table sql
go
/*****建立视图******/
drop view vw_sql -- 删除试图
go
create view vw_sql -- 建立视图
as -- 必须带as 结尾必须带go
-- T-SQL语句(各类子查询嵌套)
select sqll,sqql from sql
go
select * from vw_sql -- 查看视图
/******建立索引******/
drop index sql.ix_sql -- 删除索引
create clustered index ix_sql -- 建立时指定是否汇集索引 clustered|noclustered
on sql(ssql) -- 建立表的时候指定了主键,则该列默认为汇集索引
with fillfactor = 20 -- 汇集索引 速度比 非汇集索引快,比自动建立的快上一点点
go -- with 填充因子 0~100 基本不超过80
select * from sql -- 利用索引查看信息
with(index = ix_sql) -- with(index = 索引名) 查看后面可跟着条件 where
/******建立存储过程*******/
drop proc proc_sql -- 删除存储过程
go
create proc proc_sql -- 建立存储过程
as
-- T-SQL语句
select * from sql
go
exec proc_sql -- 查看存储过程
-- 无参的存储过程
create proc proc_sql1
as
select * from sql
go
exec proc_sql -- 使用
-- 有参的存储过程
create proc proc_sql1
@error int = null -- 输入参数
as
declare @rro int -- 定义变量
select @rro = '查询获得的值' from sql where sqll = @error -- 利用传进来的值做为条件筛选获得值再进行赋值
print cast(@rro as nvarchar(20)) -- 打印输出,须要转换类型
go
exec proc_sql @error = '须要传进去的值' -- 使用
-- 有输出参数的存储过程
@err int output -- 做为输出参数必须带有output关键字才正宗!
@error int = null -- 输入参数
as
select @err = '查询获得的值' from sql where sqll = @error -- 输出参数接收查询获得的值,同时输入参数也须要在使用的时候赋值
go
declare @i int -- 做为有性格的输出参数,必须先建立一个小弟来接收
exec proc_sql @error = '须要传进去的值',@err = @i output -- 使用
print @i -- 同时打印出输出参数
/********事务**********/
begin transaction -- 开始事务
commit transaction -- 提交事务
rollback transaction-- 回滚事务
/********定义变量*******/
declare @error int -- 定义变量 declare @变量 类型 全局变量能自定义!通常状况下不须要!
print @error -- 局部变量
print @@error -- 全局变量
/********输出**********/
print '' -- 以文本形式输出
select '' -- 以表哥形式输出
/********赋值**********/
set -- 通常用于接收自定义的值
select -- 用于接收查询出来后的值
/*****数据类型的转换****/
CAST(@error as nvarchar(10)) -- 都是用于转换类型
convert(int,@error) -- 与sast区别在于时间类型,浮点类型 能够经过第三个参数指定转换后的样式例:convert(datetime,@error,120)
/*****if结构|while循环|case多分支*************/
if -- 条件1
else if -- 条件2
else -- 条件1,2不经过时进入
while -- 条件
break -- 直接跳出循环
continue -- 结束本次循环进入下一次循环
case
when -- 条件
then -- 条件成立时输出
else -- 不成立的输出
end
-- 例:case when @error > 0 then '正确' else '错误' end
-- 可作为条件使用例:
-- (case when @error > 0 then 1 else 0 end = 0) or ~ 若@error>0成立 输出1跟条件=0不相等则表示整个条件为假
/******子查询********/
-- 我大子查询无处不在,可以配合增删改查一块儿使用
-- 通常来讲表链接均可以用子查询代替,但反过来却不必定
-- 子查询能够出如今select,from,group by,order by,having,update,insert,dalate中
-- select (子查询) 别名* from sql where sqll = (子查询) 以上的sql中均可以出现子查询
-- 当子查询获得返回的值不仅一个的时候 = 能够替换成为 in(范围) 一样 not in 的意思表示不在范围里
-- select * from sql where sqll in (select 获得多个值 from sql where 条件)
-- exists 检测是否存在 not exists 取反的意思
--if exists (子查询)
--begin -- 当子查询数据是存在的执行sql语句1,不然执行else
-- SQL语句1
--end
--else
--begin
-- SQL语句2
--end
/*********其余*********/
begin -- 至关于括号的存在!()
end
go -- 批处理 当写好一段T-SQL语句后带上这个可怜的娃。
as -- 或 空格 别名 通常列起别名 ‘列 as’ 表的话 就是 ‘表名 别名’ 中间间隔着一个空格
union -- 合并,把两个表的数据进行合并显示
raiserror -- 自定义错误信息 例:raiserror('错误信息显示',16,1),第二个参数表示级别0~18自定义19~25系统定义,状态分红1~255种
-- 两种方法输出信息
select ''
print ''
-- 插入数据
insert into aaa(cc,dd) -- 插入数据 表名(列名)
values ('','') -- ('值')
-- 更新修改数据
update aaa -- 更改数据 表名
set cc = '' -- set 列名 = '值'
where rr = '' -- where(条件)
-- 删除数据库信息
delete from aaa -- 删除 表
where rr = '' -- where (条件)
-- 删除数据库
use master
go
drop database aaa -- 删除
-- like 模糊查询 _一个字符 % 多个字符 [1-9] 有范围的查找 [^1-9]不在范围里
-- 多列合并 select 列 + '.' + 列 from 表
-- between 值 and 值 在--之间 加入not表示取反的意思
-- in(值1,值2,值3) 可能取得值 有点相似or
-- 约束方法
-- check (len() 控制长度 and 与(两个真) or 或(一个真) not 非(全是假) < 小于 > 大于 <> != 都表示不等于)
-- 排序
-- order by (须要排序的列名) asc 顺序 desc 倒序 若是都不加入就等因而顺序排序
-- 分组
-- group by select count(*) from 表 group by sex 返回男女各有多少人--当看到题目要求‘每’的都须要分组查询
-- 先分组后排序
-- 分组筛选 having 条件 -- 先分组后筛选
-- 顺序为 where 分组 筛选
-- 查询空值条件为 where is null
-- 限制返回的行数:select top 行数 列名 from 表名
-- 限制返回提取20%值:select top 20 percent 列名 from 表名
-- 部分经常使用函数
-- 获取长度len()
-- 更成大写upper()
-- 清除空格ltrim()左边 pirim()右边 trim()左右
-- 替换字符:replace('段落','段落中的值','更替的值')
-- 返回右边指定数目 pight('段落',数值)
-- 获取指定字符的起始位置 charindex('某字符','段落') 返回下标数
-- 日期函数 dd日 mm月 yy年
-- 获取当前系统时间 getdate()
-- 日期的增长 dateadd(mm,4,'01/01/2009') 返回05/01/2009
-- 日期之间的相减 datediff(mm,'01/01/2009','05/01/2009')返回4
-- 获得日期的某一部分datepart(dd,getdate())返回当前天数
-- 获得某一天的日期用字符串表示 select dateame(DW,getdate()) 返回星期*
-- 数学函数
-- 随机数值 select right(rand(),4) right右查询 left左查询
-- 绝对值 abs(-23) 取相反数 返回23
-- 次方 power(5,2) 返回值 25
-- 平方根 sqrt(9) 返回值3
-- 系统函数
-- 转换数据类型 convert(类型,值)
-- cast(值 as 类型)
-- sum() 函数 求和 select sum(列) from 表 返回某列的值相加后的结果
-- avg() 函数 平均值 同上相似,返回列的平均值
-- count() 函数 统计 同上相似,返回列的记录数
-- max() min() 最大值最小值
-- 内连接 -- inner join 表名 on 条件 -- 外连接 -- left join 表名 on 条件 左查询左边的表数据会所有查询显示 -- right join 表名 on 条件 同上左变右