【SQL开源代码栏目提醒】:本文主要为网学会员提供CH15.sql,希望对需要CH15.sql网友有所帮助,学习一下!
USE 练习02
-- P15-2
INSERT INTO 员工 (, 性别)
VALUES ('杨大头', '男')
SELECT 员工编号, , 性别
FROM 员工
-- P15-3
USE 练习02
GO
SELECT *
FROM 客户
SELECT *
FROM 订单
GO
-- P15-5a
/* 这是注解 */
-- 这也是注解
SELECT * /* 注解可以在这儿 */
FROM 员工 -- 当然也可以在这里
-- p15-5b
SELECT 客户编号, 联络人 /*, 地址 AS 送货地址, 电话 */
FROM 客户
WHERE 客户编号 > 5 /* AND LIKE "江*"
ORDER BY 电话 */
/*
UPDATE 订单
SET 数量 = 15
WHERE 订单序号 = 201
*/
-- P15-6a
DECLARE @customer varchar(30)
DECLARE @counter int, @today datetime
SET @customer = '天天书局'
SET @counter = 1
SET @today = getdate()
SELECT @customer
SELECT @counter
SELECT @today
-- P15-6b
DECLARE @customer varchar(30)
SELECT @customer = '大雄书局'
SELECT @customer
-- P15-7a
DECLARE @customer varchar(30)
SELECT @customer = 客户名称
FROM 客户
WHERE 客户编号 = 4
SELECT @customer
-- P15-7b
DECLARE @name char(10), @sex char (10)
SELECT @name = , @sex = 性别
FROM 员工
WHERE 员工编号 = 3
SELECT @name AS '名字', @sex
-- P15-8a
DECLARE @customer varchar(30)
SELECT @customer = '大雄书局'
GO
SELECT @customer
-- P15-10a
IF (SELECT SUM(价格) FROM 标标公司) > 1100
PRINT '标标公司共有资产大于 1100 元'
ELSE
PRINT '标标公司共有资产小于 1100 元'
-- P15-10b
DECLARE @avg_price int
SET @avg_price = (SELECT AVG(单价) FROM 书籍)
IF @avg_price > 600
PRINT '书籍平均价格太高'
ELSE
IF @avg_price > 400 -- 在 ELSE 中的 IF...ELSE
PRINT '书籍平均价格适中'
ELSE
PRINT '书籍平均价格太低'
-- P15-11a
IF 'Windows 使用手册' IN (SELECT 书籍名称 FROM 书籍)
PRINT 'Windows 使用手册'
ELSE
PRINT 'Windows 使用手册'
-- P15-11b
IF 1000 > ALL (SELECT 单价 FROM 书籍)
PRINT '没有任何书籍超过 1000 元'
-- P15-12a
IF (SELECT 书籍名称 FROM 书籍 WHERE 书籍编号 = '1001') IS NULL
PRINT '1001 的名称未输入'
ELSE
PRINT '1001 的名称已输入'
-- P15-12b
IF EXISTS (SELECT * FROM 书籍 WHERE 书籍编号 = '1001')
PRINT '1001 的名称已输入'
ELSE
PRINT '1001 的名称未输入'
-- P15-13
DECLARE @id int, @name varchar(50), @price int, @count int
SET @id = 0
SET @count = 1
WHILE @id < 500
BEGIN
SET @id = @id + 1
SELECT @name = 书籍名称, @price = 单价
FROM 书籍 WHERE 书籍编号 = @id
IF @@ROWCOUNT = 0 /* @@ ROWCOUNT 中会储存著 */
BEGIN /* SELECT 传回的记录笔数 */
PRINT '*** The End ***'
BREAK
END
IF @price >= 400 CONTINUE
PRINT CAST(@price AS CHAR(4)) + ' -- ' +@name
IF @count % 3 = 0 PRINT '......'
SET @count = @count + 1
END
-- P15-15
DECLARE @a INT, @answer CHAR(10)
SET @a = 3
SET @answer = CASE @a
WHEN 1 THEN 'A'
WHEN 2 THEN 'B'
WHEN 3 THEN 'C'
WHEN 4 THEN 'D'
ELSE 'OTHERS'
END
PRINT 'IS ' + @answer
-- P15-16
SELECT '<' +
CASE RIGHT(书籍名称, 2)
WHEN '手册' THEN '1入门'
WHEN '实务' THEN '2实例'
WHEN '应用' THEN '3技巧'
WHEN '秘笈' THEN '4技术'
ELSE '5未分'
END + '类>' AS 类别
, 书籍名称
FROM 书籍
ORDER BY 类别
-- P15-18
DECLARE @number smallint
SET @number = 99
IF (@number % 3) = 0
GOTO Three
ELSE
GOTO NotThree
Three:
PRINT '三的倍数'
GOTO TheEnd
NotThree:
PRINT '不是三的倍数'
TheEnd:
-- P15-19
DECLARE @count INT
SET @count = 0
WHILE @count < 5 /* 此回圈最多做 5 次 */
BEGIN
INSERT 员工记录 (异动日期, 员工编号, 薪资)
VALUES ('2006/1/6', 15, 30000)
IF @@error = 0 BREAK /* 如果成功即跳出回圈 */
SET @count = @count + 1
WAITFOR DELAY '00:00:05' /* 等待 5 秒 */
END
-- P15-20a
WAITFOR TIME '23:50'
EXEC sp_dboption '练习02', 'SELECT INTO', 'TRUE'
SELECT * INTO 订单备份
FROM 订单
EXEC sp_dboption '练习02', 'SELECT INTO', 'FALSE'
-- P15-20b
CREATE PROCEDURE CheckOrder AS /* 建立自订的预存程序 */
IF EXISTS (SELECT * FROM 订单 WHERE 客户编号 = 2)
RETURN 1 /* 如果
查询到订单, 则传回 1 */
ELSE
RETURN 2 /* 没有订单就传回 2 */
GO
DECLARE @value int
EXEC @value = CheckOrder /* 执行自订预存程序 */
PRINT @value
-- P15-21
-- 执行
系统预存
程序, 并指定 3 个参数
EXEC sp_dboption '练习02', 'ARITHABORT', 'ON'
-- 作用同上一个范例, 但使用变数来指定预存程序名称
DECLARE @pname varchar(30)
SET @pname = 'sp_dboption'
EXEC @pname '练习02', 'ARITHABORT', 'ON'
-- P15-22
DECLARE @tablename varchar(20)
WHILE 1 = 1
BEGIN
SELECT @tablename = 暂存资料表名称 /* 从 『暂存资料表清单』 资料表
中取得 『暂存资 */
FROM 暂存资料表清单 /* 料表名称』 栏位内的值, 并且指
定给 @tablename */
WHERE 建立日期 < getdate() -7
IF @@ROWCOUNT > 0 /* @@ROWCOUNT 储存著传回的记录笔数 */
BEGIN
EXEC ('DROP TABLE ' + @tablename)
DELETE 暂存资料表清单
WHERE 暂存资料表名称 = @tablename
END
ELSE
BREAK
END
-- P15-23a
IF (SELECT SUM(数量) FROM 订单细目 WHERE 书籍编号 = 123) < 100
PRINT '订购数量未达标准'
ELSE
PRINT '订购数量高于标准'
-- P15-23b
IF ISNULL((SELECT SUM(数量) FROM 订单细目
WHERE 书籍编号 = 123), 0) < 100
PRINT '订购数量未达标准'
ELSE
PRINT '订购数