SQL Server 2008学习笔记
第一章SQL Server 基础
1、利用T-SQL 语句创建数据库, 删除一个数据库, 更改数据库名称
第二章T-SQL 语句
1、SQL 2008 视频教程-数据库表常用术语
数据表常用术语:
关系:关系即二维表,每一个关系有一个关系名,就是表名。
表中的行,称之为记录
表中的列,称之为字段或属性
关联:是指不同数据库表之间的数据彼此联系的方式。
关键字:属性或属性的组合,可以用于维一标识一条记录。
外部关键字:如果表中的一个字段(即表中的列),不是本表中的关键字而是其它表的关键字,称之为外部关键字。
2、SQL 2008 视频教程-系统数据库
Master(主)
Model(模型)
Tempdb (临时数据库)
Msdb(MS 数据库)
3、T-SQL 创建数据库详解
4、T-SQL 语句3 (T-SQL 语句浏览表格(教师表))Select * from 教师表--表示浏览教师表里所有的信息*号是通配符,表示所有的意思
执行Select * from教师表结结果如下
5、用T-SQL 语句在教师表里如何增加字段,删除某个字段,更新某个字段的内容(1)用T-SQL 语句在教师表里如何增加字段
执行Select * from教师表结结果如下
(2)用T-SQL 语句在教师表里如何删除某个字段
执行Select * from教师表结结果如下
(3)用T-SQL 语句在教师表里更新某个字段的内容
执行Select * from教师表结结果如下
6、查询(重中之重)
(1) 查询要用到的三张表:(下面的所有操作都是基于这三张表)1.emp 表(员工表employee)
2.dept 表(部门表department) 3.salgrade 表(工资等级表)
(2)对以上三张表查询操作(包括计算列,distinct,between,in,top,null,order by,模糊查询,聚合函数,group by,having,链接查询)
注意distinct 的用法
例子如下图:
实例如下:
注意group by 与COMPUTE BY 的区别
GROUP BY 子句有个缺点,就是返回的结果集中只有合计数据,而没有原始的详细记录。
如果想在SQL SERVER 中完成这项工作,可以使用COMPUTE BY 子句。
(具体看下面的例子)
运行结果对比:
查询的顺序(非常重要)
习题集
第一个习题
求出每个员工的姓名部门编号薪水和薪水的等级
第二个习题
查找每个部门的编号该部门所有员工的平均工资平均工资的等级
第三个习题
查找每个部门的编号部门名称该部门所有员工的平均工资平均工资的等级
第四个习题
求出emp 表中所有领导的信息
第五个习题
求出平均薪水最高的部门的编号和部门的平均工资
第六个习题
有一个人工资最低把这个人排除掉
剩下的人中工资最低的前个人的姓名工资部门编号部门名称工资等级输出
答案及运行结果:
7. 两个表(dept 表和salgrade 表)内连接,左连接和右连接
下面只给了右连接的运行结果(其它的自己试)
8. 约束、索引和视图
约束(主键(即关键字),外键(外部关键字),唯一键,非空,check,default ,触发器)
索引
唯一的索引 (Unique Index)
在表格上面创建某一个唯一的索引。
唯一的索引意味着两个行不能拥有相同的索引值。
CREATE UNIQUE INDEX 索引名称
ON 表名称(列名称)
create unique index teacher_index on teacher (teacher_address)
--在 teacher 表中 teacher_address 字段创建了一个唯一的索引(名称为teacher_index)
视图
为什么需要视图:
注意:不能一次执行,应该创建完视图后执行以下,再执行下面的代码
9.T-SQL 编程
所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。
注意:如果想同时显示多个变量用 select
如果想显示单个变量用 print
执行结果为:执行结果为:执行结果为:
执行结果为:
执行结果为:10. 函数
为局部变量
执行结果为:
字符串函数:
执行结果为:
日期函数:
执行结果为:
创建函数:
创建代码及结果显示如下图
再写个测试代码
执行结果:(注意 dbo. 不能省)11. 存储过程
(2)用户如何创建存储过程
执行execute newProc 这行代码的结果为:(写 exec newProc 也可以)
12. 游标(cursor)
注意:用中括号[]括起来的可以写也可以不写
13. 触发器(trigger)
触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表
中插入记录﹑更新记录或者删除记录时被自动地激活。
所以触发器
可以用来实现对表实施复杂的完整性约束。
1)
After 触发器在一个Insert,Update 或Deleted 语句之后执行﹐进行约束检查等动作都在After 触发器被激活之前发生。
After 触发器只能用于表。
一个表或视图的每一个修改动作
(insert,update 和delete)都可以有一个instead of 触发
器﹐一个表的每个修改动作都可以有多个After 触发器。
如果一个Insert﹑update 或者delete 语句违反了约束﹐那幺After 触发器不会执行﹐因为对约束的检查是在After 触发器被激动之前发生的。
所以After 触发器不能超越束。
执行insert into teacher values()后的结果:
说明他是在插入一条记录之后调用这个触发器即After 触发器
2)Instead of 触发器(即替代触发器)是用于替代引起触
发器执行的T-SQL 语句。
除表之外﹐Instead of 触发器也可以用于视图﹐用来扩展视图可以支持的更新操作。
执行结果为:
14.事务
2015年11月27日
李巍。