SQLServer关系数据库的管理系统.ppt
文本预览下载声明
* 如果参数是常量,则要加定界符 ‘ ’ 。 sp_ 前缀 表示它是系统存储过程 * 被绑定的列在规则表达式中使用形式参数表示,参数前加@,类似于程序设计中的形式变量和实在变量。 规则在表示时用参数名,而在执行时则用列名代替。 * 参数前加“@” 为局部变量,加“@@”则说明为全局变量。 * Delete触发器的作用是当对表执行delete的操作时触发器被激活,并删除指定元组,同时将删除的元组放入特殊的逻辑表deleted中,触发器的动作可以是检查deleted表中的值,以确定下一步如何处理。 insert触发器的作用是当对表执行insert的操作时触发器被激活,将要插入的数据复制放入特殊的逻辑表inserted中,触发器的动作可以是检查inserted表中的值,以确定下一步如何处理。 Update触发器激活后要把被更新的数据移入deleted表中,再将更新后的新数据送入inserted表中,update触发器对deleted和inserted进行检查,以便决定如何处理。 * 5)〈列别名〉:用来代替出现在结果集中的列名或表达式,别名可以在ORDER BY子句中出现,但不能在WHERE、GROUP BY或HAVING子句中出现。 * ::= 表示包含 注意 如果使用JOIN做连接,是在 FROM 后面做连接,不是在WHERE 后面。 * 1) INNER为内连接,它返回所有连接匹配的行。 LEFT [OUTER]为左外连接。 RIGHT [OUTER]为右外连接。FULL [OUTER]为完全外连接。 2) ON〈连接条件〉指定连接条件:〈列名〉〈比较符〉〈列名〉3) CROSS JOIN为交叉连接,即对两个表进行笛卡儿积运算。 注意 如果使用JOIN做连接,是在 FROM 后面做连接,不是在WHERE 后面。 * 与标准SQL中相同的子句省略不讲。 * 嵌套中多次用到一个表时,要给此表取别名。 * 平均价为别名。 * 只有union,结果没有重复的,加了all,会有重复的记录 注意:sql server 中只有union,没有 minus 、intersect, 要用exists ,not exists 或 in 等实现 minus 、intersect的功能。 * 注意 如果使用JOIN做连接,是在 FROM 后面做连接,不是在WHERE 后面。 2. Transact-SQL查询实例 设图书借阅数据库中包括: 图书(书号,类别,出版社,作者,书名,定价); 读者(书证号,姓名,单位,性别,电话); 借阅(书号,读者书证号,借阅日期) 【例6-22】将计算机类的书存入永久的计算机图书表,将借书日期在99年以前的借阅记录存入临时的超期借阅表。 SELECT * INTO 计算机图书 FROM 图书 WHERE 类别=’计算机’ GO SELECT * INTO #超期借阅 FROM 借阅 WHERE 借阅日期’1999-01-01’ GO SELECT * FROM 读者 WHERE EXISTS (SELECT * FROM 借阅 WHERE 读者.书证号=借阅.读者书证号) 或: SELECT * FROM 读者 WHERE书证号 IN (SELECT 读者书证号 FROM 借阅) 【例6-23】查询借了书的读者 【例6-24】查找类别中最高的图书定价不低于全部按 类别分组的图书平均定价的2倍的图书。 SELECT A.* FROM 图书 A GROUP BY A.类别 HAVING MAX(A.定价)>=ALL (SELECT 2*AVG(B.定价) FROM 图书 B GROUP BY B.类别) GO 【例6-25】求机械工业出版社出版的各类图书的平均定价 。 SELECT 类别,AVG(定价) 平均价 FROM 图书 WHERE 出版社=’机械工业出版社’ GROUP BY 类别 ORDER BY 类别 ASC GO 【例6-26】列出计算机类图书的书号、名称及价格,最后求出册数和
显示全部