数据库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 --唯一列

 

posted @ 2015-04-30 10:03  XCml  阅读(310)  评论(0编辑  收藏  举报