sql server 2000自己整理的笔记

SQlServer数据库:

--创建数据库 school
create database school

--删除数据库
drop database school

go--可以派出先后执行顺序

--更改当前操纵的数据库
use school

go

--创建教师表-->主表
create table teacher
(
 class_name varchar(20) primary key,
 tea_name varchar(20) not null,
 t_time  datetime default(getdate())
)

go

--创建学生表-->从表
create table student
(
 stu_id  int  identity(1,1)  primary key,
 stu_name varchar(20) not null,
 sex  char(2)  check(sex='男' or sex='女'),
 score  int  default(0),
 class_name varchar(20) foreign key references teacher(class_name)--class_name字段必须是teacher表的主键
)

go

--添加语句insert
insert into teacher(class_name,tea_name)values('s123','张老师')
insert into teacher values('s456','郭老师','2008-1-2 15:51:30')
insert into teacher(class_name,tea_name)values('t123','李老师')
insert into teacher(class_name,tea_name)values('t456','赵老师')
go
insert into student(stu_name,sex,score,class_name)values('李刚','男',68,'s123')
insert into student(stu_name,sex,score,class_name)values('李小明','男',80,'t123')
insert into student(stu_name,sex,score,class_name)values('李大刚','男',97,'t456')
insert into student(stu_name,sex,score,class_name)values('王菲','女',100,'t123')
insert into student(stu_name,sex,score,class_name)values('赵刚','男',90,'s123')
insert into student(stu_name,sex,score,class_name)values('李宁','男',85,'t123')
insert into student(stu_name,sex,score,class_name)values('赵姗','女',56,'s456')
insert into student(stu_name,sex,score,class_name)values('郭蕊','女',78,'t456')
insert into student(stu_name,sex,score,class_name)values('孙小旭','男',60,'s123')
insert into student(stu_name,sex,score,class_name)values('孙津','女',72,'t123')
insert into student(stu_name,sex,score,class_name)values('丁磊','男',23,'t456')


--更新语句
update student set score=80 where stu_name='孙津'
update student set score=81,class_name='t456' where stu_name='孙津'

--删除语句
delete from student--清空表
truncate table student--清空表   不走日志  快
delete from student where stu_name='丁磊'
delete from student where stu_name='丁磊' and stu_name='孙津'


--查询语句
select * from teacher
select * from student

select * from student where stu_name='李刚'
select stu_name,score from student where stu_name='李刚'
select * from student where score!=60
select * from student where score<>60
select * from student where score>60 and sex='女'

--排序 order by
select * from student order by score  --升序
select * from student order by score desc  --降序
select * from student order by stu_name
select * from student order by stu_name,score

--聚合函数 sum、avg、max、min、count
--所有学生成绩总和
select sum(score) as 总和 from student
--所有学生成绩平均分
select avg(score) as 平均分 from student
--s123班级所有学生成绩的平均分
select avg(score) as 平均分 from student where class_name='s123'
--最高分
select max(score) as 最高分 from student
--最低分
select min(score) as 最低分 from student
--参加考试学生人数
select count(*) as 总数 from student
select count(*) as 总数 from student where score<>0


--分组函数 group by   配合着聚合函数一起使用
--注意:查询结果中出现的列,要么出现在聚合函数中,要么出现在group by中
--所有男生和女生的平均分
select avg(score)as 平均分,sex from student group by sex
--查询所有学生的成绩总和,但是去掉不及格的学生成绩
select sum(score) from student where score>=60
--查询每个班级所有学生的平均分
select avg(score) from student group by class_name
--查询班级的个数,平均分不小于60的班级的个数
select count(*) as 学生人数,class_name from student group by class_name having avg(score)>=60
--注意:where、having后边都可以跟条件
--where: 普通的条件查询
--having: 一般都是配合着聚合函数、分组函数

 

--模糊查询 like
--  %  代表任意长度的字符
--  _ 代表任意一个字符
--  [] 代表任意一个位置,可以是多个字符
--查询所有姓李的学生
select * from student where stu_name like '李%'
--查找所有姓李的学生,名字有两个字组成
select * from student where stu_name like '李_'
--查找所有姓张和姓李的学生
select * from student where stu_name like '[李郭]%'
--名字中代“小”
select * from student where stu_name like '%小%'


--多表查询
--内联接 inner join...on (将多张表的字段合为一张表)
--查询张老师班级所有的学生
select * from student inner join teacher
on
student.class_name=teacher.class_name and teacher.tea_name='张老师'

--外联接 outer join...on
  --左外连接 left outer join...on (以左表为主)
--查询张老师班级所有的学生
select * from student s left outer join teacher t
on
s.class_name=t.class_name and t.tea_name='张老师'

  --右外连接 right outer join...on (右表为主)
select * from student s right outer join teacher t
on
s.class_name=t.class_name and t.tea_name='张老师'

  --全外联接 full outer  join...on 
select * from student s full outer join teacher t
on
s.class_name=t.class_name and t.tea_name='张老师'

--子查询 (在查询条件中还包含另外一个sql语句)
select * from student where class_name=(select class_name from teacher where tea_name='张老师')

select * from student where class_name in
(select class_name from teacher where tea_name='张老师' or tea_name='李老师')

select * from student where class_name !=
(select class_name from teacher where tea_name='张老师')

select * from student where class_name not in
(select class_name from teacher where tea_name='张老师' or tea_name='李老师')

 

--联合 union (把多张表的记录合为一张表)

--去掉重复记录
select class_name from student
union
select class_name from teacher

--所有记录全部显示
select class_name from student
union all
select class_name from teacher

 

--多表查询 (相同的字段相等)
select * from student,teacher where
 teacher.tea_name='张老师' and student.class_name=teacher.class_name


--pubs案例数据库  图书作者
sp_tables  --显示该数据库所有的表名
select * from authors   --作者
select * from titles  --图书
select * from titleauthor  --图书作者

--查询Johnson作者的所有的图书
select a.au_id,b.title from authors a,titles b,titleauthor c
 where a.au_id=c.au_id and b.title_id=c.title_id and a.au_fname='Marjorie'


--northwind   订单查询
sp_tables
select * from customers  --客户表
select * from orders  --订单表
select * from products  --产品表
select * from [order details]  --订单明细表

--查询Alfreds Futterkiste订购的所有商品
select a.CustomerID,c.ProductName from Customers a,Orders b,Products c,[Order Details] d
 where a.CustomerID=b.CustomerID and b.OrderID=d.OrderID and
 c.ProductID=d.ProductID and a.CompanyName='Alfreds Futterkiste'


--视图 view  视图一旦创建,始终存在   ---表
--创建视图
create view myview
as
select a.CustomerID,c.ProductName from Customers a,Orders b,Products c,[Order Details] d
 where a.CustomerID=b.CustomerID and b.OrderID=d.OrderID and
 c.ProductID=d.ProductID and a.CompanyName='Alfreds Futterkiste'
go

--修改视图
alter view myview
as
select * from orders
go

--删除视图
drop view myview

select * from myview where productName='Spegesild'


--触发器 trigger
--创建
create trigger mytri
on student
for delete
as
select * from student
go

--修改
alter trigger mytri
on student
for insert,delete,update
as
select * from student
go

--删除
drop trigger mytri

delete from student where stu_id=1
update student set score=100 where stu_name='李小明'

 

--存储过程 proc
--创建
create proc myproc
as
select * from student
go

alter proc myproc @stuId int
as
select * from student where stu_id > @stuId
go

exec sp_tables  --系统存储过程
exec myproc
myproc 6
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值