任務9 P128 9.2.5 獨立實踐

use JWGL_DB
go
insert into 學生 
values ('106317','周星祖','0','1981-01-01','15812776788','020-123456','廣州番禺',1),
('101246','周星星','0','1982-01-01','15812776789','020-123456','廣州番禺',1),
('108863','周星大','0','1983-01-01','15812776787','020-123456','廣州番禺',1),
('1213430108','皇上','0','1980-01-01','15812776790','020-123456','廣州番禺',1),
('1213430101','王上','1','1986-01-01','15812776796','020-123456','廣州番禺',1),
('1213430102','黃上','1','1987-01-01','15812776798','020-123456','廣州番禺',1),
 ('1213430103','王中','1','1988-01-01','15812776797','020-123456','廣州番禺',1),
('1213430104','王下','0','1992-01-01','15812776795','020-123456','廣州番禺',1),
('1213430105','黃貫中','0','1991-01-01','15812776794','020-123456','廣州番禺',1),
('1213430106','張三','0','1994-01-01','15812776793','020-123456','廣州番禺',1),
('1213430107','李四','0','1993-01-01','15812776792','020-123456','廣州番禺',1)
--1.創建範圍查詢
--(1)使用兩種方法,查詢1986年1月1日到1992年1月1日出生的所有學生的姓名、學號和出生日期。
select 姓名,學號,出生日期 
from 學生 
where 出生日期 between '1986-01-01' and '1992-01-01'
order by 出生日期

select 姓名,學號,出生日期 
from 學生 
where 出生日期 >='1986-01-01' and 出生日期 <='1992-01-01'
order by 出生日期

--(2)使用兩種方法,查詢非1990年出生的所有學生信息姓名、學號和出生日期。
select 姓名,學號,出生日期 
from 學生 
where 出生日期 not between '1986-01-01' and '1992-01-01'
order by 出生日期

select 姓名,學號,出生日期 
from 學生
where 出生日期 <'1986-01-01' or 出生日期 >'1992-01-01'
order by 出生日期

--2創建列表查詢
--(1)使用兩種方法,查詢課程編號爲1001,1002和1005的課程的名稱和學分
select 課程名稱,學分
from 課程
where 課程編號 in(1001,1002,1005)

select 課程名稱,學分
from 課程
where 課程編號 = 1001 or 課程編號 = 1002 or 課程編號 = 1005

--(2)使用兩種方法,查詢學號不爲106317,101246,108863的學生的信息。
select *
from 學生
where 學號 not in ('106317','101246','108863')

select *
from 學生
where 學號 != '106317' and 學號 !='101246' and 學號 !='108863'

--(3)給課程表的學分列創建一個約束,學分列的值只能爲1、2、3、4中的一個值。

alter table 課程 drop constraint ck_學分	--在添加約束之前必須確保課程表的學分字段的所有數據值在1至4範圍內,否則添加約束失敗。
update 課程 set 學分=3 where 學分 not between 1 and 4

alter table 課程 add constraint ck_學分 check(學分 in(1,2,3,4))
select name from sys.check_constraints where name = 'ck_學分'

--3創建模糊查詢
--(1)查詢姓“王”的學生的姓名、學號和出生日期。
select 姓名,學號,出生日期 from 學生
where 姓名 like '[王]%'

--(2)查找課程名稱中任意位置包含“計算機”的所有課程的名稱和學分。
select 課程名稱,學分 from 課程
where 課程名稱 like	'%計算機%'

--(3)查詢學生手機號中第2個號碼爲5的學生的學號、姓名、手機號。
select 學號,姓名,手機號 from 學生
where 手機號 like '[0-9][5]%'

--(4)查詢學生手機號中第2個號碼爲5,最後一個號碼爲8的學生的學號、姓名、手機號。
select 學號,姓名,手機號 from 學生
where 手機號 like '[0-9]5%8'

--(5)查詢學生手機號中第2個號碼不爲5,最後一個號碼不爲8的學生的學號、姓名、手機號。
select 學號,姓名,手機號 from 學生
where 手機號 like '[0-9][^5]%[^8]'

--(6)查詢學生的家庭電話的區號爲020的學生的學號、姓名、家庭地址、家庭電話。
select 學號,姓名,家庭地址,家庭電話 from 學生
where 家庭電話 like '[0][2][0]%'

--(7)給學生表的手機號列創建一個約束,手機號只能由11位數組成,且開始的一位數是1。
select * from sys.check_constraints
alter table 學生 add constraint [ck學生(手機號)] check(手機號 like '[1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
select name from sys.check_constraints where name='ck學生(手機號)'

--(8)查找課程名稱中有符號%的課程的編號、課程名稱和學分。
select 課程編號,課程名稱,學分 from 課程
where 課程名稱 like '%[%]%'

--4.使用NULL值查詢
--查詢"班級"表中,備註列爲空的班的信息。
alter table 班級
add 備註 nvarchar(Max) null

select * from 班級
where 備註 is null

2013-06-25

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章