右外连接(右连接):结果集既包括连接表的匹配连接行 , 也包括右连接表的所有行 。
C:full/cross (outer) join:
全外连接:不仅包括符号连接表的匹配行 , 还包括两个连接表中的所有记录 。
13、分组:Group by:
一张表 , 一旦分组 完成后 , 查询后只能得到组相关的信息 。
组相关的信息:(统计信息) count,sum,max,min,avg分组的标准)
在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
在selecte统计函数中的字段 , 不能和普通的字段放在一起;
14、对数据库进行操作:
分离数据库: sp_detach_db;附加数据库:sp_attach_db 后接表明 , 附加需要完整的路径名
14.如何修改数据库的名称:
sp_renamedb 'old_name', 'new_name'
下面说的是实战教程 , 主要讲学生管理数据库 。
更深一步 , 更详细一点的东西 。
基础部分查询
SELECT 姓名 as 学生姓名,性别 from学生信息 查询出来的列名是 学生姓名 , 性别 ,
SELECT DISTINCT 民族 from 学生信息 DISTINCT的作用是防止结果重复SELECT * FROM 员工信息 WHERE 民族='汉族' AND 性别='女'AND 家庭住址='河南商丘'
或
SELECT * FROM 员工信息 WHERE 民族='汉族' AND 性别='女' AND 家庭住址 like '河南%'
% 表示通配符 , like的作用与等号相似
排序ORDER BY
SELECT * FROM 成绩信息 WHERE 考试编号='0801'AND 课程编号='1'
ORDER BY 分数 DESC,学生编号 DESC表示降序 , ASC表示升序(默认)
分组
SELECT 考试编号,课程编号,AVG(分数) FROM 成绩信息 WHERE 考试编号='0801'GROUP BYcobe 课程编号
SELECT 考试编号,课程编号,AVG(分数) FROM 成绩信息 GROUP BY cobe 课程编号
cobe ()
rollup()
CUBE 运算符生成的结果集是多维数据集 。多维数据集是事实数据的扩展 , 事实数据即记录个别事件的数据 。扩展建立在用户打算分析的列上 。这些列被称为维 。多维数据集是一个结果集 , 其中包含了各维度的所有可能组合的交叉表格 。
CUBE 运算符在 SELECT 语句的 GROUPBY 子句中指定 。该语句的选择列表应包含维度列和聚合函数表达式 。GROUP BY 应指定维度列和关键字 WITH CUBE 。结果集将包含维度列中各值的所有可能组合 , 以及与这些维度值组合相匹配的基础行中的聚合值 。
CUBE 和 ROLLUP 之间的区别在于:
CUBE 生成的结果集显示了所选列中值的所有组合的聚合 。
ROLLUP 生成的结果集显示了所选列中值的某一层次结构的聚合 。
使用函数
SELECT TOP 3 分数 FROM 成绩信息WHERE 考试编号='0801' AND 考试编号='2'
RODER BY 分数 DESC
MIN()最小数 ; MAX()最大数 ; AVG()平均数 ; SUM()和; top number前几名
使用HAVING子句
SELECT 考试编号,课程编号,AVG(分数) FROM 成绩信息 GROUP BY cobe (课程编号)
HAVING AVG(分数)>=90
RODER BY 分数 DESC
插入数据
SELECT * FROM 学生信息
INSERT INTO 学生信息 (学号 , 姓名 , 家庭住址) VALUES ('2009100101','李明','河南')
INTERT...SELECT语句
INTERT 学生信息1
Select * FROM 学生信息 where 家庭住址 like '河南'
SELECT...INTO语句
SELECT *
into #STUDENT ‘临时表’
from 学生信息
where 性别='男
update 语句
select * from 学生信息
update 学生信息 set 姓名='李俊' , 出生日期=‘1994-4-8’ where 学号=‘12345’
扩展部分1.在查询结果中显示列名:
a.用as关键字:select name as '姓名' from students order by age
b.直接表示:select name '姓名' from students order byage
2.精确查找:
a.用in限定范围:select * fromstudents where native in ('湖南', '四川')
b.between...and:select * from students where age between 20 and 30
c.“=”:select * fromstudents where name = '李山'
d.like:select * from students where name like '李%' (注意查询条件中有“%” , 则说明是部分匹配 , 而且还有先后信息在里面 , 即查找以“李”开头的匹配项 。所以若查询有“李”的所有对象 , 应该命令:'%李%';若是第二个字为李 , 则应为'_李%'或'_李'或'_李_' 。)
推荐阅读
- 什么是数据库分库分表?
- 一文看懂mysql两种join连接算法--NLJ和BNL
- 狼人杀|狼人杀游戏揭露出的职场信息,你看懂了吗?
- 老中医5分钟教你看懂12经络,最简单的十二经络讲解,收藏了吧!
- Oracle数据库&MySQL与Oracle的区别
- 小米|国产屏怎么就不行了?教你看懂OLED像素排列背后的奥秘
- InputManagerService 十分钟让你了解Android触摸事件原理
- 在使用mysql数据库时,遇到重复数据怎么处理?
- 数据库JSON怎么改?一个SQL函数让你的操作瞬间高大上
- 数据库连接池的原理
