Mysql 手册

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

DDL(数据定义语言)

-- 查询
show databases;

-- 创建数据库
create database 数据库名称;

-- 创建数据库(判断,如果不存在则创建)
create database if not exists 数据库名称;

-- 删除数据库
drop database 数据库名称;

-- 删除数据库(判断,如果存在则删除)
drop database if exists 数据库名称;

-- 查看当前使用的数据库
select database();

-- 使用数据库
use 数据库名称;
-- 查询表
show tables;

-- 查询表结构
desc 表名称;

-- 创建表
create table 表名称(
    字段名1 数据类型1,
    字段名2 数据类型2,
    字段名3 数据类型3,
    ...

    字段名n 数据类型n
);

-- 删除表
drop table 表名;

-- 删除表时判断表是否存在
drop table if exists 表名;

-- 修改表
alter table 表名 rename to 新的表名;

-- 添加一列
alter table 表名 add 列名 数据类型;

-- 修改数据类型
alter table 表名 modify 列名 新数据类型;

-- 修改列名和数据类型
alter table 表名 change 列名 新列名 新数据类型;

-- 删除列
alter table 表名 drop 列名;

数据类型 大小 描述 MEDIUNINT 3 bytes 大整数值 INT或INTEGER 4 bytes 大整数值 BIGINT 8 bytes 极大整数值 FLOAT 4 bytes 单精度浮点数值 DOUBLE 8 bytes 双精度浮点数值 DECIMAL 小数值 DATE 3 日期值 TIME 3 时间值或持续时间 YEAR 1 年份值 DATETIME 8 混合日期和时间值 TIMESTAMP 4 混合日期和时间值、时间戳 CHAR 0-255 bytes 定长字符串 VARCHAR 0-65535 bytes 变长字符串 TINYBLOB 0-255 bytes 不超过255个字符的二进制字符串 TINYTEXT 0-255 bytes 短文本字符串 BLOB 0-65535 bytes 二进制形式的长文本数据 TEXT 0-65535 bytes 长文本数据 MEDIUMBLOB 0-16777215 bytes 二进制形式的中等长度文本数据 MEDIUMTEXT 0-16777215 bytes 中等长度文本数据 LONGBLOB 0-4294967295 bytes 二进制形式的极大文本数据 LONGTEXT 0-4294967295 bytes 极大文本数据

DML(数据操纵语言)

-- 给指定列添加数据
insert into 表名(列名1,列名2,...) values (值1,值2,...);

-- 给全部列添加数据
insert into 表名 values (值1,值2,...);

-- 批量添加数据
insert into 表名(列名1,列名2,...) values (值1,值2,...),(值1,值2,...),(值1,值2,...)...;
insert into 表名 values (值1,值2,...),(值1,值2,...),(值1,值2,...)...;
-- 更新数据
update 表名 set 列名1=值1, 列名2=值2;
-- 删除数据
delete from 表名 where 列名1=值1;

DQL(数据查询语言)

select 字段列表 from 表名 where 条件列表;
select 字段列表 from 表名 limit 起始索引, 查询条目数;
-- 起始索引:从0开始
-- 计算公式:起始索引=(当前页码-1)*每页显示条数

约束是作用于表中的列以限制添加到表中的数据的规则

[En]

Constraints are rules that act on columns in a table to limit the data added to the table

约束的存在确保了数据库中数据的正确性、有效性和完整性。

[En]

The existence of constraints ensures the correctness, validity and integrity of the data in the database.

约束名称 描述 关键字 非空约束 保证列中所有数据不能有null值 NOT NULL 唯一约束 保证列中所有数据各不相同 UNIQUE 主键约束 主键是一行数据的唯一标识,要求非空白唯一 PRIMARY KEY 检查约束 保证列中的值满足某一条件 CHECK 默认约束 保存数据时,未指定值则采用默认值 DEFAULT 外键约束 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性 FOREIGN KEY

🔔MySql不支持检查约束

-- 创建表时添加外键约束
create table 表名(
    列名 数据类型,
    ...

    [CONSTRAINT] [外键名称] FOREIGN KEY(外键列名) REFERENCES 主表(主表列名)
);

-- 建完表后添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名称) REFERENCES 主表名称(主表列名称);

-- 删除约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

数据库设计

一对多关系基于两个表之间的关系。一个表中的一条数据可以对应于另一张表中的多条数据。记住:外键总是在很多方面。允许外键重复并包含空值。

[En]

An one-to-many relationship is based on a relationship between two tables. One piece of data in one table can correspond to multiple pieces of data in another table. Remember: foreign keys are always in many ways. Foreign keys are allowed to repeat and contain null values.

您需要创建一个中间表,在中间表中创建两列,然后将这两列作为表的联合主键,然后每列引用自己表的主键作为外键。

[En]

You need to create an intermediate table, create two columns in the intermediate table, and then use these two columns as the joint primary key of the table, and then each column references the primary key of its own table as a foreign key.

一对一关系主要用于表拆分,将一个实体中经常使用的字段放在一个表中,而将不常用的字段放在另一个表中,以提高查询性能。

[En]

One-to-one relationships are mostly used for table splitting, placing fields that are often used in one entity in one table and infrequently used fields in another table to improve query performance.

实现方式:在任意一方加入外键,关联另一方主键,并且设置外键为 唯一(UNIQUE)

多表查询

  • 内连接:相当于查询A B交集数据
-- 隐式内连接
SELECT 字段列表 FROM 表1,表2... WHERE 条件;

-- 显示内连接
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;
  • 外连接:
  • 左外连接:相当于查询A表所有数据和交集部分数据
SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;
  • 右外连接:相当于查询B表所有数据的交集部分数据
SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;
  • 概念:
  • 查询中嵌套查询,称嵌套查询为子查询
  • 根据查询结果,函数会有所不同:
    [En]

    the function varies according to the query result:*

  • 单行单列
SELECT 字段列表 FROM 表 WHERE 字段名=(子查询);
  • 多行单列
SELECT 字段列表 FROM 表 WHERE 字段名 IN (子查询);
  • 多行多列
SELECT 字段列表 FROM (子查询) WHERE 条件;
  • 数据库事务是一种机制,一种操作序列,包含一组数据库操作命令
    [En]

    A database transaction is a mechanism, an operation sequence, which contains a set of database operation commands*

  • 事务向系统整体提交或撤销操作请求,即这套数据库命令要么同时成功,要么同时失败。
    [En]

    the transaction submits or revokes the operation request to the system as a whole, that is, this set of database commands either succeed or fail at the same time.*

  • 交易是一个不可分割的工作逻辑单元

    [En]

    transaction is an indivisible working logical unit*

  • 原子性(Atomicity):事务是不可分割的最小操作单元,要么同时成功,要么同时失败

  • 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态
  • 隔离性(Isolation):多个事务之间,操作的可见性
  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的
-- 开启事务
START TRANSACTION 或者 BEGIN;
-- 提交事务
COMMIT;
-- 回滚事务
ROLLBACK;
-- 查看事务的默认提交方式
SELECT @autocommit;
-- 1. 自动提交 0.手动提交
-- 修改事务提交方式
set @@autocommit = 0;

Original: https://www.cnblogs.com/xiao-sq/p/16139136.html
Author: 飞翔的稻草
Title: Mysql 手册

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/505486/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python_Pandas入门

    一、什么是Pandas? 博文转载: https://www.runoob.com/pandas/pandas-tutorial.html 基于NumPy的一种工具,该工具是为解决…

    数据库 2023年6月11日
    0173
  • 3_MyBatis

    一. 引言 1.1 什么是框架? 软件的半成品, 解决了软件开发过程中的普适性问题, 从而简化了开发步骤, 提升了开发效率 1.2 什么是ORM框架? ORM(Object Rel…

    数据库 2023年6月11日
    071
  • 接口和抽象类有什么区别

    1.抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象 2.抽象类要被子类继承,接口要被类实现 3….

    数据库 2023年6月6日
    060
  • rsync

    rsync是什么 rsync特性 1)可以镜像保存整个目录树和文件系统。 2)可以很容易做到保持原来文件的权限、时间、软硬连接等。 3)无需特殊权限即可安装。 4)快速:第一次同步…

    数据库 2023年6月14日
    076
  • English words 929 9:00

    本文来自博客园,作者:ukyo–BlackJesus,转载请注明原文链接:https://www.cnblogs.com/ukzq/p/16743070.html Or…

    数据库 2023年6月11日
    086
  • 计算机网络基础

    计算机网络基础 计算机网络的定义和功能 计算机网络是利用通信设备和线路,将分布在地理位置不同的、功能独立的多个计算机系统连接起来,以功能完善的网络软件(网络通信协议及网络操作系统等…

    数据库 2023年6月16日
    070
  • haproxy服务部署

    haproxy haproxy 一、haproyx是什么 二、负载均衡类型 三、部署haproxy 1.源码部署haproxy 2.Haproxy搭建http负载均衡 一、hapr…

    数据库 2023年6月14日
    098
  • JUC学习笔记(三)

    线程间通信的模型有两种:共享内存和消息传递,以下方式都是基本这两种模型来实现的。我们来基本一道面试常见的题目来分析 JUC学习笔记(一)https://www.cnblogs.co…

    数据库 2023年6月6日
    075
  • pg小工:pgsql的介绍

    支持邮件列表 http://www.postgresql.org/community/lists/ Original: https://www.cnblogs.com/lyhabc…

    数据库 2023年6月9日
    091
  • [SuperSocket2.0]SuperSocket 2.0从入门到懵逼

    SuperSocket 2.0从入门到懵逼 1 使用SuperSocket 2.0在AspNetCore项目中搭建一个Socket服务器 1.1 引入SuperSocket 2.0…

    数据库 2023年6月9日
    0125
  • Spring Bean的作用域

    Spring Bean的作用域或者说范围主要有五种: 作用 描述 singleton 在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,bean作用域范围的…

    数据库 2023年6月16日
    056
  • MySQL45讲之优化器选错索引

    前言 本文简要介绍了优化器选择索引的依据,以及如何人为地引导优化器选择较好的执行方案。 [En] This paper briefly introduces the basis f…

    数据库 2023年5月24日
    0107
  • 手把手教你使用 Java 在线生成 pdf 文档

    一、介绍 在实际的业务开发的时候,研发人员往往会碰到很多这样的一些场景,需要提供相关的电子凭证信息给用户,例如网银/支付宝/微信购物支付的电子发票、订单的库存打印单、各种电子签署合…

    数据库 2023年6月14日
    0107
  • 运行jar包使用外部依赖

    nohup java -Dloader.path=”lib/” -Dfile.encoding=utf-8 -jar test.jar > test….

    数据库 2023年6月9日
    051
  • datatable 转化成xml以及json

    datatable dt=xxx获取 赋值给应用的字段 var pp=dt.row[0][“datatable里面的字段”].tostring() var …

    数据库 2023年6月9日
    073
  • 【Kubernetes系列】Kubernetes相关概念介绍

    Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容…

    数据库 2023年6月6日
    074
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球