学习 SQL server 笔记
数据基本 CRUD
1.新增数据
1 2 3 4 5 6
| use 数据库名
go
insert into 表名([name],sex,age).value('张三','男','20')
|
2.查询数据
1 2 3 4 5 6 7 8 9
| select * from 表名 //查询表里面的全部数据
select [name] from 表名 //查询表里面的name关键字
select sex from 表名 //查询表里面的性别关键字
select age from 表名 //查询表里面的年龄关键字
|
3.修改数据
1 2 3
| update 表名 set [name]='小红',sex='女',age='18' where id=1 ///修改 id 为 1 的数据
|
4.删除数据
1 2 3
| delete 表名 where id=1 //使用 delete 删除数据时一定给 where 条件
|
进阶查询
1.别名查询
1 2 3 4 5 6 7 8
| select [Id] as '标识ID', [name] as '名称' [sex] as '性别', [age] as '年龄' from 表名
|
2.条件查询
1 2 3 4 5 6 7 8 9
| select [Id] as '标识ID', [name] as '名称' [sex] as '性别', [age] as '年龄' from 表名 where age=18
|
3.范围查询
1 2 3 4 5 6 7 8 9 10
| select [Id] as '标识ID', [name] as '名称' [sex] as '性别', [age] as '年龄' from 表名 where age > 18 and age < 24
|
4.null判断
1 2 3 4 5 6 7 8
| select [Id] as '标识ID', [name] as '名称' [sex] as '性别', [age] as '年龄' from 表名 where age is null
|
5.查询前多少行/按比例查询结果
1 2 3 4 5 6
| select top 3 * from 表名 // 查询前三条数据
select top(50) percent * from 表名 // 查询总条数的百分之五十
|
6.case when 判断
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| //进行比较分支
select top(1000) [Id] ,[name] //名称 ,[course] //班级 ,[score] //分数 ,case when score <90 then '不及格' when score >=90 and score <120 then '及格' when score >=120 and score <130 then '良好' when score >=130 then '优秀' else '鸭蛋' end as '等级' from 表名 order by [score] asc //根据分数进行升序
//进行对比分支
select top(1000) [Id] ,[name] ,[course] ,[score] ,case course when '高级班' then '走向高级开发' when '架构班' then '走向架构师' when '全栈班' then '走向全栈开发' end '开发方向'
|
7.in查询
1 2 3 4 5 6 7
| select top(1000) [Id] ,[name] ,[course] ,[score] from 表名 where id in (4,5,6,7,8) //指定查询 id 为 (4,5,6,7,8)的数据
|
8.like模糊查询
**模糊查询笔记和通配符 % 一起使用才有效果 % 表示可以匹配任何字符
1 2 3 4 5 6 7
| select top(1000) [Id] ,[name] ,[course] ,[score] from 表名 where course like '高%'
|
9.with 关键字查询
1 2 3 4 5 6 7 8 9 10 11
| with tt as (select top(1000) [Id] ,[name] ,[course] ,[score] from 表名)
select * from tt
//whit个关键字查询 相当于给一段语句设置了一个别名 后期进行链表或者复杂的查询都方便一些
|
10.子查询/exists关键字查询
1 2 3 4 5 6 7 8 9 10 11 12 13
| //子查询
select * from 表名 where id in (select Id from 表名 where [name]='张三')
//exists 关键字
select [Id] ,[name] ,[course] ,[score] from 表名 t1(表别名) where exists (select [Id],[name],[course],[scors] from 表名 t2(表别名) where t1.id = t2.id and t2.name = '张三')
|
11.复制新表/表数据复制
1 2 3 4 5 6 7 8 9
| //复制新表
select * into 复制表的表名 from 被复制的表名
//把另外一个结构相同的表数据复制到指定表中
insert 被插入数据的表名 select [name],[course],[scors] from 被复制数据的表名
|
12.distinc 同一列去除重复
1 2 3
| select distinct course from 表名 order by couse desc
|
13.排序
1 2 3 4 5 6 7
| select * from 表名 order by score asc(升序)
select * from 表名 order by score desc(降序)
select * from 表名 order by [name],course asc (可以多列排序,从左往右优先级)
|
14.聚合查询分组
1 2 3 4 5
| // group by (分组)
select [name],sum(score) score from 表名 group by [name]
|
15.分页查询
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| 分页查询一
declare @pagesize int; //每一页数据数量 select pagesize=5; //查询页面数据的条数
declare @pageindex int; //第几页 select @pageindex=1; //第一页
select top(@pagesize) * from 表名 where id not in ( select top(@paegsize * (@pageindex -1)) id from 表名 order by id )
order by id
分页查询二
declare @pagesize int; select @pagesize=5;
declare @pageindex int; select @pageindex=1;
select top(@pagesize) * from ( select row_number() over (order by score) as rownumber,* from ScoreInfo )A
where rownumber > ((@pagesize)*(@pageindex) - 1)
分页查询三
declare @pagesize int; select @pagesize=5;
declare @pageindex int; select @pageindex=1;
select * from 表名 order by Id
offset (@pagesize * (@pageindex - 1))
rows fetch next (@pagesize)
rows only
|
16.union/umion all 操作