第五章 Transact—SQL 语句

来源:互联网 发布:图集软件 编辑:程序博客网 时间:2024/06/06 14:14

【例5.1】创建名称为test_db数据库,输入语句如下。
CREATE DATABASE [test_db ON  PRIMARY 
(
NAME = test_data1',       --数据库逻辑文件名称
FILENAME = 'D:\SS2008Data\test_data.mdf',    --主数据文件存储位置
SIZE = 5120KB ,      --主数据文件大小
MAXSIZE =20,      --主数据文件最大增长空间为20MB
FILEGROWTH =1     --文件增长大小设置为1MB
)

【例5.2】在test_db数据库中创建员工表tb_emp1,输入语句如下:
USE test_db
CREATE TABLE tb_emp1
(
id      INT PRIMARY KEY,
name   VARCHAR(25) NOT NULL,
deptId  CHAR(2) NOT NULL,
salary  SMALLMONEY NULL
);

【例5.3】删除test数据库中的person表,输入语句如下:
USE test
GO
DROP TABLE dbo.person

【例5.4】删除test数据库,输入语句如下:
DROP DATABASE test

【例5.5】将test_db数据库的名称修改为company,输入语句如下:
ALTER DATABASE test_db
MODIFY NAME=company

【例5.6】在更改过名称的company数据库中,向tb_emp1数据表中添加名称为birth的字段列,数据类型为date,要求非空,输入语句如下:
USE company
GO
ALTER TABLE tb_emp1
ADD  birth DATE NOT NULL

【例5.7】删除tb_emp1表中的birth字段列,输入语句如下:
USE company
GO
ALTER TABLE tb_emp1
DROP COLUMN birth

【例5.8】向teacher表中插入一条新记录,输入语句如下:
INSERT INTO teacher VALUES(1, '张三', '1978-02-14', '男', '0018611')  --插入一条记录
SELECT * FROM teacher

【例5.9】向teacher表中插入多条新记录,输入语句如下:
SELECT * FROM teacher
INSERT INTO teacher 
VALUES (2, '李四', '1978-11-21','女', '0018624') ,
(3, '王五','1976-12-05','男', '0018678') ,
(4, '赵纤','1980-6-5','女', '0018699') ;
SELECT * FROM teacher

【例5.10】在teacher表中,更新id值为2的记录,将birth字段值改为’1980-8-8’,将cellphone字段值改为’0018600’, 输入语句如下:
SELECT * FROM teacher WHERE id =1;
UPDATE teacher 
SET birthday = '1980-8-8',cellphone='0018600' WHERE id = 1;
SELECT * FROM teacher WHERE id =1;

【例5.11】在teacher表中,将所有老师的电话都修改为’01008611’,输入语句如下:
SELECT * FROM teacher;
UPDATE teacher SET cellphone='01008611';
SELECT * FROM teacher;

【例5.12】删除teacher表中id等于1的记录,输入语句如下:
DELETE FROM teacher WHERE id=1;
SELECT * FROM teacher WHERE id=1;

【例5.13】删除teacher表中所有记录,输入语句如下。
SELECT * FROM teacher;
DELETE FROM teacher;
SELECT * FROM teacher;

【例5.14】查询stu_info表中的所有学生信息,输入语句如下。
SELECT * FROM stu_info;

【例5.15】查询stu_info数据表中学生的姓名和成绩,输入语句如下。
SELECT s_name, s_score FROM stu_info;

【例5.16】不修改数据表,查询并显示所有学生的成绩降低5分后的成绩,输入语句如下。
SELECT s_name, s_score, s_score – 5 AS new_score FROM stu_info;

【例5.17】查询stu_info中所有的记录,但只显示前3条,输入语句如下。
SELECT TOP 3 * FROM stu_info;

【例5.18】查询stu_info表中所有性别为‘男’的学生的信息,输入语句如下。
SELECT * FROM stu_info WHERE s_sex='男';

【例5.19】查询stu_info表中所有性别为‘男’的学生的信息,输入语句如下。
SELECT * FROM stu_info WHERE NOT  s_sex='男';

【例5.20】查询stu_info表中性别为‘男’并且成绩大于80的学生信息,输入语句如下。
SELECT * FROM stu_info WHERE s_sex='男' AND s_score > 80;

【例5.21】查询stu_info表中成绩大于80,或者年龄大于18的学生信息,输入语句如下。
SELECT * FROM stu_info WHERE s_score > 80 OR s_age>18;

【例5.22】在stu_info数据表中,查询所有姓‘马’的学生信息,输入语句如下。
SELECT * FROM stu_info WHERE s_name LIKE '马% '

【例5.23】查询stu_info表中所有姓张、姓王、姓李的学习信息,输入语句如下。
SELECT * FROM stu_info WHERE s_name LIKE '[张王李]% '

【例5.24】查询stu_info表中成绩大于50小于90的学生信息,输入语句如下。
SELECT * FROM stu_info WHERE s_score BETWEEN 50 AND 90;

【例5.25】查询stu_info表中所有学生信息,并按照成绩由低到高进行排序,输入语句如下。
SELECT * FROM stu_info ORDER BY s_score DESC;

【例5.26】对名称为recruit的用户进行授权,允许其对stu_info数据表执行查询和更新权限,输入语句如下。
GRANT SELECT,UPDATE ON stu_info
TO recruit WITH GRANT OPTION

【例5.27】禁止recruit用户对stu_info表的操作更新权限,输入语句如下。
DENY UPDATE ON stu_info TO recruit;

【例5.28】收回recruit用户对stu_info表的查询权限,输入语句如下。
REVOKE SELECT ON stu_info FROM recruit;

【例5.29】声明两个局部变量,名称为username和pwd,并为这两个变量赋值,输入语句如下。
DECLARE @username VARCHAR(20)
DECLARE @pwd VARCHAR(20)
SET    @username = 'newadmin'
SELECT @pwd = 'newpwd'
SELECT '用户名:'+@username +'  密码:'+@pwd

【例5.30】查询stu_info表中的学生成绩,并将其保存到局部变量stuScore中,输入语句如下。
DECLARE @stuScore INT
SELECT  s_score FROM stu_info
SELECT  @stuScore  = s_score FROM stu_info 
SELECT  @stuScore AS Lastscore

【例5.31】定义字符串变量name和整数变量age,使用PRINT输出变量和字符串表达式值,T-SQL代码如下。
DECLARE @name VARCHAR(10)='小明'
DECLARE @age INT = 21
PRINT '姓名    年龄'
PRINT @name+'     '+CONVERT(VARCHAR(20), @age)

【例5.32】定义局部变量@count,如果@count值小于10,执行WHILE循环操作中的语句块,T-SQL代码如下。
DECLARE @count INT;
SELECT @count=0;
WHILE @count < 10
BEGIN
     PRINT 'count = ' + CONVERT(VARCHAR(8), @count)
     SELECT @count= @count +1
END
PRINT 'loop over count = ' + CONVERT(VARCHAR(8), @count);

【例5.33】IF…ELSE流程控制语句的使用,输入语句如下。
DECLARE @age INT;
SELECT @age=40
IF  @age <30
    PRINT 'This is a young man!'
ELSE 
    PRINT 'This is a old man!'

【例5.34】使用CASE语句根据学生姓名判断各个学生在班级的职位,
USE test
SELECT s_id,s_name,
CASE s_name
    WHEN '马华' THEN '班长' 
    WHEN '许三' THEN '学习委员'
    WHEN '刘杰' THEN '体育委员'
    ELSE '无'
END 
AS '职位'
FROM stu_infoFROM stu_info

【例5.35】使用CASE语句对考试成绩进行评定,输入语句如下。
SELECT s_id,s_name,s_score,
CASE
    WHEN s_score > 90 THEN '优秀' 
    WHEN s_score > 80 THEN '良好'
    WHEN s_score > 70 THEN '一般'
    WHEN s_score > 60 THEN '及格'
    ELSE '不及格'
END 
AS '评价'
FROM stu_info

【例5.36】WHILE循环语句的使用,输入语句如下。
DECLARE @num INT;
SELECT @num=10;
WHILE @num > -1
BEGIN
     If @num > 5 
        BEGIN
           PRINT '@num 等于' +CONVERT(VARCHAR(4), @num)+ '大于5 循环继续执行';
           SELECT @num = @num - 1;
           CONTINUE;
        END
     else
        BEGIN
           PRINT '@num 等于'+ CONVERT(VARCHAR(4), @num);
           BREAK;
        END
END

PRINT '循环终止之后@num 等于' + CONVERT(VARCHAR(4), @num);

【例5.37】GOTO语句的使用,输入语句如下。
Use test;
BEGIN
  SELECT s_name FROM stu_info;
GOTO jump
  SELECT s_score sFROM stu_info;
jump:
  PRINT '第二条SELECT语句没有执行';
END

【例5.38】10秒钟的延迟后执行SET语句,输入语句如下。
DECLARE @name VARCHAR(50);
SET @name='admin';
BEGIN
WAITFOR DELAY '00:00:10';
PRINT @name;
END;


8、课后习题

第一题
create database zooDB_data
on
(
name=zooDB_data,
filename='D:\用户目录\我的文档\SQL Server Management Studio\zooDB_data.mdf',
maxsize=15MB,
filegrowth=5%
)
go
drop database zooDB_data

第二题
declare @var int
declare @Cupid varchar(20)
select @var =3;
select @Cupid =
case when @var=1 then  'var is 1'
when @var=2 then  'var is 2'
else  'var is not 1 or 2'
end


select @Cupid

0 0
原创粉丝点击