2018-03-07

SQL  Server 入门

第三章

--创建stu01db数据库

create database stu01db

on primary

(

  name=stu01data,        //主文件名

  filename='F:\Data\stu01data.mdf', //主文件内容要存的路径

  size =5mb,                        // 初始容量 

  maxsize=10mb,                    //最大容量

  filegrowth=20%                    //增长率

)

log on

(

name=stu01log,                      //主文件名

filename='F:\Data\stu01log.ldf',    //主文件内容要存的路径

size=5mb,

maxsize=unlimited,

filegrowth=2mb

)

--5

create database studb

on primary

(

  name=studbdata,

  filename='F:\studbdata.mdf',

  size=3mb,

  maxsize=5mb,

  filegrowth=20%

)

log on

(

  name=studblog,

  filename='F:\studblog.ldf',

  size=1mb,

  maxsize=5mb,

  filegrowth=1mb

)

--7

drop database studb

--  第四章 (对于表处理——alter table 表名_增(add )、删    (drop))

--①.创建成绩表

create database two

use two

create table 成绩

(

    学号      char(12)    not null,

    课程号    char(12)    not null,

    授课教师  varchar(12)  not null,

    期中成绩  int,       

  期末成绩  int,     

  总评成绩  char(8)    not null,

    primary key (学号,课程号)

)

--创建课程表

--1

create table 课程

(

  课程号    char(12)    not null primary key,

    课程名称  varchar(30)  not null,

    授课教师  varchar(10)  not null,

    学分      int            null

  )

--②

alter table 课程

alter column 学分  smallint not null

alter table 课程

alter column 课程名称  varchar(10)

--③

alter table 成绩

add 总成绩  int

alter table 成绩

add 平时成绩 int null

alter table 成绩

drop column 授课教师

--(2)表数据操作

--①.向表中插入数据

insert 成绩(学号,课程号,期中成绩,期末成绩,总评成绩,总成绩,平时成绩)

values('1','2','3','4','5','6','7')

insert 课程(课程号,课程名称,授课教师,学分 )

values('2','3','4','5')


第五章 单数为主 其中(1)① 和(2)⑦ 不考

--(1)

--③.检索其他系中年龄小于计算机系年龄最大者的学生

--  方法.1

select stu_id,stu_name

from 学生信息

where datediff(yy,stu_birth,getdate())<

(select  max(datediff(yy,stu_birth,getdate()))

from 学生信息

where 学生信息.dept_id=(select dept_id from 系部

where dept_name='计算机系'))and dept_id!

=(select dept_id from 系部

where dept_name='计算机系')

--  方法.2

select stu_id,stu_name

from 学生信息

where stu_birth> (select  min(stu_birth)from 学生信息

where 学生信息.dept_id=(select dept_id from 系部

where dept_name='计算机系'))

and dept_id!=(select dept_id from 系部

where dept_name='计算机系')

--⑤.检索全部学生都选修的课程表中的课程号和课程名称

select course_id,course_name

from 课程

where

        (select count(*) from 成绩 where course_id=课程.course_id)

        =(select count(*) from 学生信息)


--(2)

--①.根据课程分组,统计期中成绩的平均分和总分

select  course_id ,avg(score) as 平均分,sum(score) as 总分

from 成绩

group by course_id

order by avg(score),sum(score)

--③,根据课程号和学号分组,分组条件是期末的平均成绩不低于90分,统计期末

--成绩的平均分

select sum(score)总分,avg(score)as 平均分 from 成绩

group by course_id

having avg(score)>=90

order by sum(score),avg(score)

--⑤,列出年龄等于18岁的学生的成绩记录

select score

from 成绩

where (select stu_id,stu_name

        from 学生信息 where datediff(yy,stu_birth,getdate())=18)

***求年龄的语句: datediff(yy,stu_birth,getdate())

--(3)

--①

  create view 计算机系学生

select stu_id,stu_name,stu_sex,stu_birth,dept_name

  from 学生信息 inner join 系部 on 系部.dept_id=学生信  息.dept_id

where dept_name='计算机系'

--③ 重命名视图

  exec sp_rename 计算机系学生,v_计算机系学生

--⑤

    drop view v_计算机系学生



第六章

(1)使用对象资源管理器与T_sql语句两种方式创建索引:::::::聚焦索引---unique index  ;  复合索引——nonclustered

  create unique index indexname

①.在jxgl数据库的"系部"表上按dept_id 创建一个名为    dept_id_index的聚集索引

  use jxgl

    create unique index dept_id_index on 系部 (dept_id)

②.在jxgl数据库的"系部"表上按stu_id 和course_id 创建一个名为    stu_course_index的复合索引-----nonclustered

    use jxgl

create nonclustered index stu_course_index on 成绩 (stu_id,course_id)

③.在jxgl 数据库“学生信息”表上按stu_id建立聚集引    stu_id_index

    create unique index stu_id_index  on 学生信息 (stu_id)



第八章 (1)、(2)、(5)、(6)

--(1)

use jxgl

declare @a int

set @a=(select count(*) from 学生信息)

select @a=count(*) from 学生信息

select @a as '总人数'

--(2)

select @@version as 版本

select @@language as 语言

select @@servicename as 服务器

select @@servername as 服务器名称

select @@max_connections as 同时连接的最大用户数

--(5)

select stu_id,

        course_name=case course_id

          when '112011' then '近代文学'

          when '112012' then '哲学'

          when '312010' then '大学英语'

          when '312011' then '西方文学'

          when '612010' then '大学语文'

          when '612020' then 'sql server'

          when '612021' then 'jsp'

          end,

      score

from 成绩

--(6)

declare @i int,@s int

set @i=1

set @s=1

while @i<=10

  begin

    set @s=@s*@i

      set  @i=@i+1

  end

  print '10!='

  print @s

  --select @s as '10!'




第九章 (1)、(2)、(5)、(6)

--(1)

create procedure Insert_stu

@xid char(10),@xname varchar(10),@xsex char(2),@xbirth smalldatetime,@xdept char(4)

as

begin

insert into 学生信息

(stu_id,stu_name,stu_sex,stu_birth,dept_id)

values(@xid,@xname,@xsex,@xbirth,@xdept)

end

--(2)

use jxgl

execute Insert_stu @xid='1100',@xname='小薛',@xsex='女',@xbirth='1996/2/8',@xdept='d005'

--(5)

    create procedure Query_stu

    @xid char(10)

    as

    begin

    select stu_name,stu_sex,stu_birth

    from 学生信息

    where stu_id=@xid

    end

--(6)

  execute Query_stu '2013010115'



第十章,单数为主——1,3,5,7,9,11

--(1)为学生信息表和课程表建立主键约束

use jxgl

alter table 学生信息

add constraint st_pk

primary key(stu_id)

use jxgl

alter table 课程

add constraint cs_pk

primary key(course_id)

--(3)删除1/2中创建主键

alter table 学生信息

drop constraint st_pk

alter table 课程

drop constraint st_pk

alter table 学生信息

drop constraint st_uk

alter table 课程

drop constraint cs_uk

--(5)为学生信息表的性别列定义check约束,值域为'男'或'女'

alter table 学生信息

add constraint st_sex check (stu_sex='男' or stu_sex='女')

--(7)将(6)中创建的默认值对象和规定对象与性别解除绑定并删除

drop rule ll_sex

--(9) 调用insert_stu 存储过程验证触发器

use jxgl

exec Insert_stu @xid='1111',@xname='笑笑',@xsex='女'

,@xbirth='1995/5/1',@xdept='d007'

--(11)

create trigger tr_person_del

on Txl

with encryption

after delete

as

delete from Txl

where id=(select id from deleted)

go

--(10) 管理触发器

--① 建立数据库testdb,并在数据库中建立两个表

create database testdb

create table Txl(id int,name char(10),age int)

create table Person_count(Person_count int, id int)

--②

create trigger tr_person_insert

on Txl

for insert

as

update Person_count set Person_count=Person_count+1 where id=1

--验证

insert Person_count values(0,1)

insert Txl values(2,'峭',20)

--③

create trigger tr_person_del

on Txl

for delete

as

begin

update  Person_count set Person_count=Person_count-1 

end

--验证

delete Txl

where name='峭'

你可能感兴趣的:(2018-03-07)