数据库sql整体整理
create database 数据库 /* 数据库的服务、数据库文件、 */ --修改表添加列 create table biao ( name varchar(50) ) alter table biao add sex varchar(20) --往表里增加一列 alter table biao drop column sex --在表里删除一列 select*from biao insert into biao values('王文姿','女') insert into biao values('王啊沙发','女') --下划线_代表一个字位符,在大范围中使用。。 模糊查询 select *from biao where name like '王__' --两个下划线 会显示'王文姿' select *from biao where name like '王___' --三个下划线 会显示'王啊沙发' --聚合函数 --count(*) sum() avg() max() min() 一般是对某一列数字列进行操作 --日期时间函数 select DATEADD(DAY,5,'1999-08-31')--在原来的基础上加5天 select DATEADD(week,5,'1999-08-31')--在原来的基础上加5周 select DATEDIFF(WEEKDAY,'2015-04-23','2015-05-01') --两天之间相差几天(weekday),相差几周(week) print datename(weekday,'2015-4-23') --返回今天星期几-- print datename(week,'2015-4-23') --返回这是今年的第多少个周 print datepart(weekday,'2015-4-23') --返回这是今年的第多少个周 返回int类型的 datepart print getdate()--获取当前系统时间 print isdate('1999-111-213')--判断一个值是否为正确的日期时间 1:正确 0:错误 print sysdatetime() --获取更为详细的时间 --截取字符串,以及类型转换 select LEFT('abcdefg',2) --从左边开始截取,截取两位 select right('abcdefg',2) --从右边开始截取,截取两位 select LOWER('abcD') --转换为小写 select upper('abcD') --转换为大写 select len('abcD') --获取字符串的长度int类型 select LTRIM(' dsfsd ssdf s ') --去左空格 select RTRIM(' dsfsd ssdf s ') --去右空格 select Substring('abccceecfddd',5,2) --索引从1开始, 截取字符串 select REPLACE('遂非文过哦','过','爱上放大') --替换字符串 select REPLICATE('啊沙发',10) --以指定的次数打印前面的内容 print STR(123.456,5,1) --将123.456转换为5位的字符串,小数点也占一位,最后保留1位小数 select SPACE(100) --打印100个空格 print 'asfaf'+'打发' --拼接 print reverse ('abcde' ) --翻转 print patindex('%啊的沙发%','123啊的沙发123') --显示'啊的沙发'在哪个位置 print stuff('abcdefghijklmnopqrst',4,2,'zzzz') --在索引为4这个位置删除两个值然后插入ZZZZ --类型转换函数 print cast('123'as int)+12 --类型转换 print cast(123 as varchar(20))+'123' print convert(int,'123')+123 --数学函数 select ABS(-13) --取绝对值 select ceiling(1.23) --取上限,天花板 select FLOOR(1.9) --地板 select PI()--取π select RAND(10) --取随机数,随机出一个种子出来 一定会随机出0~1之间的数 select RouND(1.234567,3) --四舍五入到第3位 print sqrt(2) --取平方根 print square(4) --取平方 select sname,'出生日期为'+cast(YEAR(sbirthday)as varchar(20))+'年'+cast(MONTH(Sbirthday)as varchar(20))+'月'+cast(DAY(Sbirthday)as varchar(20))+'日' from student --子查询: --1.当放在where后作为筛选条件的,就是查询出一列数据当做参数来使用 --2.若放在from后面,加括号的号,可以查询出一个结果集,当做一个临时表来使用 --3.如果放在select和from中间的话,可以根据原来要显示的列数据,进行子查询查询出一个对应的值来改变显示结果。 --连接查询 横向连接:join on inner 内连接:只把相关的连接 left 左连接: 在内连接基础上把左表显示全 right 右连接: 在内连接基础上把右表显示全 纵向连接: union 1.列数要对应 2.数据类型要对应 --存储过程 定义变量:declare @bianliang 数据类型 变量赋值:set @bianliang=123 select 语句赋值 运算符: 数学运算符: + - * / % 比较运算符: > < >= <= != <> !> !< 逻辑运算符:and or ! not 流程语句: if else while 存储过程格式 create proc 存储过程名 --输入参数 --输出参数 as 流程语句 go exec 存储过程名 ---视图:一个虚拟的表,实际视图中放的就是一个查询语句 create view 视图名 as 查询语句 go --触发器:是一个特殊的存储过程,他是通过增删改的动作来引发。 create trigger 触发器名 on instead of|after/for 动作 update/insert/delete as 存储过程内容 go --事务:为了让一个流程完整的执行 begin tran if @@ERROR>0 begin rollback tran end else commit tran --约束: 主键 外键 唯一列 check check(degree<=100and degree>=0) --在定义表的时候写,紧跟在定义的degree后面 not null identity(1,1) --自增长 unique --唯一列