数据库与SQL语句介绍
数据库介绍
-
概念
数据库定义:数据存储的地方
-
特点
-
长期存储数据
-
对于数据进行有组织的管理
体现:通过操作指定的语句完成数据的增、删、改、查
-
-
数据库的分类
关系型数据库
存储格式:二维表
常见关系型数据: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
);
#### 删除表---drop、truncate
语法格式:
drop table if exists 表名;
#### 数据的增、删、改、查
##### 数据增加(插入)---insert
语法格式:
全量字段增加:insert into 表名 values(值1,值2,..);
选择字段增加:insert into 表名(字段名1,字段名2...) values(值1,值2...) ;
增加多行数据:insert into 表名(字段名1,...) values(值1,...),(值1,...),(值1,...);
说明:插入字段的值必须要字段的顺序一致。
##### 修改数据---update
语法格式:
update 表名 set 字段名1=值1,字段名2=值2,... where 条件;
##### 删除数据---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.关联字段;
#### 子查询
* 子查询,充当条件分类
* 标量子查询:一行一列
* 列子查询:一列多行
* 行子查询:一行,多列
##### 非关联子查询
在select子句、group by子句、where子句、having子句、order by子句、from子句中均可使用子查询语句
较常用的是where子句、having子句和from子句。
**子查询SQL语句编写思路:从结果倒推条件**
**说明:如果能用表连接,绝对不用子查询。因为子查询SQL语句执行效率很低**
*