MySQL数据库

  • 一、数据库相关概念
    • 数据库
    • 数据库管理系统
    • SQL
  • 二、MySQL数据库
    • MySQL登录
    • MySQL数据模型
  • 三、SQL
    • SQL简介
    • SQL通用语法
    • SQL分类
    • DDL
      • DDL操作数据库
      • DDL操作表
        • 数据类型
        • 1. 查询表
        • 2. 创建表
        • 3. 删除表
        • 4.修改表
    • DML
      • 1. 添加数据
      • 2. 修改数据
      • 3. 删除数据
    • DQL
      • 查询语法
        • 1. 基础查询
        • 2. 条件查询(WHERE)
        • 3. 分组查询(GROUP BY)
          • 聚合函数
          • 分组查询
        • 4. 排序查询(ORDER BY)
        • 5. 分页查询(LIMIT)
  • 四、约束
    • 1. 概念&分类
    • 2. 非空约束
    • 3. 唯一约束
    • 4. 主键约束
    • 5. 默认约束
    • 6. 外键约束
  • 五、数据库设计
    • 数据库设计简介
      • 1. 软件的研发步骤
      • 2. 数据库设计概念
      • 3. 数据库设计的步骤
    • 表关系之一对多
    • 表关系之多对多
    • 表关系之一对一
  • 六、多表查询
    • 介绍
    • 内连接
    • 外连接
    • 子查询(嵌套查询)
  • 七、事务
    • 事务简介
    • 事务操作
    • 事务四大特征(ACID)

一、数据库相关概念

数据库

  • 存储数据的仓库,数据是有组织的进行存储
  • 英文:DataBase,简称DB

数据库管理系统

  • 管理数据库的大型软件
  • 英文:DataBase Management System,简称 DBMS

SQL

  • 英文: Structured Query Language,简称 SQL,结构化查询语言
  • 操作关系型数据库的编程语言
  • 定义操作所有关系型数据库的统一标准

二、MySQL数据库

MySQL登录

登录mysql命令

参数 含义
-u 用户名
-p 用户对应密码
-h 主机 socket:(IP地址:端口号)eg:192.168.139.1:3306

三种登录方式

mysql -u root -p密码
mysql -u root -p
mysql -hlocalhost -uroot -p

其他命令

参数 含义
cls 清屏
exit/quit 退出

MySQL数据模型

关系型数据库
关系型数据库是建立在关系模型基础上的数据库,简单来说,关系型数据库是由多张能互相连接的二维表组成的数据库。

优点

  1. 都是使用表结构,格式一致,易于维护。
  2. 使用通用的SQL语言操作,使用方便,可用于复杂查询。
  3. 数据存储在磁盘中,安全。

MySQL数据模型


三、SQL

SQL简介

  • 英文:Structured Query Language,结构化查询语言,简称SQL
  • 是一门操作关系型数据库的编程语言
  • 定义操作所有关系型数据库的统一标准
  • 对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称为“方言”

SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾
  2. MySQL 数据库的SQL语句不区分大小写,关键字建议使用大写。
  3. 注释:
单行注释:  --注释内容 或 #注释内容(MySQL 特有)
多行注释:  /*注释*/

SQL分类

缩写 含义
DDL (Data Definition Language)数据定义语言,用来定义数据库对象:数据库,表,列等
DML (Data Manipulation Language)数据操作语言,用来对数据库中表的数据进行增删改
DQL (Data Query Language)数据查询语言,用来查询数据库中表的记录(数据)
DCL (Data Control Language)数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户

DDL

DDL操作数据库

  1. 查询
SHOW DataBases;
  1. 创建
  • 创建数据库
CREATE DataBase 数据库名称;
  • 创建数据库(判断,不存在则创建)
CREATE DataBase IF NOT EXISTS 数据库名称;
  1. 删除
  • 删除数据库
DROP DataBase 数据库名称;
  • 删除数据库(判断,如果存在则删除)
DROP DateBase IF EXISTS 数据库名称;
  1. 使用数据库
  • 查看当前使用的数据库
SELECT DataBase();
  • 使用数据库
USE 数据库名称;

DDL操作表

  • 创建(Create)
  • 查询(Retrieve)
  • 修改(Update)
  • 删除(Delete)

数据类型

MySQL支持多种类型,可以分为三类:

  • 数值
  • 日期·
  • 字符串

1. 查询表

  • 查询当前数据库下所有表名称
SHOW TABLES
  • 查询表结构
DESC 表名称;


2. 创建表

注意:最后一行末尾无逗号

CREATE TABLE 表名(字段名1 数据类型1,字段名2 数据类型2,...字段名n 数据类型n
);

3. 删除表

  • 删除表
DROP TABLE 表名;
  • 删除表时判断表是否存在
DROP TABLE IF EXISTS 表名;

4.修改表

  1. 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
  1. 添加一列
ALTER TABLE 表名 ADD 列名 数据类型;
  1. 修改数据类型
ALTER TABLE 表名 MODIFY 列名 新数据类型;
  1. 修改列名和数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
  1. 删除列
ALTER TABLE 表名 DROP 列名;

DML

  • 添加(insert)
  • 修改(update)
  • 删除(delete)

1. 添加数据

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

2. 修改数据

  1. 修改表数据

注意:修改语句中如果不加条件,则将所有数据都修改

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

3. 删除数据

  1. 删除数据
DELETE FROM 表名 [WHERE 条件];

DQL

查询语法

1. 基础查询

  1. 查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名; --查询所有数据
  1. 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
  1. 起别名
AS:AS也可以省略

2. 条件查询(WHERE)

  1. 条件查询语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
  1. 条件

3. 分组查询(GROUP BY)

聚合函数
  1. 概念:
    将一列数据作为一个整体,进行纵向计算。

  2. 聚合函数分类:

  3. 聚合函数语法

SELECT 聚合函数名(列名) FROM 表;

注意:null值不参与所有聚合函数运算


分组查询
  1. 分组查询语法
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];

举例:查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2人

select sex,avg(math),count(*) from stu where math > 70 group by sex having count(*)〉2;

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

where 和 having 区别:

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

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


4. 排序查询(ORDER BY)

  1. 排序查询语法
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] ...;

排序方式:

  • ASC:升序排序(默认值)
  • DESC:降序排列

注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序


5. 分页查询(LIMIT)

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

注:
起始索引:从0开始
计算公式:起始索引=(当前页码-1)*每页显示的条数

tips :

  • 分页查询limit 是MySQL数据库的方言
  • Oracle分页查询使用rownumber
  • SQL Server分页查询使用top

四、约束

1. 概念&分类

  1. 约束的概念
  • 约束是作用于表中列上的规则,用于限制加入表的数据
  • 约束的存在保证了数据库中数据的正确性、有效性和完整性
  1. 约束的分类

Tips : MySQL不支持检查约束


2. 非空约束

概念:非空约束用于保证列中所有数据不能有NULL值

  1. 添加约束
-- 创建表时添加非空约束
CREATE TABLE 表名(列名 数据类型 NOT NULL,...
);
-- 建完表后添加非空约束
ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;
  1. 删除约束
ALTER TABLE 表名 MODIFY 字段名 数据类型;

3. 唯一约束

唯一约束用于保证列中所有数据各不相同

  1. 添加约束
--创建表时添加唯一约束
CREATE TABLE 表名(列名 数据类型 UNIQUE[AUTO_INCREMENT],-- AUTO_INCREMENT:当不指定值时自动增长...
);
CREATE TABLE 表名(列名 数据类型,...[CONSTRAINT] [约束名称] UNIQUE(列名)
);
--建完表后添加唯一约束
ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE;
  1. 删除约束
ALTER TABLE 表名 DROP INDEX 字段名;

4. 主键约束

主键是一行数据的唯一标识,要求非空且唯一
一张表只能有一个主键

  1. 添加约束
--创建表时添加主键约来
CREATE TABLE 表名(列名 数据类型 PRIMARY KEY [AUTO_INCREMENT],...
);
CREATE TABLE 表名(列名 数据类型,[CONSTRAINT] [约束名称] PRIMARY KEY(列名)
);
--建完表后添加主键约束
ALTER TABLE 表 名ADD PRIMARY KEY(字段名);
  1. 删除约束
ALTER TABLE 表名 DROP PRIMARY KEY;

5. 默认约束

保存数据时,未指定值则采用默认值

  1. 添加约束
--创建表时添加默认约束
CREATE TABLE 表名(列名 数据类型 DEFAULT 默认值,...
);
--建完表后添加默认约束
ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值;
  1. 删除约束
ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;

6. 外键约束

外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性

  1. 添加约束
-创建表时添加外键约束
CREATE TABLE 表名(列名数据类型,...[CONSTRAINT] [外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名)
);
--建完表后添加外键约束
ALTER TABLE表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
  1. 删除约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

五、数据库设计

数据库设计简介

1. 软件的研发步骤

2. 数据库设计概念

  • 数据库设计就是根据业务系统的具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型。
  • 建立数据库中的表结构以及表与表之间的关联关系的过程。
  • 有哪些表?表里有哪些字段?表和表之间有什么关系?

3. 数据库设计的步骤

  • 需求分析(数据是什么?数据具有哪些属性?数据与属性的特点是什么)
  • 逻辑分析(通过ER图对数据库进行逻辑建模,不需要考虑我们所选用的数据库管理系统)
  • 物理设计(根据数据库自身的特点把逻辑设计转换为物理设计)
  • 维护设计(1.对新的需求进行建表;2表优化)

表关系之一对多

最基础的表间关系,意思是一张表A中的一条记录可以对应另一张表B中的多条记录,另一张表B中的一条记录只能对应一张表A中的一条记录

  • 如: 部门和员工
    一个部门对应多个员工,一个员工对应一个部门


表关系之多对多

一张表A中的一条记录可以对应另一张表B中的多条记录,另一张表B中的一条记录也可以对应一张表A中的多条记录

  • 如: 商品和订单
    一个商品对应多个订单,一个订单包含多个商品


表关系之一对一

一对一的关系就是一种特殊的多对多的关系,一张表A中的一条记录只能对应另一张表B中的一条记录,另一张表B中的一条记录也只能对应一张表A中的一条记录

  • 如: 用户和用户详情
    一对一关系多用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放另一张表,用于提升查询性能

总结


六、多表查询

介绍

笛卡尔积:有A,B两个集合取A,B所有的组合情况

  1. 多表查询:从多张表查询数据

    • 连接查询

      • 内连接:相当于查询AB交集数据
      • 外连接:
        • 左外连接:相当于查询A表所有数据和交集部分数据
        • 右外连接:相当于查询B表所有数据和交集部分数据

2.子查询


内连接

内连接相当于查询AB交集数据

  1. 内连接查询语法
--隐式内连接
SELECT 字段列表 FROM 表1,表2... WHERE 条件;--显示内连接
SELECT 字段列表 FROM 表1 [INNER] J0IN 表2 ON 条件;

外连接

  1. 外连接查询语法
--左外连接
SELECT 字段列表 FROM 表1 LEFT [OUTER] J0IN 表2 ON 条件;--右外连接
SELECT 字段列表 FROM 表1 RIGHT [OUTER] J0IN 表2 ON 条件;

子查询(嵌套查询)

  1. 子查询概念:
    查询中嵌套查询,称嵌套查询为子查询

  2. 子查询根据查询结果不同,作用不同:

  • 单行单列
  • 多行单列
  • 多行多列

子查询根据查询结果不同,作用不同:

  • 单行单列:作为条件值,使用=!=><等进行条件判断
SELECT 字段列表 FROM 表 WHERE 字段名 = (子查询);
  • 多行单列:作为条件值,使用in等关键字进行条件判断
SELECT 字段列表 FROM 表 WHERE 字段名 in (子查询);
  • 多行多列:作为虚拟表
SELECT 字段列表 FROM (子查询) WHERE 条件;

七、事务

事务简介

  • 数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令
  • 事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败
  • 事务是一个不可分割的工作逻辑单元

事务操作

开启事务

START TRANSACTION;
--或者
BEGIN;

提交事务

COMMIT;

回滚事务


ROLLBACK;

事务四大特征(ACID)

  • 原子性(Atomicity):事务是不可分割的最小操作单位,要么同时成功,要么同时失败
  • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态
  • 隔离性(lsolation) :多个事务之间,操作的可见性,隔离性越强,操作越不可见,性能越低
  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的

MySQL事务默认自动提交

注:
查看事务的默认提交方式
1 自动提交 0 手动提交

SELECT @@autocommit;

修改事务提交方式

set @@autocommit = 0;

MySQL快速学习笔记(建议收藏)相关推荐

  1. MySQL 索引学习笔记

    MySQL 索引学习笔记 索引基本概念 索引优点 B-Tree 索引 基本原理 使用场景 使用限制 哈希索引 基本原理 使用限制 自适应哈希索引 处理哈希冲突 相关面试题 高性能索引策略 独立的列 前 ...

  2. 最新、最全、最详细的 MySQL 数据库学习笔记总结(2021最新版)

    数据库是什么 数据库管理系统,简称为DBMS(Database Management System),是用来存储数据的管理系统. DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 ...

  3. Mysql 高级学习笔记

    Mysql 高级学习笔记 文章目录 Mysql 高级学习笔记 一.Mysql 基础 1. 聚合函数 2. having 3. sql 的执行顺序 4. 约束 5. 试图 二.Mysql 高级 1. M ...

  4. 研一寒假MySQL数据库学习笔记(三)

    研一寒假MySQL数据库学习笔记(三) 本节记录数据库高级查询部分的内容,整理于此便于之后回顾. 1. 上一节补充内容 1.1 案例练习 现在有一个员工表.部门表,两张表之间是一个部门多个员工,一个员 ...

  5. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])

    MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...

  7. MySQL语法学习笔记

    MySQL语法学习笔记 学习之道,非尽心竭力者不能进也!我是小七黛,欢迎查看我的笔记,有问题欢迎交流探讨. SQL是一种结构查询语言,用于查询关系数据库的标准语言,包括若干关键字和一致的语法,便于数据 ...

  8. MySQL高级学习笔记(四)

    文章目录 MySQL高级学习笔记(四) 1. MySql中常用工具 1.1 mysql 1.1.1 连接选项 1.1.2 执行选项 1.2 mysqladmin 1.3 mysqlbinlog 1.4 ...

  9. linux数据库创建score表,MySQL数据库学习笔记

    MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...

最新文章

  1. Hadoop(Install)
  2. 【若依(ruoyi)】No message found under code ‘xxx‘ for locale ‘zh_CN‘.
  3. ctsc2009 移民站选址
  4. cuda、cudnn相关问题链接
  5. 用VC写Assembly代码(6)--附录3[X86指令使用详解]
  6. ubuntu安装zookeeper和kafka
  7. 素数判断的java方法_java判断数字是否是素数的方法
  8. 智能一代云平台(十九):选修课---类似秒杀的高并发业务
  9. python爬取快手视频_【原创开源】快手爬虫,根据id批量爬取用户的所有图集和视频...
  10. 蜗牛连珠五子棋改进版
  11. sendto 函数中的struct iov_iter结构 (linux-5.0)
  12. 萨达阿萨德发送到在线橙V
  13. 远程软件工程师的10个最佳实践
  14. ssm+java计算机毕业设计英雄联盟俱乐部管理系统j4oh6(程序+lw+源码+远程部署)
  15. [ahk]右键菜单打开文件所在文件夹(快捷方式也适用)
  16. 交通计算机专业硕士论文,基于强化学习的交通拥堵控制方法研究-计算机技术专业论文.docx...
  17. PAT (Advanced Level) Practice 题解代码 - II (1051-1100)
  18. 别天天人肉提数了,做点这些有价值的事吧...
  19. java-net-php-python-91ssm社会公共常识科普网开题ppt计算机毕业设计程序
  20. 除硼树脂-HPB119

热门文章

  1. JavaScript判断输入值是否为素数
  2. 台式机和笔记本属于什么计算机,pc机属于什么型计算机
  3. 同步 fork(Syncing a fork)
  4. MySql下载安装initialize specified but the data directory has files in it. Aborting.由于找不到VCRUNTIME140_1.d
  5. 计算机通过变频器模拟输入控制电机正反转,用电脑控制的工频高压系统
  6. 学会给视频添加渐入、色彩变幻特效,简单几步骤做创意小视频
  7. 小米离「高富帅」还有多远?
  8. AI面部修复项目:GFP-GAN
  9. VBA之正则表达式(1)-- 基础篇
  10. 人民币纸币采用防伪油墨