文档库 最新最全的文档下载
当前位置:文档库 › sql建表及添加查询等

sql建表及添加查询等

--在系统数据库下运行
use master;
go
--判断是否有名为 stDb 的数据库存在,有则删除
if exists(select * from sys.databases where name='stDb')
drop database stDb;
go
--创建名为 stDb 的数据库
create database stDb;
go
--使用数据库
use stDb;
go

if exists(select * from sys.objects where name='StuBj')
drop table StuBj;
go

if exists(select * from sys.objects where name='StuInfo')
drop table StuInfo;
go

if exists(select * from sys.objects where name='StuMarks')
drop table StuMarks;
go

--创建名为StuBj 的表
create table StuBj(

StuName char(20) not null, --班级名称
Stubh int primary key, --班级编号
teatch char(10) not null --老师名字
)

--创建名为StuInfo 的表
create table StuInfo(
StuID int primary key identity(100,1), --学号
StuName char(10) not null, --姓名
StuSex char(2) not null check(StuSex='男' or StuSex='女') default('男'),--性别
Stubj int references StuBj(Stubh)
)
--创建名为StuMarks 的表
create table StuMarks(
ExamNO int primary key identity(1000,1), --编号
StuID int references StuInfo(StuID), --学号
Subject char(20) not null, --科目
Score int not null --分数
)

--添加表 StuBj 中的信息
insert into StuBj values('一班',101,'张老师');
insert into StuBj values('一班',102,'李老师');
insert into StuBj values('一班',103,'高老师');
insert into StuBj values('一班',114,'万老师');

--添加表 StuInfo 中的信息
insert into StuInfo values('小敏','女',101);
insert into StuInfo values('小强','男',103);
insert into StuInfo values('小米','女',102);
insert into StuInfo values('小明','男',114);

--添加表 StuMarks 中的信息
insert into StuMarks values(100,'语文',90);
insert into StuMarks values(100,'数学',74);
insert into StuMarks values(100,'英语',67);
insert into StuMarks values(101,'语文',95);
insert into StuMarks values(101,'数学',83);
insert into StuMarks values(101,'英语',93);
insert into StuMarks values(102,'语文',96);
insert into StuMarks values(102,'数学',73);
insert into StuMarks values(102,'英语',87);
insert into StuMarks values(103,'语文',62);
insert into StuMarks values(103,'数学',97);
insert into StuMarks values(103,'英语',77);

--设置查询结果
select StuID as 学号, StuName as 姓名, StuSex as 性别 from StuInfo
select ExamNO 编号, StuID 学号, Subject 科目, Score 分数 from StuMarks

--模糊搜索,用like关键字 和 通配符%
select * from StuInfo where StuSex like '%女%';

--between 关键字的运用 在80~90之间的数 不在80~90之间的数
select * from StuMarks where Score between 80 and 90;
select * from StuMarks where Score not between 80 and 90;

--关键字 in 的运用 只显示 id 为101和102 的数据 不显示 id 为101和102 的数据
select * f

rom StuMarks where StuID in(101,102);
select * from StuMarks where StuID not in(101,102);

--对查询结果进行排序 order by,升序从小到大 asc 或 降序 从大到小 desc
select * from StuMarks where StuID =101 order by Score asc;

--聚合函数 对表中的数据进行计算
--求和
select sum(Score) as 总分 from StuMarks;
-- 求平均分
select avg(Score) as 平均分 from StuMarks;
-- 求最大值
select max(Score) as 最大值 from StuMarks;
--求最小值
select min(Score) as 最小值 from StuMarks;

--统计数据的条数
select count(*) as 条数 from StuMarks;

--对查询结果进行分组
select StuID as 学号 , avg(Score) as 平均分 from StuMarks group by StuID;

--对分组好的结果进行分组过滤 having 学号不等于101的学生成绩
select StuID as 学号 , avg(Score) as 平均分 from StuMarks where StuID !=100 group by StuID having StuID!=101

--对分组好的成绩进行升序排列
select StuID as 学号 , avg(Score) as 平均分 from StuMarks where StuID !=100 group by StuID having StuID!=101 order by 平均分 asc

--联合查询
select * from StuInfo , StuMarks
--联合查询 带上条件表达式
select * from StuInfo , StuMarks where StuInfo.StuID = StuMarks.StuID

--关键字inner join on
select * from StuMarks inner join StuInfo on StuMarks.StuID = StuInfo.StuID
--多表查询 左链接 以左边的表名为主
select * from StuMarks left join StuInfo on StuMarks.StuID = StuInfo.StuID
select * from StuInfo left join StuMarks on StuMarks.StuID = StuInfo.StuID
--多表查询 右链接 以右边的表名为主
select * from StuMarks right join StuInfo on StuMarks.StuID = StuInfo.StuID
select * from StuInfo right join StuMarks on StuMarks.StuID = StuInfo.StuID
--查询表中的信息
select * from StuInfo;

select * from StuMarks;

相关文档
相关文档 最新文档