MYSQL数据库基础

目录

一. MySQL概述

1.1 数据库相关概念

1.2 MySQL数据库

1.3 MYSQL安装及启动

1.4 MySQL数据模型

二. SQL-通用语法及分类

2.1 SQL通用语法

2.2 SQL分类

2.3 DDL

2.4 SQL-图形化界面工具DataGrip

2.5 DML

2.6 DQL

2.7 DCL

三. 函数

3.1 字符串函数

3.2数值函数

3.3日期函数

3.4流程函数

3.5小结

四. 约束

4.1 概述

4.2 演示

4.3 外键约束

4.4外键删除更新行为

4.5小结

五. 多表查询

5.1 多表关系介绍

5.2概述

5.3内连接

5.4外连接

5.5自连接

5.6联合查询union

5.7子查询介绍

5.8标量子查询

5.9列子查询

5.10行子查询

5.11表子查询

5.12练习

5.13小结

六. 事务

6.1简介

6.2操作演示

6.3四大特性ACID

6.4并发事物问题

6.5并发事务演示及隔离级别

6.6小结

七. 基础篇总结


一. MySQL概述

1.1 数据库相关概念

1.1.1 数据库概念

名称全称简称
数据库存储数据的仓库,数据是有组织的进行存储DataBase (DB)
数据库管理系统操纵和管理数据库的大型软件DataBase Management System (DBMS)
SQL操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准Structured Query Language (SQL)

1.1.2主流的关系型数据库管理系统

1.2 MySQL数据库

1.2.1 版本

        社区版(MySQL Community Server)---免费,MySQL不提供任何技术支持

        商业版(MySQL Enterprise Edition)---收费,可以试用30天,官方提供技术支持

1.2.2 下载&安装

        下载地址:MySQL :: MySQL Downloads

        MySQL社区版

1.3 MYSQL安装及启动

1.3.1 MySQL启动

Net start/stop mysql80

1.3.2 MySQL客户端连接

方式一: MySQL自带的客户端命令行

方式二:系统自带的命令行工具执行指令

注意:使用这种方式,需要配置PATH环境变量

1.4 MySQL数据模型

1.4.1 关系型数据库(RDBMS)

概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

特点:

使用表存储数据,格式统一,便于维护

使用SQL语言操作,标准统一,使用方便

1.4.2 数据模型

二. SQL-通用语法及分类
2.1 SQL通用语法
1.SQL语句可以单行或多行书写,以分号结尾;
2.SQL语句可以使用空格/缩进来增强语句的可读性;
3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写;
4.注释:
    ·单行注释:--注释内容 或 #注释内容(MySQL特有)
    ·多行注释:/*注释内容*/
2.2 SQL分类
分类全称说明
DDLData Defintion Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户,控制数据库的访问权限
2.3 DDL

2.3.1数据库操作

#查询
---查询所有数据库
SHOW DATABASES;
---查询当前数据库
SELECT DATABASE();
---创建
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
---删除
DROP DATABASE[IF EXISTS]数据库名;
---使用
USE 数据库名;

2.3.2 DDL-表操作-创建&查询

CREATE TABLE 表名(
    字段1 字段1类型[COMMENT 字段1注释],
    字段2 字段2类型[COMMENT 字段2注释],
    字段3 字段3类型[COMMENT 字段3注释],
    .....
    字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];

---注意:[...]为可选参数,最后一个字段后面没有逗号

2.3.3 DDL-数据类型及案例

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

分类类型大小(byte)有符号范围无符号范围描述
数值类型TINYINT1(-128,127)(0,255)小整数值
SMALLINT2(-32768t,32767)(0,65535)大整数值
MEDIUMINT3(-8388608,8388607)(0,16777215)大整数值
INT或INTEGER4(-2147483648,2147483647)(0,4294967295)大整数值
BIGINT8(-2^63,2^63-1)(0,2^64-1)极大整数值
FLOAT4(-3.402823466 E+38,3.402823466351 E+38)0和(1.175494351 E-38,3.402823466 E+38)单精度浮点数值
DOUBLE8

(-1.7976931348623157 E+308,

1.7976931348623157 E+308)

0和(2.2250738585072014 E-308,1.7976931348623157 E+308)双精度浮点数值
DECIMAL依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度)的值小数值(精确定点数)

分类类型大小描述
字符串类型CHAR0-255定长字串
VARCHAR0-65535变长字符串
TINYBLOB0-255不超过255个字符的二进制数据
TINYTEXT0-255短文本字符串
BLOB0-65 535二进制形式的长文本数据
TEXT0-65 535长文本数据
MEDIUMBLOB0-16 777 215二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215中等长度文本数据
LONGBLOB0-4 294 967 295二进制形式的极大文本数据
LONGTEXT0-4 294 967 295极大文本数据

Char(10)    设置存储参数后,存储一个字符,会由空格填充剩下存储位置;性能高

Varchar(10)   存储几个字符,就占用多少空间;相对性能差(需根据内容计算占用空间)

分类类型大小范围格式描述
日期类型DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155

YYYY

年份值
DATETIE8

1000-01-01 00:00:00 至

9999-12-31 23:59:59

YYYY-MM-DD

HH:MM:SS

混合日期和时间值
TIMESTAMP4

1970-01-01 00:00:01 至

2038-01-19 03:14:07

YYYY-MM-DD

HH:MM:SS

混合日期和时间值,时间戳

2.3.4 SQL-DDL-表操作-修改&删除

(1)表操作-修改

1.添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMENT 注释] [约束];
2.修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型
3.修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释] [约束];
4.修改表名
ALTER TABLE 表名 RENAME TO 新表名;

alter table emp add nikcname varchar(20) comment ‘昵称’;

desc emp;

(2)表操作-删除

1.删除字段
ALTER TABLE 表名 DROP 字段名;
2.删除表
DROP TABLE[IF EXISTS]表名;
3.删除指定表,并重新创建该表
TRUNCATE TABLE 表名

2.3.5 SQL-DDL小结

(1)DDL-数据库操作

SHOW DATABASES;
CREATE DATABASE 数据库名;
USE 数据库名;
SELECT DATABASE();
DROP DATABASE 数据库名;

(2)DDL-表操作

SHOW TABLES;
CREATE TABLE 表名(字段 字段类型,字段 字段类型);
DESC 表名;
SHOW CREATE TABLE 表名;
ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO ...;
DROP TABLE 表名;
2.4 SQL-图形化界面工具DataGrip

2.5 DML

DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增删改操作。

  • 增加数据(INSERT)
  • 修改数据(UPDATE)
  • 删除数据(DELETE)

2.5.1 插入

1.给指定字段添加数据
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...);
2.给全部字段添加数据
INSERT INTO 表名 VALUES(值1,值2,...);
3.批量添加数据
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);

注意:

  • 插入数据时,指定的字段顺序需要与值的顺序是一 一对应的;
  • 字符串和日期型数据应该包含在引号中;
  • 插入数据的大小,应该在字段的规定范围内。

2.5.2 SQL-DML-更新和删除

UPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2,... [WHERE 条件];

注意:修改语句的条件如果没有,则会修改整张表的所有数据

2.5.3 SQL-DML小结

1.添加数据
INSERT INTO 表名(字段1,字段2,...) VALUES(值1,值2,...),(值1,值2,...)...;
2.修改数据
UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2 [WHERE 条件];
3.删除数据
DELETE FROM 表名 [WHERE 条件];
2.6 DQL

DQL-介绍

DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。

查询关键字:SELECT

SELECT字段列表
FROM表名列表
WHERE条件列表
GROUP BY分组字段列表
HAVING分组后条件列表
ORDER BY排序字段列表
LIMY分页参数表

2.6.1基础查询

1.查询多个字段
SELECT 字段1,字段2,字段3... FROM 表名;
SELECT * FROM 表名;
2.设置别名
SELECT 字段1[AS 别名1],字段2[AS 别名2] ... FROM 表名;
3.去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;

2.6.2 DQL-条件查询(WHERE)

SELECT 字段列表 FROM 表名 WHERE 条件列表;
比较运算符功能
>大于
>=大于等于
<小于
<=小于等于
=等于
<> 或 !=不等于
BETWEEN...AND...在某个范围之内(含最小,最大值)
IN(...)在in之后的列表中的值,多选一
LIKE 占位符模糊匹配(_匹配单个字符,%匹配任意个字符)
IS NULL是NULL

逻辑运算符功能
AND 或 &&并且(多个条件同时成立)
OR 或 ||或者(多个条件任意一个成立)
NOT 或 !

非,不是

2.6.3 DQL-聚合函数(count,max,min,avg,sum)

介绍:将一列数据作为一个整体,进行纵向计算

SELECT 聚合函数(字段列表) FROM 表名;
函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

2.6.4 SQL-DQL-分组查询(GROUP BY)

SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];

where与having的区别

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对其结果进行过滤;
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。

注意:

  • 执行顺序:where>聚合函数>having;
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
1.根据性别分组,统计男性员工和女性员工的数量
select gender,count(*) from emp group by gender;

2.根据性别分组,统计男性员工和女性员工的平均年龄
select gender,avg(age) from emp group by gender;

3.查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select workaddress,count(*) from emp where age<45 group by workaddress having count(*) >=3;


2.6.5 SQL-DQL-排序查询(ORDER BY)

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;
ASC 升序(默认值)
DESC 降序
注意:如果是多字段排序,当地一个字段值相同时,才会根据第二个字段进行排序

1.根据入职时间,对员工进行降序排序
select * from emp order by entrydate desc;

2.根据年龄对公司员工进行升序排序,年龄相同,再按照入职时间进行降序排序
select * from emp order by age asc,entrydate desc;

2.6.6 SQL-DQL-分页查询(LIMIT)

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

注意:

  • 起始索引从0开始,起始索引=(查找页码-1)*每页显示记录数;
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MYSQL是LIMIT;
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。
1.查询第一页员工数据,每页展示10条记录
select * from emp limit 0,10;
select * from emp limit 10;

2.查询第二页员工数据,每页展示10条记录------->(页码-1)页展示记录数
select * from emp limit 10,10;

2.6.7 SQL-DQL-案例

2.6.8  SQL-DQL-执行顺序

2.6.9  SQL-DQL小结

2.7 DCL

2.7.1 用户管理

2.7.2 SQL- DCL-权限控制

2.7.3 SQL- DCL小结

三. 函数
3.1 字符串函数
3.2数值函数
3.3日期函数
3.4流程函数
3.5小结
四. 约束
4.1 概述
4.2 演示
4.3 外键约束
4.4外键删除更新行为
4.5小结
五. 多表查询
5.1 多表关系介绍
5.2概述
5.3内连接
5.4外连接
5.5自连接
5.6联合查询union
5.7子查询介绍
5.8标量子查询
5.9列子查询
5.10行子查询
5.11表子查询
5.12练习
5.13小结
六. 事务
6.1简介
6.2操作演示
6.3四大特性ACID
6.4并发事物问题
6.5并发事务演示及隔离级别
6.6小结
七. 基础篇总结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值