SQL语句

您所在的位置:网站首页 投影的sql语句怎么写 SQL语句

SQL语句

2023-07-16 21:05| 来源: 网络整理| 查看: 265

目录

定义表

删除表

修改表

1.修改列

2.添加列

3.删除列

插入数据

单张表操作(三种方法插入数据(11对应))

多张表操作(从一张表A1插入数据到另一张表A2)

更新数据

删除数据

查询

SQL基本查询语句

1.查询语句的基本结构

2.投影

3.选择

4.排序

聚集查询

1.聚集函数

2.使用 group by 分组

3.使用having 子句筛选结果集

连接查询

1.内连接查询(多张表连接)

定义表

语法格式:

create table 学生表{

学号 int,

姓名 char(8),

性别 char(1),

班级 char(10),

年龄 int(2)

}

删除表

语法格式:

drop table 表名

修改表 1.修改列

alter table 表名 alter column 列名 新数据类型

//例:将语句中的教师列的类型改为char(6) ​ alter table 选课表 alter column 教师 char(6)

2.添加列

alter table 表名 add 新列名 数据类型

//例:选课表添加“课程类别”列,类型字符串,长度4 ​ alter table 选课表 add 课程类别 char(4)

3.删除列

alter table 表名 drop column 列名

//例:删除课程表中的备注列 ​ alter table 选课表 drop column 备注

插入数据

insert into 表名 (列名列表) values (值列表)

单张表操作(三种方法插入数据(11对应)) //例:要求学生表中插入一行数据:学号为9999,姓名张三,性别男,其他情况未知 ​ insert into 学生表(学号,姓名,性别) values ('9999','张三','m') ​ insert into 学生表 values('9999','张三','m','null','null') ​ insert into 学生表 values('9999','张三','m',default,default)

多张表操作(从一张表A1插入数据到另一张表A2) //例:假设有一张和学生表定义完全一样的表,表名为'学生表1',要求在其中插入学生表中所有男生的信息 ​ insert into 学生表1(学号,姓名,性别,班级,年龄) select 学号,姓名,性别,班级,年龄 from 学生表 where 性别='m'

更新数据

update 表名 set 列名 = 表达式 [ , ... , n ] [ where 更新条件 ]

//例1:要求所有学生的年龄加1 update 学生表 年龄 = 年龄+1 //例2:修改软件工程这门课的信息 要求将“软件工程”的周课时数改为8课时,并把备注改为“核心课程” ​ update 课程表 set 周课时数=8,备注='核心课程' from 课程表 where 课程名='软件工程' //例3:用子查询实现数据更新 要求将学号“11111”的学生的年龄改为与学号为“22222”的学生的年龄一样 update 学生表 set 年龄=(select 年龄 from 学生表 where 学号='22222') where 学号='11111' //例4:用子查表连接实现数据更新(更新条件基于另一张表) 要求将GZ02计6全班学生的成绩都加上10分 ​ 1. update 选课表 set 成绩=成绩+10 where 学号 in (select 学号 from 学生表 where 班级='GZ02计6') ​ 2. update 选课表 set 成绩=成绩+10 from 选课表 join 学生表 on 学生表.学号=选课表.学号 where 班级='GZ02计6'

删除数据

delete from 表名 where 删除条件

//例1:要求删除所有学生的选课记录 delete from 选课表 //删除表中全部数据,但保留表结构 //例2:要求删除GZ02房产的全部学生 delete from 学生表 where 班级='GZ02房产' //例3:删除GZ02计6班不及格学生的选课记录 delete from 选课表 where 成绩=

例1:要求检索出选课表中所有成绩在95分以上的同学的学号、课程号、成绩 select * from 选课表 where 成绩>95 例2:要求检索出班级为GZ02计6班的全部学生的信息 select * from 学生表 where 班级='2108财会'

2.逻辑运算符 and 、not 、or

例:选修了1号课程并且成绩在80分以上的同学的学号和成绩 select 学号,课程号,成绩 from 选课 where 课程号='1' and 成绩>80

3.between....and

例:学生表中年龄在20-23之间的所有男同学的信息 select * from 学生表 where 年龄 between 20 and 23 and 性别='M'

4.in ( not in )意思是包含在表中有/没有 in 指定的列

要求学生表中有a5、a6、a7三个班级的同学信息 ​ 使用in 例:select * from 学生表 where 班级 in ('GZ02计5','GZ02计6','GZ02计7') ​ 没有用in 例:select *from 学生表 where 班级='GZ02计5' or 班级='GZ02计6' or 班级='GZ02计7'

5.字符串模糊匹配 like关键字

列名 [not] like 匹配字符串

要求使用like关键字实现 例1:学生表中所有姓陈的同学 select * from 学生表 where 姓名 like '陈%' ​ 例2:学生表中姓陈或姓李或姓刘的同学 select * from 学生表 where 姓名 like '[陈李刘]%'

6.涉及空值的查询

空值具有以下特性:

等价于没有任何值

与0、空字符串、空格不同

排序在其他数据前面

在计算过程中和大多数函数中均可以使用空值

判断某个值是否为空值的语句格式: 列名 is [not] null

例:要求查询已经有课,但无考试成绩的学生的学号和相应的课程号 select 学号,课程号 from 选课表 where 成绩 is null 例:查询所有有考试成绩的学生的学号和课程号 select 学号,课程号 from 选课表 where 成绩 is not null

4.排序

order by 排列查询结果的顺序:

asc 升序

desc 降序

例:选课表中所有选修课课程号为1,并且成绩在95分以上的同学的学号和成绩, 并要求按成绩从高到低排序 select 学号,成绩 from 选课表 where 课程号=1 and 成绩>=95 order by 成绩 desc 例:按成绩降序,如果成绩相同,再要求按学号进行升序排列 select 学号,成绩 from 选课表 where 课程号=1 and 成绩>=95 order by 成绩 desc,学号

聚集查询 1.聚集函数

avg 平均值

count(*) 数据值的数量

count 选择行的数量

max 最大值

min 最小值

sum 表达式中所有值

注意:这些聚集函数必须用在select子句中,其返回的结果在查询结果中作为新列出现

max、min、avg 函数的使用 ​ 例:要求通过选课表查询出所有选修1号课程的学生的最高分、最低分、平均分 select max(成绩) as 最高分,   min(成绩) as 最低分,   avg(成绩) as 平均分 , from 选课表 where 课程号=1 count 函数的使用 例: select count(*) as 所有记录数,       count(学号) as 所有学生数,       count(班级) as 班级列数量,       count(distinct 班级) as 班级数   ----不重复 from 学生表  

2.使用 group by 分组 例1:按班级汇总人数和平均年龄 select 班级,       avg(年龄) as 平均年龄,       count(学号) as 班级人数, from 学生表 group by 班级 例2:对a6班的同学按性别计算平均年龄 select 性别,avg(年龄) as 平均年龄 from 学生表 where 班级='GZ02计6' group by 性别

3.使用having 子句筛选结果集

having 子句是为 group by 设置条件的方式,与where子句在select 语句设置条件的方式一样

使用having 子句时,需注意:

having 子句只在group by 子句中使用

在having语句中可以引用任何允许出现在select选择列表中的字段

例:在已经给出了按班级汇总人数和平均年龄的实例,在此基础上, 筛选出平均年龄在19-20岁且班级人数在40人以上的班级 select 班级,       count(*) as 班级人数,       avg(年龄) as 平均年龄 from 学生表 group by 班级,平均年龄 having avg(年龄) between 19 and 20 and count(*)>40  

连接查询 1.内连接查询(多张表连接)

如果两个表的相关字段满足连接条件,则从这两个表中提取数据并组合成新的记录

语法格式(2种):

from 表1 inner join 表2 on 表1.字段1=表2.字段1

from 表1 , 表2 where 表1.字段1=表2.字段1



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3