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='峭'

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容