SQL 进阶学习之三

reate database SCR

use scr
go
--

create table s
(
sid 
int identity(1000,5primary key,
sname 
varchar(50)  null,
sage 
int  null,
ssex 
char(2check(ssex='' or ssex='')
)

create table c
(
cid 
int identity (10000,100) ,
cname 
varchar(50null,
cteacher 
varchar(50null,
primary key (cid)
)

create table sc
(
sid 
int ,
cid 
int ,
cgrade 
int  null check(between 0 and 100),
foreign key (sid) references s(sid),
foreign key  (cid) references c(cid)
)


insert into C
(cname,cteacher)
values('C#','Teacher Liu')

insert into C
(cname,cteacher)
values('ASP','Teacher ')

select top 1 * from C

select * from C

update C
set cname = 'SQL'
where cid = 10000


delete top(1)  C

drop table C


drop database SCR



truncate  table C



insert into s
(sname ,sage ,ssex)
values('宋斌',23,'')

select * from S
select * from C
select * from sc

delete top(1) S


UPDATE C
SET CTEACHER = 'TEACHER5'
WHERE CID = 10800 
UPDATE C
SET CTEACHER = 'TEACHER6'
WHERE CID = 10900 
UPDATE C
SET CTEACHER = 'TEACHER8'
WHERE CID = 11100 




-- 检索出课程号为10700的学生的姓名和学号
--
 1 )join
 select s.sname,s.sid
from s join sc
on s.sid = sc.sid
where sc.cid = 10700

-- 联接查询  相当于一个 FULL JOIN
select s.sname,s.sid
from s ,sc
where s.sid = sc.sid
and sc.cid = 10700

-- 2)select 嵌套查询或子查询
select sname,sid
from s
where sid =
(
select sid
from sc
where cid = 10700
)


select sname,sid
from s
where sid in --in 结构为:(集合1) in  (集合2) 表示集合1中的每个元素均在集合2中
(
select sid
from sc
where cid = 10700
)

select sname,sid
from s
where 10700 in
(
select cid
from sc
where sid = s.sid
)

select sname,sid
from s
where 10700 = all
(
select cid
from sc
where sid = s.sid
)



select sname,sid
from s
where exists
(
select sid
from sc
where cid = 10700
and sid = s.sid
)


select sname,sid
from s
where not exists
(
select sid
from sc
where cid = 10700
and sid = s.sid
)



SELECT SNAME,SID
FROM S
WHERE SID <> 
(
SELECT SID
FROM SC
WHERE CID = 10700
)




-- 检索选修课程名为 SQL 的学生的学号和姓名
select sid,sname
from s
where sid in
    (
        
select sid
        
from sc
        
where cid in
        (
            
select cid
            
from c
            
where cname = 'SQL'
        )
    )

select s.sid ,s.sname
from s,c,sc
where s.sid = sc.sid and c.cid = sc.cid
and c.cname = 'sql'

select *
from s,c,sc

-- 检索任课教师为 teacher liu 的学生的学号和姓名


-- 检索不学 C# 课程的学生的姓名和年龄
select sname,sage
from s
where sid not in
(
    
select sid
    
from sc
    
where cid not in
    (
        
select cid
        
from c
        
where cname = 'C#'
    )
)


-- 检索学习全部课程的学生姓名和性别
select sname ,ssex
from s
where not exists
(
    
select *
    
from c
    
where not exists
    (
        
select *
        
from sc
        
where sc.sid = s.sid
        
and sc.cid = c.cid
    )
)


CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ] 
[ WITH <view_attribute> [ ,...n ] ] 
AS select_statement [ ; ]
[ WITH CHECK OPTION ] 

<view_attribute> ::= 
{
    
[ ENCRYPTION ]
    
[ SCHEMABINDING ]
    
[ VIEW_METADATA ]     }


create view 视图名 (列名) 
as
select 查询语句 


select s.sid ,s.sname
from s,c,sc
where s.sid = sc.sid and c.cid = sc.cid
and c.cname = 'sql'

create view scrview
(sid,cid,sname,cname,cgrade)
as 
select s.sid,c.cid,s.sname,c.cname,sc.cgrade 
from s,sc,c
where s.sid = sc.sid
and c.cid = sc.cid

select sid,sname from scrview 
where cname = 'sql'


drop view scrview


create view scrview
(sid,sname)
as 
select sid,sname
from s
where sid in
    (
        
select sid
        
from sc
        
where cid in
        (
            
select cid
            
from c
            
where cname = 'SQL'
        )
    )

select * from scrview

--
== 索引的语法
CREATE [ UNIQUE ] INDEX index_name 
    
ON <object> ( column_name [ ASC | DESC ] [ ,...n ] ) 


create [unique] index 索引名 on 基本表名 (列名)

--
create index sidindex
on s(sid)


create unique index sname
on s(sname)

select * from s

insert s
(sname)
values('lize')

drop index 表名.索引名
drop index  s.sidindex


ALTER TABLE table_name{ [ ALTER COLUMN column_name    {DROP DEFAULT    | SET DEFAULT constant_expression    | IDENTITY [ ( seed , increment ) ]   } | ADD    { < column_definition > | < table_constraint > } [ ,...n ] | DROP    { [ CONSTRAINT ] constraint_name    | COLUMN column }] }< column_definition > ::=    { column_name data_type }    [ [ DEFAULT constant_expression ]       | IDENTITY [ ( seed , increment ) ]    ]    [ROWGUIDCOL]   [ < column_constraint > ] [ ...n ] ]< column_constraint > ::=    [ NULL | NOT NULL ]    [ CONSTRAINT constraint_name ]    {       | { PRIMARY KEY | UNIQUE }       | REFERENCES ref_table [ (ref_column) ]       [ ON DELETE { CASCADE | NO ACTION } ]       [ ON UPDATE { CASCADE | NO ACTION } ]    }< table_constraint > ::=    [ CONSTRAINT constraint_name ]    { [ { PRIMARY KEY | UNIQUE }       { ( column [ ,...n ] ) }       | FOREIGN KEY         ( column [ ,...n ] )        REFERENCES ref_table [ (ref_column [ ,...n ] ) ]       [ ON DELETE { CASCADE | NO ACTION } ]       [ ON UPDATE { CASCADE | NO ACTION } ]    }

-- 给一个表增加一个新列
alter table 基本表名 
add 列名 类型 [约束] 

-- 给一个表删除列
alter table 基本表名 
drop 列名 [cascade/restrict]
--
alter table s
add saddr nvarchar(100)

select *  from s


alter table s
drop column saddr

cascade


-- ALTER TABLE doc_exy ALTER COLUMN column_a DECIMAL (5, 2) ;
alter table c
alter column cname nvarchar(100)
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值