新建数据表
CREATE TABLE XSB (
学号 char(6) NOT NULL ,
姓名 char(8) NOT NULL ,
性别 bit NULL DEFAULT (1) ,
出生时间 datetime NULL ,
专业 char(12) NULL ,
总学分 int NULL DEFAULT (0) CHECK (总学分>=0 AND 总学分<160) ,
备注 varchar(500) NULL ,
PRIMARY KEY (学号)
)
新建表名为XSB的表,NOT NULL 非空 , PRIMARY KEY (学号) 将学号设为主键
修改数据表
添加一列:在XSB表中增加1个新列—奖学金等级,类型为tinyint,允许为null
alter table XSB
add 奖学金等级 tinyint NULL
修改一列:修改XSB表中奖学金等级列的类型,类型为int,不允许为null
alter table XSB
alter column 奖学金等级 int NOT NULL
删除一列:删除XSB表中奖学金等级这一个列
alter table XSB
drop column 奖学金等级
GO
插入数据
语法格式:
insert into 表名(字段名,...) values(值,...);
insert into XSB(学号,姓名,性别,出生时间,专业) values('180135','曹晨磊',1,'1997-12-05','计算机网络');
删除数据
语法格式:
delete from 表名 【where 筛选条件】;
delete from XSB where 学号 = '180135';
表数据查询
简单查询
查询学生表所有学生信息
select * from XSB;
查询学生表所有学生的学号和姓名
select 学号,姓名 from XSB;
去重查询
语法格式:
select distinct 字段名 from 【表名/查询结果集】;
查询XSB表中所有学生的专业,要求去重
select distinct 专业 from XSB;
条件查询
条件运算符:>、>=、<、<=、=、<>(不等于)、!=(不等于)、!<(不小于)、!>(不大于)
逻辑运算符:and、or、not
模糊运算符:
like:%任意多个字符、_任意单个字符,如果有特殊字符,需要使用escape转义
between and
not between and
in
not in
is null
is not null
查询学号为“081103”的学生的信息
select * from XSB where 学号 = '081103';
查询以“王”开头的学生的信息
select * from XSB where 姓名 like '王%';
查询学生总学分小于45分的学生信息
select * from XSB where 总学分 < 45;
查询学生总学分小于45分并且大于42分的学生信息
select * from XSB where 总学分 > 42 and 总学分 < 45;
查询所有备注信息不为空的学生信息
select * from XSB where 备注 is not null;
查询所有备注信息为空的学生信息
select * from XSB where 备注 is null;
查询学号为“081101”、“081102”、“081103”这三位同学的信息,要求使用in
select * from XSB where 学号 in ('081101','081102','081103');
查询学号不为“081101”、“081102”、“081103”这三位同学的信息,要求使用in
select * from XSB where 学号 not in ('081101','081102','081103');
分组查询
select 【*/字段名,...】 from 【表名/查询结果集】
【where 查询条件】
group by 分组条件;
按照学生专业对学生进行分组,查询分组后每个专业的名称
select 专业 from XSB group by 专业;
按照学生专业对学生进行分组,查询分组后每个专业的名称以及所对应的学生人数
select 专业,COUNT(*) as 学生人数 from XSB group by 专业;
按照课程号对课程进行分组,查询当前课程下所对应的最高成绩
select 课程号,MAX(成绩) from CJB group by 课程号;
按照课程号对课程进行分组,查询当前课程下所对应的平均成绩
select 课程号,AVG(成绩) from CJB group by 课程号;
过滤查询
语法格式:
select 【*/字段名,...】 from 【表名/查询结果集】
【where 查询条件】
group by 分组条件
having 过滤条件;
按照课程号对课程进行分组,查询当前课程下所对应的平均成绩大于75分的课程号信息
select 课程号,AVG(成绩) from CJB group by 课程号 having AVG(成绩) > 75;
排序查询
语法格式:
select 【*/字段名,...】 from 【表名/查询结果集】
【where 查询条件】
【group by 分组条件】
【having 过滤条件】
order by 排序字段 asc|desc;
对课程号为“101”的课程所对应的学生成绩进行降序排序
select * from CJB where 课程号 = '101' order by 成绩 desc;
多表查询
查询学号为“081101”学生选修课程的名称以及成绩,要求输出学生学号、姓名、课程名、成绩,并且对成绩进行升序排序
select x.学号,x.姓名,k.课程名,c.成绩 from XSB x,CJB c,KCB k
where x.学号 = c.学号 and c.课程号 = k.课程号
and x.学号 = '081101'
order by c.成绩 asc;
子查询
语法格式:
select 【*/字段名,...】 from 【表名/查询结果集】
where 查询条件包含select子句
查找选修206号课程的学生姓名
select 姓名 from XSB
where 学号 in (select 学号 from CJB where 课程号 = '206');