数据库查询操作

创建数据表

create table 表名(
	字段名1 类型 约束,
	字段名2 类型 约束,
)

数据库查询操作_第1张图片
数据库查询操作_第2张图片
在新建查询里面,用命令行的方式创建表,这样会有提示,有错的话,方便后面检查
数据库查询操作_第3张图片
选中要运行的代码-》点击上方的“运行已选择的”-》下方出现OK,表示运行成功
数据库查询操作_第4张图片
如图所示,成功创建students表
数据库查询操作_第5张图片

删除表

//删除数据表
drop table students;
drop table if exists students;

数据库查询操作_第6张图片
数据库查询操作_第7张图片

练习一(创建表,删除表,插入数据,简单查询数据)

//创建一个成绩表,姓名(长度为10),班级(长度为8),科目(长度为56),成绩(保留两位小数)
create table score(
	name varchar(10),
	class varchar(8),
	subject varchar(56),
	result decimal(4,1)
);
insert into score values('Mike','六班','语文','59');

insert into score(name) values('Jane');

select * from score;

drop table score;
drop table if exists score;

数据库查询操作_第8张图片

一些操作数据库,表的命令

功能 命令
查看所有数据库 show databases
使用数据库 use 数据库名
查看当前使用的数据库 select database()
创建数据库 create database 数据库名 charset=utf-8
删除数据库 drop database 数据库名
查看数据库所有的表 show tables
查看数据表的结构 desc 表名
查看数据表的创建语句 show create table 表名

添加多行数据

//通过一条insert语句,插入多条数据,数据间用逗号分隔
insert into 表名 values(0,'Bill',25,158.56),(0,'kill',21,168.56)

insert into 表名(字段名1,...)values(1,...)

数据库查询操作_第9张图片

修改数据

update 表名 set 字段名1=1,字段名2=2... where 条件

数据库查询操作_第10张图片
PS:修改数据时一定要记得加条件,不然修改的是所有记录的值

删除数据

//这个方法是物理删除对应的数据,工作中大部分使用逻辑删除。

//所谓逻辑删除是指通过设定一个字段来标识当前记录已删除,is_delete字段来标识,1表示删除,0标识未删除
delete from 表名 where 条件
delete from students where id=6

//其他删除数据的方法,这个方法用得少,一般直接用drop table 表名,这样删的彻底点,效率高
truncate table 表名(清除表里面所有数据,但是表结构会保留,自增长字段的值会从1开始)
truncate table students;

数据库查询操作_第11张图片

练习二(添加多条数据,修改数据,删除数据)

通过一条SQL语句在成绩表中新增以下三条数据
– 张三,一班,语文,89.5
– 李四,二班,数学,66.3
– 王五,三班,英语。78.6
数据库查询操作_第12张图片

将成绩表中李四的数学成绩改为97
数据库查询操作_第13张图片

删除学生为王五的记录
数据库查询操作_第14张图片

数据查询

数据准备
数据库查询操作_第15张图片

//查询部分字段数据
select 字段1,字段2... from 表名

//起别名
select 别名.字段1,别名.字段2... from 表名 as 别名
select 字段1 as 别名1,字段2 as 别名2... from 表名

//去重
select distinct 字段1... from 表名

/*
条件查询
where支持多种运算符进行条件处理
比较运算
逻辑运算
模糊查询
范围查询
空判断
*/
select 字段1,字段2... from 表名 where 条件;

查询某些字段
数据库查询操作_第16张图片

起别名 表名 as 表别名
数据库查询操作_第17张图片

字段内容去重
数据库查询操作_第18张图片
数据库查询操作_第19张图片

练习三(条件查询-比较运算符)

查询小乔的年龄
数据库查询操作_第20张图片

查询20岁以下的学生
数据库查询操作_第21张图片

查询家乡不在北京的学生
数据库查询操作_第22张图片

查询学号是‘007’的学生的身份证号
数据库查询操作_第23张图片

查询‘1班’以外的学生信息
数据库查询操作_第24张图片

查询年龄大于20的学生的姓名和性别
数据库查询操作_第25张图片

练习四(条件运算符-逻辑运算符)

查询年龄小于20的女同学
数据库查询操作_第26张图片

查询女学生或者‘1班’的学生
数据库查询操作_第27张图片

查询非天津的学生
数据库查询操作_第28张图片

查询河南或河北的学生
数据库查询操作_第29张图片

查询’1班’的‘上海’的学生
数据库查询操作_第30张图片

查询非20岁的学生

数据库查询操作_第31张图片

练习五(条件查询-模糊查询)

关键字:like
%:匹配任意多个字符
_:匹配一个任意字符

查询姓孙的学生
数据库查询操作_第32张图片
查询姓孙且名字是一个字的学生
数据库查询操作_第33张图片
查询姓名以‘乔’结尾的学生数据库查询操作_第34张图片

查询姓名中包含‘白’的学生
数据库查询操作_第35张图片
查询姓名为两个字的学生
数据库查询操作_第36张图片

查询姓‘百’且年龄大于20的学生
数据库查询操作_第37张图片

查询学号以1结尾的学生
数据库查询操作_第38张图片

练习六(条件查询-范围查询)

in:表示在一个非连续的范围内
between...and...:表示在一个连续的范围内

查询家乡是北京或上海或广东的学生
数据库查询操作_第39张图片
查询年龄为18至20的学生
数据库查询操作_第40张图片
查询年龄为18或19或22的女生
数据库查询操作_第41张图片

查询年龄在20到25以外的学生
数据库查询操作_第42张图片
数据库查询操作_第43张图片

练习七(空判断)

判断为空:is null
判断非空:is not null

查询没有填写身份证的学生
数据库查询操作_第44张图片

查询填写了身份证的学生
空字符和null,两者不一样
数据库查询操作_第45张图片

排序

语法格式
select * from 表名 order by 字段名1 asc|desc,字段名2 asc|desc,...

说明:
将行数据按照字段1进行排序,如果某些字段1的值相同时,则按照字段2排序,以此类推;
默认按照值从小到大排列;
asc从小到大排列,即升序;
desc从大到小排序,即降序

查询所有学生信息,按年龄从小到大排序
数据库查询操作_第46张图片
查询所有学生信息,按年龄从大到小排序,年龄相同时,按学号从小到大排序
数据库查询操作_第47张图片
查询所有学生信息,按班级从小到大排序,班级相同时,再按学号从小到大排序
数据库查询操作_第48张图片

练习八(聚合函数)

1、使用聚合函数方便进行数据统计
2、聚合函数不能在where中使用
count():查询总记录数
max(字段名):查询最大值
min(字段名):查询最小值
sum(字段名):求和
avg(字段名):求平均值

查询学生总数
因为不管查询那个字段,出来的结果都是12个,所以这边可以直接用*表示查询所有的
数据库查询操作_第49张图片

查询女生的最大年龄
数据库查询操作_第50张图片
查询1班的最小年龄
数据库查询操作_第51张图片

查询北京学生的年龄总和
数据库查询操作_第52张图片

查询女生的平均年龄
数据库查询操作_第53张图片
查询所有学生的最大年龄,最小年龄,平均年龄
数据库查询操作_第54张图片

一班一共有多少个学生
数据库查询操作_第55张图片

查询3班年龄小于18岁的同学有几个
数据库查询操作_第56张图片

练习九(分组查询)

按照字段分组,此字段相同的数据会被放到一个组中;
分组的目的是对每一组的数据进行统计(使用聚合函数);
语法格式:
select 字段1,字段2,聚合函数... from 表名 group by 字段1,字段2...

分组后的数据筛选
语法格式:
select 字段1,字段2,聚合... from 表名 group by 字段1,字段2...having
说明:关键字having后面的条件运算符与where相同

//having与where的区别
1.where是对from后面指定的表进行数据筛选,属于对原始数据的筛选
2.having是对group by的结果进行筛选
3.having后面的条件中可以使用聚合函数,where后面不可以

查询各种性别的人数
数据库查询操作_第57张图片

查询每个班级中各种性别的人数
数据库查询操作_第58张图片
查询男生总人数
数据库查询操作_第59张图片
查询所有班级中不同性别的记录数大于1的信息
数据库查询操作_第60张图片
查询各个班级学生的平均年龄,最大年龄,最小年龄
数据库查询操作_第61张图片

查询1班除外其他班级学生的平均年龄,最大年龄,最小年龄
数据库查询操作_第62张图片

练习十(分页-获取部分数据)

使用场景:用来获取一部分的数据或者用来分页
语法格式:
select * from 表名 limit start,count
说明:
从start开始,获取count条数据;
start索引从0开始

select * from 表名 limit (n-1)*m,m
n:表示的是显示第几页的数据
m:表示每页显示多少条数据

查询前3行学生信息
数据库查询操作_第63张图片
查询第4行到第6行学生信息
数据库查询操作_第64张图片

每页显示5条数据,显示每一页的数据
数据库查询操作_第65张图片

已知总记录数和每页显示条数,求总页数
– 总数为12,每页显示3个数据,12/3=4页
– 总数为12,每页显示5个数据,12/5,取商加1

你可能感兴趣的:(数据库,oracle,sql)