实验一
1.根据程序写结果:
    declare @a int
    set @a=32768
    select @a,datalength(@a)
    go
要求:(1)写出程序运行结果。
(2)把程序类型分别改为smallint、Tinyint、Bigint三种类型,求出程序运行结果。
2.声明一个类型为REAL的局部变量,分别为其赋值为321.12 、87654321.456,显示其结果。
3.根据程序写结果:
    declare @c char
    set @c='信息学院'
    select @c,datalength(@c)
    go
要求:
(1)写出程序运行结果。
(2)将类型改为CHAR(2)、CHAR(3)、CHAR(5)、CHAR(10)结果为多少?
(3)若将类型改为VARCHAR、VARCHAR(2)、VARCHAR(3)、VARCHAR(10)结果为多少?
(4)若将类型改为NCHAR(2)、NCHAR(3)、NCHAR(5)、NCHAR(10)结果为多少?
(5)若将类型改为NVARCHAR、NVARCHAR(2)、NVARCHAR(10)结果为多少?
(6)比较CHAR、VARCHAR、NCHAR、NVARCHAR四种数据类型的区别。
4.声明一个类型为日期时间型的变量,要求一:将今天的日期赋值给该变量,并显示其结果。要求二:将今天的日期接照月、日、年的格式赋值给该变量,并显示其结果。
5.写结果:select lower(‘abc’) +space(5) + rtrim(ltrim(‘你好!‘))
6.写函数表达式和结果:计算字符串’SQL Server数据库管理系统’的长度
7.写函数表达式:求服务器当前的系统日期与时间
8.Mary的生日为1987/12/23日,请用日期函数计算Mary现在的年龄下节课:
9.求:y= { x+10 x<0
           x    x=0
           x-10  x>10
 
10.如果在student表中的男生多,则显示男生人数以及“男生多”信息。
11. 查看(课程号为'C801')的平均分,如果分数等于或超过60分刚显示“数据结构平均分及格”和平均分值,否则显示“数据结构平均分不及格”。实验二
1、使用不带参数的存储过程
(1)创建一个存储过程my_proc,查询“学生表”中所有计算机系女生的学号、姓名、性别、年龄和所在院系。
(2)执行存储过程
(3)修改存储过程,使其能够查询计算机系女生的所有基本信息2、带输入参数的存储过程
(1)创建一个存储过程my_procsex,使其能够查询“学生表”中男学生或女学生的学号、姓名、性别、年龄和所在院系
(2)执行存储过程

3、带输入/输出参数的存储过程
(1)创建一个存储过程my_procage,使其能够根据学生姓名,查询学生年龄。(考虑当学生不存在时给出提示信息)
(2)执行存储过程

解决方案 »

  1.   

    --1.根据程序写结果:
            declare   @a   int
            set   @a=32768
            select   @a,datalength(@a)
            go
    /*
    要求:(1)写出程序运行结果。
    (2)把程序类型分别改为smallint、Tinyint、Bigint三种类型,求出程序运行结果。
    */
    tinyint 溢出(1字节)
    smallint 溢出(2字节)
    int 32768 4(4字节)
    bigint 32768 8(8字节)
    --2.声明一个类型为REAL的局部变量,分别为其赋值为321.12   、87654321.456,显示其结果。
    declare @i real, @j real
    select @i = 321.12,@j = 87654321.456
    select @i,@j
    /*
    321.12 8.765432E+7
    */--3.根据程序写结果:
            declare   @c   char
            set   @c='信息学院'
            select   @c,datalength(@c)
            go/*
    要求:
    (1)写出程序运行结果。
    (2)将类型改为CHAR(2)、CHAR(3)、CHAR(5)、CHAR(10)结果为多少?
    (3)若将类型改为VARCHAR、VARCHAR(2)、VARCHAR(3)、VARCHAR(10)结果为多少?
    (4)若将类型改为NCHAR(2)、NCHAR(3)、NCHAR(5)、NCHAR(10)结果为多少?
    (5)若将类型改为NVARCHAR、NVARCHAR(2)、NVARCHAR(10)结果为多少?
    (6)比较CHAR、VARCHAR、NCHAR、NVARCHAR四种数据类型的区别。
    */
    char ' ' 1
    char(2) '信' 2
    char(3) '信 ' 3
    char(10) '信息学院  ' 10varchar '' 0
    varchar(2) '信' 2
    varchar(3) '信' 2
    varchar(10) '信息学院' 8nchar '信' 2
    nchar(2) '信息' 4
    nchar(3) '信息学' 6
    nchar(10) '信息学院      ' 20nvarchar '信' 2
    nvarchar(2) '信息' 4
    nvarchar(3) '信息学' 6
    nvarchar(10) '信息学院' 8
    --4.声明一个类型为日期时间型的变量,要求一:将今天的日期赋值给该变量,并显示其结果。要求二:将今天的日期接照月、日、年的格式赋值给该变量,并显示其结果。
    declare @date datetime
    set @date = '2007-12-21'
    select @date
    /*
    2007-12-21 00:00:00.000
    */
    set @date = '12/21/2007'
    select @date
    /*
    2007-12-21 00:00:00.000
    */
    5.写结果:select   lower(‘abc’)   +space(5)   +   rtrim(ltrim(‘你好!‘))
    'abc     你好!'6.写函数表达式和结果:计算字符串’SQL   Server数据库管理系统’的长度
    select len('SQL   Server数据库管理系统'), datalength('SQL   Server数据库管理系统')7.写函数表达式:求服务器当前的系统日期与时间
    select getdate()8.Mary的生日为1987/12/23日,请用日期函数计算Mary现在的年龄
    select datediff(year, '1987/12/23', getdate())下节课:
    9.求:y=   {   x+10   x <0
                          x         x=0
                          x-10     x> 10
    select y = case when x<0 then x+10 when x=0 then x else x-10 end 
    10.如果在student表中的男生多,则显示男生人数以及“男生多”信息。
    if (select count(*) from student where 性别='男') > (select count(*) from student where 性别<>'男')
    print '男生多'
    else
    print '男生不多'11.   查看(课程号为'C801')的平均分,如果分数等于或超过60分刚显示“数据结构平均分及格”和平均分值,否则显示“数据结构平均分不及格”。
    declare @avg numeric(10,4)
    select @avg = avg(score) from 成绩表 where 课程号='C801'
    if @avg>60
    select '数据结构平均分及格', @avg
    else
    select '数据结构平均分不及格'实验二
    1、使用不带参数的存储过程
    (1)创建一个存储过程my_proc,查询“学生表”中所有计算机系女生的学号、姓名、性别、年龄和所在院系。
    create proc my_proc
    as
    select 学号,姓名,性别,年龄,所在院系 from 学生表 where 所在院系='计算机系' and 性别='女'
    go(2)执行存储过程
    exec my_proc(3)修改存储过程,使其能够查询计算机系女生的所有基本信息
    alter proc my_proc
    as
    select * from 学生表 where 所在院系='计算机系' and 性别='女'
    go
    2、带输入参数的存储过程
    (1)创建一个存储过程my_procsex,使其能够查询“学生表”中男学生或女学生的学号、姓名、性别、年龄和所在院系
    create proc my_proc
    @sex nvarchar(1)
    as
    select 学号,姓名,性别,年龄,所在院系 from 学生表 where 性别=@sex
    go(2)执行存储过程
    exec my_proc '男'3、带输入/输出参数的存储过程
    (1)创建一个存储过程my_procage,使其能够根据学生姓名,查询学生年龄。(考虑当学生不存在时给出提示信息)
    create proc my_procage
    @name nvarchar(10)
    as
    if not exists (select 1 from 学生表 where 姓名=@name)
    raiserror(N'名为“%s”的学生不存在!', 16, 1, @name)
    else
    select 年龄 from 学生表 where 姓名=@name
    go
    (2)执行存储过程
    exec my_procage '比尔.盖茨'
      

  2.   

    --1.根据程序写结果:
            declare   @a   int
            set   @a=32768
            select   @a,datalength(@a)
            go
    /*
    要求:(1)写出程序运行结果。
    (2)把程序类型分别改为smallint、Tinyint、Bigint三种类型,求出程序运行结果。
    */
    tinyint 溢出(1字节)
    smallint 溢出(2字节)
    int 32768 4(4字节)
    bigint 32768 8(8字节)
    --2.声明一个类型为REAL的局部变量,分别为其赋值为321.12   、87654321.456,显示其结果。
    declare @i real, @j real
    select @i = 321.12,@j = 87654321.456
    select @i,@j
    /*
    321.12 8.765432E+7
    */--3.根据程序写结果:
            declare   @c   char
            set   @c='信息学院'
            select   @c,datalength(@c)
            go/*
    要求:
    (1)写出程序运行结果。
    (2)将类型改为CHAR(2)、CHAR(3)、CHAR(5)、CHAR(10)结果为多少?
    (3)若将类型改为VARCHAR、VARCHAR(2)、VARCHAR(3)、VARCHAR(10)结果为多少?
    (4)若将类型改为NCHAR(2)、NCHAR(3)、NCHAR(5)、NCHAR(10)结果为多少?
    (5)若将类型改为NVARCHAR、NVARCHAR(2)、NVARCHAR(10)结果为多少?
    (6)比较CHAR、VARCHAR、NCHAR、NVARCHAR四种数据类型的区别。
    */
    char ' ' 1
    char(2) '信' 2
    char(3) '信 ' 3
    char(10) '信息学院  ' 10varchar '' 0
    varchar(2) '信' 2
    varchar(3) '信' 2
    varchar(10) '信息学院' 8nchar '信' 2
    nchar(2) '信息' 4
    nchar(3) '信息学' 6
    nchar(10) '信息学院      ' 20nvarchar '信' 2
    nvarchar(2) '信息' 4
    nvarchar(3) '信息学' 6
    nvarchar(10) '信息学院' 8
    --4.声明一个类型为日期时间型的变量,要求一:将今天的日期赋值给该变量,并显示其结果。要求二:将今天的日期接照月、日、年的格式赋值给该变量,并显示其结果。
    declare @date datetime
    set @date = '2007-12-21'
    select @date
    /*
    2007-12-21 00:00:00.000
    */
    set @date = '12/21/2007'
    select @date
    /*
    2007-12-21 00:00:00.000
    */
    5.写结果:select   lower(‘abc’)   +space(5)   +   rtrim(ltrim(‘你好!‘))
    'abc     你好!'6.写函数表达式和结果:计算字符串’SQL   Server数据库管理系统’的长度
    select len('SQL   Server数据库管理系统'), datalength('SQL   Server数据库管理系统')7.写函数表达式:求服务器当前的系统日期与时间
    select getdate()8.Mary的生日为1987/12/23日,请用日期函数计算Mary现在的年龄
    select datediff(year, '1987/12/23', getdate())下节课:
    9.求:y=   {   x+10   x <0
                          x         x=0
                          x-10     x> 10
    select y = case when x<0 then x+10 when x=0 then x else x-10 end 
    10.如果在student表中的男生多,则显示男生人数以及“男生多”信息。
    if (select count(*) from student where 性别='男') > (select count(*) from student where 性别<>'男')
    print '男生多'
    else
    print '男生不多'11.   查看(课程号为'C801')的平均分,如果分数等于或超过60分刚显示“数据结构平均分及格”和平均分值,否则显示“数据结构平均分不及格”。
    declare @avg numeric(10,4)
    select @avg = avg(score) from 成绩表 where 课程号='C801'
    if @avg>60
    select '数据结构平均分及格', @avg
    else
    select '数据结构平均分不及格'实验二
    1、使用不带参数的存储过程
    (1)创建一个存储过程my_proc,查询“学生表”中所有计算机系女生的学号、姓名、性别、年龄和所在院系。
    create proc my_proc
    as
    select 学号,姓名,性别,年龄,所在院系 from 学生表 where 所在院系='计算机系' and 性别='女'
    go(2)执行存储过程
    exec my_proc(3)修改存储过程,使其能够查询计算机系女生的所有基本信息
    alter proc my_proc
    as
    select * from 学生表 where 所在院系='计算机系' and 性别='女'
    go
    2、带输入参数的存储过程
    (1)创建一个存储过程my_procsex,使其能够查询“学生表”中男学生或女学生的学号、姓名、性别、年龄和所在院系
    create proc my_proc
    @sex nvarchar(1)
    as
    select 学号,姓名,性别,年龄,所在院系 from 学生表 where 性别=@sex
    go(2)执行存储过程
    exec my_proc '男'3、带输入/输出参数的存储过程
    (1)创建一个存储过程my_procage,使其能够根据学生姓名,查询学生年龄。(考虑当学生不存在时给出提示信息)
    create proc my_procage
    @name nvarchar(10)
    as
    if not exists (select 1 from 学生表 where 姓名=@name)
    raiserror(N'名为“%s”的学生不存在!', 16, 1, @name)
    else
    select 年龄 from 学生表 where 姓名=@name
    go
    (2)执行存储过程
    exec my_procage '比尔.盖茨'
      

  3.   

    1
    (1)32768,4(其为INT型,固为4)
    (2)溢出 
    (3)溢出
    (4)32768,8 

    declare   @a REAL
            set   @a=321.12
            select   @a
            go
    declare   @a REAL
            set   @a=87654321.456
            select   @a
            go
    321.12
    8.765432E+73
    (1)null 1
    (2)信 2 ,信 3,信息 5,信息学院 10
    (3)null 1,信 2,信 2,信息学院 8
    (4)信息 4、信息学 6、信息学院 10、信息学院 20
    (5)信息 2、信息 4、信息学院 8
    (6)char 定长字符串,VARCHAR 可变长,NCHAR Unicode 定长字符,NVARCHAR Unicode 变长字符
    -------------------------------------------------------------------------------------