数据库介绍
什么是数据库
- 数据储存的仓库
特点
1.长期储存数据
2.对于数据进行有组织的管理
- 体现:通过操作指定的语言完成对数据的增、删、改、查
数据库的分类
-
分类标准:按照数据存储格式的不同
关系型数据库:以二维表的形式进行数据的存储
二维表:类似Ex'cel,有行和列
常见的关系数据库:Oracle,Mysql,Sql Server,SQlite
OracleL:主要用于大型项目(银行)
Mysql:主要用于中小型项目(目前最常用的数据库)
非关系型数据库
1.redis:键值对
2.MangoDB:文档
3.Hbase:一个结构化数据的分布式存储系统
关系型数据库核心要素:库表列行
1.数据行(一条记录)
2.数据列(定义字段)
3.数据表(数据行记录的集合)
4.数据库(数据表的几个,一个库中能够有n个数据表)
SQL介绍及常用语言分类
概念:结构化查询语言,通过SQL语言可以对数据库进行操作
数据查询语言:select(查询)
数据操作语言:insert(增加),delete(删除),update(修改)
注意:Mysql中的SQL语言不区分大小写
MySQL介绍
MySQL:是一个关系型数据库,由甲骨文公司开发的一款产品,同类型还有Ocacle。
MySQL特点
1.支持多操作系统
2.支持多种编程语言
3.开源、社区版免费
4.可移植性好
5.支持多线程
6.优化SQL查询算法
7、多种数据库连接方式
8、支持多语言编码格式
MySQL组成
MySQL服务器:存储数据并解析编译后的SQL语句,执行SQL语句,将执行结果返回给客户端。
MySQL客户端:下发用户要执行的SQL语句,查看执行结果,并显示服务器返回的执行结果。
MySQL链接
连接命令:mysql -hhost -P端口号 -u用户名 -p密码
MySQL数据库
1.DBeaver操作Mysql
1.使用数据库:在DBeaver窗口中,双击左侧已连接 的连接名称即可打开并连接到数据库
2.创建数据库:打开数据库后,右击 连接名称,选择 “创建 - 数据库”,然后输入对应的数据,点击确定。
3.修改数据库:打开数据库后,右击要修改的数据库 名称,选择 “查看数据库”。
4.删除数据库:打开数据库后,右击 要删除的数据库 名称,选择 “删除” 。
2.常用数据类型
联想记忆法
1.整型:int(我的年龄),unsigned(无符号范围),有符号范围(-2147483648~2147483647)
2.字符串:varchar(我的姓名)
3.小数:decimal(我的存款,余额)
4.时间日期:detetime(我的出生日期)
3.常见数据约束
1.非空(not null):此字段不允许填写空值 2.默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准
3.主键:提高数据的查询速度
1.唯一性:主键值必须是唯一的,不能重复 2.非空性:主键不能为空 3.不变性:主键使用了,不可更改 4.单一性:一张数据表,仅能设置一个主键 4.唯一性:此字段的值不允许重复
特点:一个表中可以设置多个字段值具有唯一性 5.外键:维护两个表之间的依赖关系
4.操作数据库
说明:操作数据库之前要选通过工具连接到数据库。
常见数据库操作命令:
1.查看所有数据库:show databases;
2.使用数据库:use 数据库名;
3.查看当前使用数据库:select database();
4.创建数据库:create database 数据库名 charset=utf8;
5.删除数据库:drop database 数据库名;
4.1操作数据库
说明:操作数据表之前要选通过use打开对应的数据库
常见数据表操作命令:
1.查看当前数据库所有的表:show tables;
- 查看表结构:desc 表名;
- 查看表的创建语句:show create table 表名;
数据库表操作
1.创建数据库表
语法格式:create table 表名;
2.删除数据
语法格式:drop table 表名;
:drop table if exists 表名(防报错);
数据增删改查
数据增加
增加多行数据
语法格式:
模板命令:
-- 全字段添加
insert into 表名 values (...),(...),(...),...;
-- 选择字段添加
insert into 表名(字段名1,...) values(值1,...),(值1,...),...;
实践练习
数据修改与删除
修改语法格式:
模板命令:
update 表名 set 字段名1=值1,字段名2=值2,... where 条件;
实践练习
三种数据的区别
实践练习
数据查询操作
数据准备
查询基本语法
起别名
关键字:as
作用:给表名、字段名起别名
表名--起别名语法格式:表名 as 别名
字段名--起别名语法格式:字段名 as 别名
使用场景:
-
对表名起别名,主要用作表关联
-
对字段名起别名,主要用作执行结果字段的中文展示
去重
关键字: distinct
语法格式:distinct 字段名称
作用:针对某一个字段去除掉重复的数据
使用场景:通过结合聚合函数中的"查询总记录数"一起使用,用来统计某一个字段有几种数据
课堂练习
条件查询
比较运算符
语法格式:表名 where 查询的字段名称 比较运算符 预期数据
编写SQL语句思路
-
找出最终需要展示的字段有哪些
-
找出查询字段(条件字段)
-
使用哪一种运算符
-
找出预期数据
实践练习
逻辑运算符
语法格式
编写SQL语句思路
-
分析使用查询条件
-
选择使用的逻辑运算符
实践练习
模糊查询
关键字:like
注意:仅针对字符串进行模糊匹配
语法格式:where 字段 like 匹配条件
匹配多个字符:%
匹配一个字符:_
编写SQL语句思路:
- 分析模糊匹配符放置位置(前面,后面,前面+后面)
放置--前面:以XXX结尾(查询手机号,以1009结尾)
前置--后面:以XXX开头(查询手机号,以138开头)
前面+后面:匹配包含(查询手机号,包含123)
- 分析使用哪一个符号
范围查询
语法格式:
编写SQL语句思路
-
分析需要进行范围查询的字段
-
分析查询的范围是否连续
-
根据是否连续,确认使用 in 还是 between...and...
实践练习:
空判断
语法格式:
实践练习:
排序
语法格式:
编写SQL语句思路
-
分析需要排序的字段
-
确认每一个排序字段的方式以及使用关键字
-
从小到大---使用 asc
-
从大到小---使用 desc
-
如果多个字段要排序,使用 , 进行分隔
实践练习:
聚合函数
语法格式:
编写SQL语句思路
- 分析需要被聚合函数处理的字段
注意:如果没有指明处理哪一个字段,那就是全部,使用 *
- 分析使用的聚合函数
特别说明:一个SQL语句,可以使用多个聚合函数,使用 , 分隔即可
实践练习:
分组
概念: 按照字段分组,此字段相同的数据会被放到一个组中
目的: 是对每一组的数据进行统计(使用聚合函数)
分组查询
语法格式:
编写SQL语句思路
-
确认需要分组的字段
-
确认需要使用哪一种聚合函数以及需要处理的字段
实践练习:
分组筛选
作用:对于分组完之后的数据进行筛选
语法格式:
编写SQL语句思路
-
确认需要分组的字段
-
确认需要使用聚合函数和处理字段
-
确认需要筛选的字段和条件
实践练习:
分页
语法格式:
实践练习:
连接查询
数据准备
创建课程表并插入数据
创建成绩表并插入数据
找出表之间的关联关系
连表查询数据逻辑
常用方法
内连接:取两个表共有数据(交集)
左连接:共有数据+左边特有数据+右边以空(null)填充
右连接:共有数据+右边特有数据+左边以空(null)填充
内连接
语法格式:
编写SQL语句步骤
-
根据需求找出关联的表1和表2
-
根据数据表结构找出两个表关联的字段
模板SQL语句
select * from 表1
inner join 表2 on 表1.关联字段a = 表2.关联字段b;
实践练习
左连接
语法格式
模板语句
select * from 表1
left join 表2 on 表1.关联字段a = 表2.关联字段b;
实践练习
自关联
介绍
使用场景:当表存在等级关系时,查询其中数据需要使用自关联
比如:省,市,县
比如:总经理,部门主管,组长,组员
自关联思路:
- 把一张表当成多张表来使用
说明:将表定义为不同的别名
- A表的字段与B表的字段进行关联
强调:一定是表中不同的字段
数据准备
数据介绍
实践练习
子查询
前置介绍:涉及到了表之间的关联,可以使用表连接,也可以使用子查询
强调:如果能用表连接,绝对不用子查询。因为子查询SQL语句执行效率很低
子查询,充当条件分类
标量子查询:一行一列
最简单的子查询
列子查询:一列多行
行子查询:一行,多列