数据库介绍 • 概念数据库定义:数据存储的地方 • 特点
- 长期存储数据
- 对于数据进行有组织的管理体现:通过操作指定的语句完成数据的增、删、改、查
• 数据库的分类
关系型数据库
存储格式:二维表
常见关系型数据:MySQL、Oracle、SQL Server、SQLite Oracle:用于大型项目(银行项目) Mysql:用于中小型项目(目前最常用的数据库)##### 非关系型数据库redis:键值对MangDB:文档Hbase:(大数据存储)分布式存储 • 关系型数据库核心要素数据行---(一条记录)数据列---(字段)数据表---(数据行的集合)数据库---(数据表的集合,一个数据库中能够有多个数据表)说明:先创建数据库,再创建数据表,接着定义表的列(字段),最后往写入一条一条数据。
• SQL语句介绍SQL语句:结构化查询语言,通过SQL语句对数据库进行操作对于数据库的操作(主要): 数据查询:查询语句 数据更改:新增、修改、删除语句 关键字: 新增语句--insert; 删除语句:delete; 修改语句:update; 查询语句:setcet;
• MySQL介绍MySQL:关系型数据库,分为社区版和商业版,社区版免费 企业使用商业版,个人使用社区版
特点 • 支持多种操作系统(windows,mac,linux) • 支持多种编程语言(可以借助编程语言完成SQL语句的执行,以及结果的处理) 组成 MySQL服务:存储数据,执行传入的SQL语句 MySQL客户端:接收SQL语句,展示SQL语句的执行结果。
连接命令 • 连接数据库mysql -h -P -u -p-h:IP地址或域名-P:端口号-u:用户名-p:密码 • 输入密码说明:-h如果不写,表示访问当前电脑(服务器)的MySQL -P如果不写,表示MySQL使用默认端口号:3306
工具连接 • 使用工具:DBeaver • 原因:开源免费 • 作用:拥有可视化界面,让我们操作数据库以及结果的展示更加的直观
• 必填内容:服务器ip地址,MySQL的端口号,MySQL的用户名和密码
• 注意点:
- 服务器(虚拟机)更改IP地址,需要在工具中修改连接ip地址
- 服务器未开机,工具无法连接数据库
数据类型整型:int小数:decimal(5,2) 表示该字段可以存5位数,其中小数位为2位, 整数3位字符串:varchar(字符范围) 时间日期:datetime
数据约束默认值:当不填写时使用默认值,填写时使用填写内容非空:不允许字段空值 说明:null(不能为空)
空字符串主键:主键是唯一标识;一个数据表只有一个主键;可以使用主键查询数据,提高数据查询速度关键字:primary key格式:PRIMARY KEY (字段名称) 设置字段为主键特点: 唯一性:主键值必须是唯一的 非空性:主键不能为空 不变性:主键使用了,不要进行更改 单一性:一张数据表,仅能设置一个主键 唯一性:此字段的值不允许重复
特点:一个数据表中可以设置多个字段具有唯一性外键: 用于关联两张表 • DBeaver操作MySQL操作数据库 操作数据表 操作数据动作:增,删,改,查
*注:新增,修改,删除完成之后,必须要保存结果才能生效 命令操作数据库创建编辑器 编写注释作用:解释之后的代码/语句,是用来干什么的
国际快捷键:Ctrl+ /SQL语句的注释符:--空格 说明:必须有空格,注释才会生效DBeaver执行数据库命令 查看所有数据库:show databases;
查看当前使用数据库:select database();
创建数据库:create database 数据库名 charset=utf8;
删除数据库:drop database 数据库名;
DBeaver执行数据表命令
*查看当前数据库所有的表show tables;
查看表结构:desc 表名;
数据库表操作:创建表---create 语法格式:
create table 表名(id int unsigned primary key(主键) auto_increment(自动递增), 字段名称1 数据类型1, 字段名称2 数据类型2, 字段名称3 数据类型3 );
1.删除表---drop、truncate、delete 语法格式: drop table if exists 表名;
2.数据增加(插入)---insert 语法格式: 全量字段增加:insert into 表名 values(值1,值2,..); 选择字段增加:insert into 表名(字段名1,字段名2...) values(值1,值2...) ; 增加多行数据:insert into 表名(字段名1,...) values(值1,...),(值1,...),(值1,...); 说明:插入字段的值必须要字段的顺序一致。
3.修改数据---update 语法格式: update 表名 set 字段名1=值1,字段名2=值2,...where 条件;
4.删除数据---delete 语法格式: 删除单行数据:delete from 表名 where 条件; 删除全部数据:truncate table 表名; 说明: delete不会清除表结构 truncate会清楚表结构
简单查询 语法格式: select * from 表名; select 字段1,字段2... from 表名;
起别名---as
语法格式: 数据表起别名:select 别名.字段,… from 表名 as 别名 字段起别名:select 字段.别名,… from 表名;
条件查询
比较运算符关键字: 大于:> 大于等于:>= 小于:< 小于等于:<= 等于:= 不等于:!=或< >
语法格式: 表名 where 字段名 比较运算符 预期结果;
逻辑运算符---and、or、not 作用:一次性处理多个字段的条件
语法格式: 表名 where 字段名 比较运算符 预期结果 逻辑运算符 字段名 比较运算符 预期结果; 模糊查询---like% :匹配任意多个字符 _ :匹配一个任意字符`
语法格式: 表名 where 字段名 like '%或_+指定查询内容;
范围查询关键字:
1.in---非连续范围 2.between…and…---连续范围```
语法格式: in:表名 where 字段名 in (非连续范围)
between…and…:表名 where 字段名 between 开始范围 and 结束范围;
空判断关键字: 判断为空:is null 判断非空:is not null` 语法格式: 判断为空:表名 where 字段名 is null; 判断非空:表名 where 字段名 is not null;
排序---order
asc:从小到大排序,即升序 desc:从大到小排序,即降序
语法格式: 表名 order by 字段名 排序方式(asc/desc),字段名称2
排序方式(asc/desc); 说明:默认按照值从小到大排序,即升序
聚合函数作用:对于查询的结果,进行二次处理
关键字: max(字段名):最大值 min(字段名):最小值 sum(字段名):求和 avg(字段名):平均值 count(*):查询总记录数 语法格式: select …聚合函数… from 表名; 说明:聚合函数不能作为where条件
分组查询---group by 作用:把整个表的数据,进行划分不同小组,然后对于每个小组,使用聚合函数进行二次处理。
语法格式: select …分组字段,… from 表名 group by 字段名,… ; 分组筛选---having 作用:对于分组后的数据进行筛选` 语法格式: select …分组字段,… from 表名 group by 字段名,… group by having 条件;
having和where的区别 having可以用聚合函数 where不能用聚合函数
分页---limit(放在SQL语句最后面) 语法格式: select * from 表名 limit start,count; start:开始行数start索引 (从0开始)
count:取几个数据
连接查询 内连接---两个表匹配到的共同数据关键字: inner join on
语法格式: select * from 表1 inner join 表2 on 表1.关联字段=表2.关联字段;
左连接---两个表匹配到的数据加左表特有的数据,对于右表不存在的数据使用null填充
关键字:left join on
语法格式:
select * from 表1
left join 表2 on 表1.关联字段=表2.关联字段;
右连接---两个表匹配到的数据加右表特有的数据,对于左表不存在的数据使用null填充
左连接和右连接统称为外连接 关键字:right join on 语法格式: select * from 表1 right join 表2 on 表1.关联字段=表2.关联字段;
自关联 使用场景:当表存在等级关系时,查询其中数据需要使用自关联 * 比如:省,市,县 * 比如:总经理,部门主管,组长,组员 * 自关联思路: 1. 把一张表当成多张表来使用 * 说明:将表定义为不同的别名 2. A表的字段与B表的字段进行关联 * 强调:一定是表中不同的字段``` 语法格式: select * from 表1 别名1 inner join 表1 别名2 on 别名1.关联字段=别名2.关联字段;
子查询
自关联:存在上下级关系