sql 基础语法 alter用法和视图,透视
--查询没有被删除的学生 alter table StuInfo --修改列属性
alter column isdelete bit null alter table StuInfo --删除列
drop column isdelete alter table StuInfo --增加列
add isdelete bit not null default(0) select * from StuInfo as si
inner join Classinfo as ci on si.classId=ci.classId
where isdelete=0 --创建视图,用于二次查询
create view StuInfo_Class
as
select si.*,ci.className from StuInfo as si
inner join Classinfo as ci on si.classId=ci.classId
where isdelete=0 --视图中存储的是select语句,而不是结果集合
select * from StuInfo_Class drop view StuInfo_Class -- 删除 select * from StuInfo
select * from ScoreInfo --查询参与了考试的学生信息,子查询exists,in
select * from StuInfo
where stuId in(select distinct stuId from ScoreInfo) select * from StuInfo as si
where exists
(select * from ScoreInfo as sco where si.stuId=sco.StuId) --分页 已知:页大小(一页显示多少数据),页索引
-- 3 1,2,3,4
--利用子查询进行分页:
select * from
(
select *,
ROW_NUMBER()over(order by stuPhone asc) as rowIndex
from StuInfo
) as t1
where rowIndex between 1 and 3 --先排序后再查询在一个区间的列 --当前学生的科目成绩
create view S_S_C
as
select si.*,ci.cName,sco.score from StuInfo as si
inner join ScoreInfo as sco on si.stuId=sco.StuId
inner join CourseInfo as ci on ci.cId=sco.cId select * from S_S_C --数据透视
--要求按格式:姓名 数据库 算法设计
select stuName as 姓名,
max(case cName when '数据库' then score end) as 数据库, --case..when..then语句的两种写法
max(case when cName='算法设计' then score end) as 算法设计
from S_S_C
--然后还要用聚合函数max|sum将上面的结果合并起来,去掉null的位置
group by stuName
接下去是一些练习
select * from course
select * from score
select * from student
select * from teacher --[20,25]岁男同学的姓名,性别,年龄
create view student_view
as
select stuName,stuAge,stuSexy from student
where stuAge between 20 and 25 select * from student_view --每位同学姓名,课程名称和成绩
create view score_view
as
select si.stuName,ci.cName,sco.score from student as si
inner join score as sco on si.stuId=sco.stuId
inner join course as ci on sco.cId=ci.cId select * from score_view
关于透视
select * from class
insert into class
values('','大数据') select * from course
select * from student
select * from teacher
select * from score --透视练习:按课程名字 男生 女生
create view Cou_Stu
as
select si.stuId,ci.cName,si.stuSexy from student as si
inner join score as sco on si.stuId=sco.stuId
inner join course as ci on sco.cId=ci.cId drop view Cou_Stu
select * from Cou_Stu create view TMP
as
select cName,stuSexy,COUNT(*)as num from Cou_Stu
group by stuSexy,cName select * from TMP select cName,
(case when stuSexy=1 then num end)as '男生',
(case when stuSexy=0 then num end)as '女生'
from TMP --再通过分组+聚合函数把null给去了
select cName,
max(case when stuSexy=1 then num end)as '男生',
max(case when stuSexy=0 then num end)as '女生'
from TMP
group by cName
sql 基础语法 alter用法和视图,透视的更多相关文章
- ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段
ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...
- SQL基础语法笔记教程整理
PS:本文适用SQL Server2008语法. 一.关系型数据库和SQL 实际上准确的讲,SQL是一门语言,而不是一个数据库. 什么是SQL呢?简而言之,SQL就是维护和使用关系型数据库中的的数据的 ...
- SQL基础语法提纲
一.SQL需知5点 1.SQL是Structured Query Language的缩写,是用来访问关系型数据库的,非过程化的,高级编程语言. 2.SQL具有语法高度综合统一,高度的非过程化,对集合进 ...
- SQL 基础语法笔记教程整理
最近从图书馆借了本介绍 SQL 的书,打算复习一下基本语法,记录一下笔记,整理一下思路,以备日后复习之用. PS:本文适用 SQL Server2008 语法. 首先,附一个发现的 MySQL 读书笔 ...
- Spring mybatis源码篇章-动态SQL基础语法以及原理
通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-Mybatis的XML文件加载 前话 前文通过Spring中配置mapperLocations属性来进行对m ...
- SQL基础语法(二)
SQL SELECT 语句 本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL ...
- sql基础语法大全 转载过来的,出处忘了!
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...
- sql 基础语法使用
SQL的一些基础查询语法 基础.限定.模糊查询 关键字都是大写. 使用 BETWEENN AND 的时候小的数字或者日期放到 AND(并且) 的面前,大的一个放到AND 后面. 示例 ...
- SQL 基础语法(一)
SQL 语法 数据库表 一个数据库通常包含一个或多个表.每个表由一个名字标识(例如"客户"或者"订单").表包含带有数据的记录(行). 下面的例子是一个名为 & ...
随机推荐
- AT2705 Yes or No(组合数学)
传送门 解题思路 首先将这个模型放到坐标轴上,\(x\)轴表示\(1\),\(y\)轴表示\(0\).问题就转化成了从\((0,0)\)走到\((n,m)\),每次可以猜测向\(x\)轴或向\(y\) ...
- UOJ 450 【集训队作业2018】复读机——单位根反演
题目:http://uoj.ac/problem/450 重要式子: \( e^x = \sum\limits_{i=0}^{\infty} \frac{x^i}{i!} \) \( ( e^{a*x ...
- Linux 删除特殊文件名的文件
1.文件名含有特殊字符: 1) 执行 ls -i 命令 ,文件前面会出现一个数字,这个数字是文件的节点号 2) 使用find命令删除 find ./ -inum 节点号 -delete 2.文件名是以 ...
- ValueError: invalid literal for int() with base 10问题处理
问题描述: 在用pthon写脚本得过程中,发生错误,ValueError: invalid literal for int() with base 10,这种错误是值得类型转换错误,int()函数是可 ...
- eclipse项目(java project)如何导入jar包的解决方案列表?
右键项目-properties-java build path(左侧菜单)-选择libraries 有两种方式,导入jar包实际上就是建立一种链接,并不是copy式的导入 一.导入外部包,add ex ...
- Intel CPUs
http://en.wikipedia.org/wiki/Intel_cpus List of Intel Atom microprocessors List of Intel Xeon microp ...
- excel vlookup的使用
表1 姓名 部门 *** *** *** *** 表2 姓名 部门 *** *** *** *** *** *** *** *** 找表2的姓名对应部门,粘贴在表1中 vloo ...
- Codeforces 1114E(数学+随机算法)
题面 传送门 分析 通过二分答案,我们显然可以求出数组中最大的数,即等差数列的末项 接着随机取一些数组中的数,对他们两两做差,把得到的差取gcd即为公差 例a={1,5,9,13},我们随机取了1 9 ...
- Workbox使用策略
1.什么是Workbox Strategies? 当service workers 首次被引入时,可以设定一组常见的缓存策略. 缓存策略是一种模式,用于确定service workers 在收到fet ...
- java虚拟机规范(se8)——class文件格式(四)
4.7 属性 属性用于class文件格式中的ClassFile,field_info,method_info和Code_attribute结构. 所有的属性都是下面的格式: attribute_inf ...