新建数据表

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 (学号) 将学号设为主键

sql server else用法_sql

修改数据表

添加一列:在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');