标签:
在数据库中,对数据进行比对 2种方式
第一种方式,不对任何列进行case
select name,case when age>16 then ‘成年‘
when age<16 then ‘未成年‘ end as ‘成年‘
from Student
如果在判断多个值得时候,when(条件),谁先满足就执行谁
相当于C#里面的if else
第二种方式,直接case列
select case id
when 1 then ‘第一排‘
when 2 then ‘第二排‘
when 3 then ‘第三排‘
end from Student
相当于C#里面的switch case
1.多个then后面的数据类型要一致
在一个查询中,有另一个查询结果,这个查询就叫做主查询的子查询
select * from Student where id=(select id from class where name =‘一班‘)
小括号里面查询的列必须要一个列
一般子查询都是用在where条件后面的
select * from Student where exists(select * from class where class.id=Student.id)
select * from Student where exists(select ‘’ from class where class.id=Student.id)
EXISTS 是引用了主查询的数据进行子查询的一种方式,子查询中,只做条件判断,不做任何列的输出
select * from( (select *,ROW_NUMBER() over(order by id) as row from Student) as t
where t.row between 1 and 3
使用ROW_NUMBER()函数分出一列,然后在这一列上配合between and
把2张表或多张表的数据行按照指定的规则连接在一起
--查询学生所在的班级姓名年龄
select Student.name,age from Student join class on Student.classID=class.id
Join连接时候要满足指定的条件,如果不满足就不会出现数据
select Student.name,age,math,english,chinese from Student
join class on Student.classID=class.id
join score on Student.id=score.stuId
连接3张表
--查询学生的成绩不管有没有分数
select * from Student left join score on Student.id=score.stuId
Left join 在普通的join基础上,优先显示左边的表,如果条件满足,就显示连接之后的右表的数据,如果不满足条件,还是会显示左表数据,右表值为NULL
Right join 在普通的join基础上,优先显示右边的表,如果条件满足,就显示连接之后的左表的数据,如果不满足条件,还是会显示右表数据,左表值为NULL
--查询考试的学生
select * from Student right join score on Student.id=score.stuId
INNER join 其实就是join
CROSS join 会得出2张表的乘积行
视图是一张虚拟表,它表示一张表的部分数据或者多张表的综合数据,其结果和数据是建立在对表的查询基础上
当我们查询一个视图的时候,其实就是在查询”视图的查询的结果集”
这个结果集里面有什么列,就只能显示什么列
Insert 语句再不会影响多张表的前提下,可以用的(只影响一张表)
视图只用来做查询,一次增改才做只能针对一张表,新增进去的数据,还不能违反原始表的约束
删除一定会影响多张表的,所以是一定不可以的
DECLATR @变量名 数据类型
变量的默认值是NULL
赋值
SET @变量名=值
SELECT @变量名=值
取值
PRINT @变量名
@@ERROR 记录的是最后一个出现错误的错误号
@@IDENTITI 最后一次插入的标示值
@@MAX_CONNECTIONS 每台服务器可以同时创建的connection数量是有限的
@@ROWCOUNT 上一次语句受影响的行数
begin
print ‘好多人啊‘
end
else
begin
print ‘人好少啊‘
end
BEGIN TRANSACTION----开始事务
ROLLBACK TRANSACTION---放弃事务,放弃操作
COMMIT TRANSACTION ------提交事务
存储过程其实就像C#里面的方法,只不过实在数据库里面的方法
创建存储过程
create proc GetStu
as
select * from Student
执行存储过程
exec GetStu
alter proc GetStu --带参数的存储过程
@id int=0
as
begin
select *from Student where id=@id
end
exec GetStu 2 --调用带参数的存储过程
新增 修改 删除 查询没有触发器的
create trigger tgclass on class
after insert
as
begin
print ‘新增了一行‘
end
create trigger tgclasss on class
after update
as
begin
print ‘修改了一行‘
end
create trigger tgclasss on class
after delete
as
begin
print ‘删除了一行‘
end
标签:
原文地址:http://www.cnblogs.com/WZLYA/p/4882705.html