MySql总结

MySQL

MySQL基础篇

数据库相关概念

数据库:存储数据的仓库,数据是有组织的进行存储,简称(DataBase)

数据库管理系统:操纵和管理数据库的大型软件,Database Management System(DBMS)

SQL:操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准,Struccctured Query Language(SQL)

MySQL数据库的准备

MySQL的安装

启动和停止

启动:services.msc进入window服务

输入指令:net start mysql80

停止:net stop mysql80

客户端连接

方式一:MySQl提供的客户端命令行工具

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

mysql -u root -p

MySQL数据模型

关系型数据库(RDBMS)

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

[图片上传失败...(image-879860-1659251515757)]

SQL

SQL通用语法

SQL分类

分类 全称 说明
DDL Data Definition Language 数据定义语言,用来定义数据库对象(数据库、表、字段)
DML Data Manipulation Language 数据操作语言,用来对数据库表中的数据进行增删改
DQL Data Query Language 数据查询语言,用来查询数据库中表的记录
DCL Data Control Language 数据控制语言,用来创建数据库用户、控制数据库的访问权限

DDL

查询

查询所有的数据库

SHOW DATABASES;

查询当前数据库

SELECT DATABASE();
创建
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET字符集][COLLATE 排序规则];

IF NOT EXISTS:如果有则不创建,没有就创建。

DEFAULT CHARSET字符集:可指定,例如utf-8

删除
DROP DATABASE[IF EXISTS]数据库名;

IF EXISTS:如果存在则删除,可不写

使用
USE 数据库名;
DDL-表操作-查询

查询当前数据库所有的表

SHOW TABLES;

查询表结构

DESC表名;

查询指定表的建表语句

SHOW CREATE TABLE;
DDL-表操作-创建
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
字段4 字段4类型[COMMENT 字段4注释],
字段5 字段5类型[COMMENT 字段5注释],
......
字段n 字段n类型[COMMENT 字段n注释]
)[COMMMENT 表注释];
DDL-表操作-数据类型
数值类型

double(4,1)

第一个参数:表示数据的整体长度

第二个参数:有几位小数

字符串类型

char:性能好

varchar:性能比char差一些

日期时间类型
DDL-表操作-修改
在表结构中添加字段
ALTER TABLEB表名ADD 字段名 类型(长度)[COMMENT注释][约束];
修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名  新字段名 类型(长度)[COMMENT 注释][约束];
删除字段
ALTER TABLE 表名 DROP 字段名;
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
DDL-表操作删除

删除表

DROP TABLE [IF EXISTS] 表名;

删除指定表,并重新创建该表

TRUNCATE TABLE 表名;

在删除表时,表中的数据也会被删除。

MySQL图形化界面工具

DML

DML-添加数据

1.给指定字段添加数据

INSERT INTO 表名(字段名1,字段名2,....) VALUES(值1,值2,....);

2.给全部字段添加数据

INSERT INTO 表名 VALUES (值1,值2,....);

3.批量添加数据

INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
DML-修改数据
UPDATE 表名 SET 字段名1 = 值1,字段名2 = 值2,....[WHERE 条件];

==修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。==

DML-删除数据
DELETE FROM 表名 [WHERE 条件];

DQL(数据查询语言)

基本查询

1.查询多个字段

SELECT 字段1,字段2,...FROM 表名;
SELECT * FROM 表名;

==尽量不要使用*去查询全部字段==

2.设置别名

SELECT 字段1[AS 别名1],字段2[AS 别名2]...FROM 表名;

作用:

原本的==workaddress==变成了==工作地址==

起别名as可省略。

3.去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;
条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表;
聚合函数
介绍

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

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

==所有的null值不参与聚合函数运算==

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

where与having区别

执行时机不同:where是分组之前进行过滤,不满足分组条件,不参与分组;而having是分组之后对结果进行过滤。

判断条件不同:where不能对聚合函数进行判断,而having可以。

执行顺序:where > 聚合函数 > having

分组之后:查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

排序查询
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;

排序方式

ASC:升序(默认值)

DESC:降序

==如果是多字段排序,当第一个字段相同时,才会根据第二个字段进行排序==

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

注意:

1.起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。

2.分页查询是数据库的方言,不同的数据库有不同的实现

3.如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10;

DQL的执行顺序

DCL

DCL:用户管理数据库、用户、控制数据库的访问、权限。

查询用户
USE mysql;
SELECT * FROM user;
创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIDE WITH mysql_native_password BY '新密码'; 

删除用户

DROP USER '用户名'@'主机名';
DCL-权限控制
权限 说明
ALL、ALL PRIVILEGES 所有权限
SELECT 查询数据
INSERT 插入数据
UPDATE 修改数据
DELETE 删除数据
ALTER 修改表
DROP 删除数据库/表/视图
CREATE 创建数据库/表
查询权限
SHOW GRANTS FOR '用户名'@'主机名';

授予权限

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

==多个权限之间,使用逗号分隔==

==授权时,数据库名和表名可以使用*进行通配,代表所有。==

函数

函数:是指一段可以直接被另一段程序调用的程序或代码。

字符串函数
substring()

==空格也算一个字符==

数值函数
日期函数
流程控制函数

约束

约束是作用于表中字段上的规则,用于限制存储在表中的数据

目的:保证数据库中数据的正确、有效性和完整性

==约束是作用于表中字段上的,可以在建表/修改表的时候添加约束。==

多表查询

指从多张表中进行查询数据

笛卡尔积

笛卡尔积:指在数学中,两个集合A集合和B集合的所有组合情况(在多表查询时,需要消除无效的笛卡尔积)。

==清除笛卡尔积的实质就是找到他们之间的连接条件==

多表查询的分类

连接查询
内连接:相当于查询A,B交集部分数据。

隐式内连接

显式内连接

外连接:

左外连接:查询左表所有数据,以及两张表交集部分数据

==相当于查询表1(左表)的所有数据,包含表1和表2交集部分的数据==

右外连接:查询右表所有数据,以及两张表交集部分数据

自连接:当前表与自身的连接查询,自连接必须使用表别名

==自连接查询,可以是内连接查询,也可以是外连接查询。==

联合查询

对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。

SELECT 字段列表 FROM 表A ...
UNION[ALL]
SELECT 字段列表 FROM 表B ...

==对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。==

==union all会将全部的数据直接合并在一起,union会对合并之后的数据去重。==

子查询

SQL语句中嵌套SELECT语句,成为子查询。

根据查询结果不同,分为:

1.标量子查询(子查询结果为单个值)

子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式

常用的操作符:= <> > >= < <=

2.列子查询(子查询结果为一列)

常用操作符:IN, NOT IN,ANY,SOME,ALL

3.行子查询(子查询结果为一行)

常用操作符:=、<>、IN、NOT IN

4.表子查询(子查询结果为多行多列)

常用操作符:IN

事务

事务:是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

事务操作

查看/设置事务提交方式

SELECT @@autocommit;
SET @@autocommit=0;

提交事务

COMMIT;

回滚事务

ROLLBACK

开启事务

START TRANSACTION 或 BEGIN

提交事务

COMMIT;

回滚事务

ROLLBACK

事务的四大特性

原子性:事务是不可分割的最小操作单元,要么全部成功,要么全部失败。

一致性:事务完成时,必须使所有的数据都保持一致状态。

隔离性:数据库系统提供的隔离机制,保证事务在不受外部并法操作影响的独立环境下运行。

持久性:事务一旦提交或回滚,他对数据库中的数据的改变就是永久的。

并发事务问题

事务的隔离级别

==从上往下隔离级别越来越高==

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 175,490评论 5 419
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 74,060评论 2 335
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 124,407评论 0 291
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 47,741评论 0 248
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 56,543评论 3 329
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 43,040评论 1 246
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 34,107评论 3 358
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 32,646评论 0 229
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 36,694评论 1 271
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 32,398评论 2 279
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 33,987评论 1 288
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 30,097评论 3 285
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 35,298评论 3 282
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 27,278评论 0 14
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 28,413评论 1 232
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 38,397评论 2 309
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 38,099评论 2 314

推荐阅读更多精彩内容

  • ubuntu启动mysql、停止mysql、重置mysql服务: sudo service mysql start...
    dream_seeker阅读 251评论 0 0
  • 一、Mysql基本数据类型 1.1整数类型 整数类型包含八种,分别占用不同的位数,数值范围可根据位数计算。类型及对...
    十三是只柴阅读 157评论 0 0
  • MySql的主要存储引擎有哪些,主要区别? MYISAM INNODE MEMORY 区别:MYISAM: 它不支...
    咻咻咻滴赵大妞阅读 1,416评论 0 1
  • 一、Union(联合查询) 含义:合并,联合,将多次查询结果合并为一个结果 语法: Union 【all】 意义:...
    Adair_zhu阅读 135评论 0 1
  • BigData之MySQL总结大全 MYSQL常用的基本语句 MYSQL常用的基本语句 例:SELECT TOP ...
    北京大数据苏焕之阅读 803评论 0 0