首页 > 数据库 >MySQL_network

MySQL_network

时间:2024-12-28 19:10:39浏览次数:4  
标签:network 索引 MySQL table TABLE SELECT name

MySQL

RDBMS 术语

数据库: 数据库是一些关联表的集合
数据表: 表是数据的矩阵
列: 一列包含了相同类型的数据
行:一行一组相关的数据
冗余:存储两倍数据
主键:主键是唯一的,可以用主键来查询数据
外键:外键用于关联两个表
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引
索引:使用索引可快速访问数据库表中的特定信息,类似于书籍的目录
参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性

启动及关闭 MySQL

启动

sudo systemctl start mysql

关闭

sudo systemctl stop mysql

重启

sudo systemctl restart mysql

检查

sudo systemctl status mysql

MySQL连接

mysql -u username -p

执行 SQL 查询

列出可用的数据库

SHOW DATEBASES;

选择需要使用的数据库

USE datebase;

列出所选数据中的所有表

SHOW TABLES;

查看表的结构

DESC table_name;

查看表的索引

SHOW INDEX FROM table_name;

查看表的创建语句

SHOW CREATE TABLE table_name;

查看表的行数

SELECT COUNT(*) FROM table_name;

退出

mysql>EXIT;/QUIT;

创建数据库、数据表

CREATE DATABASE 数据库名
CHARACTER SET 字符集名称
COLLATE 校对规则;

字符集是可以识别、储存和表示的字符和符号的集合,

校对规则是字符集内部字符比较和排序的规则。

CREATE TABLE 数据表名(
表名1,数据类型1,
表名2,数据类型2,
);

NOT NULL 字段不为空;

AUTO_INCREMENT 用于创建自增长的列;

PRIMARY KEY 用于定义主键;

ENGINE 设置存储引擎,CHARSET 设置编码

使用mysqladmin创建数据库

mysqladmin -u 用户名 -p 数据库名\
  --default-character-set=字符集名称\
  --default-collation=校对规则

删除数据库、数据表

DROP DATABASE/TABLE 数据库/表名

插入数据

INSERT INTO 表名(列名1,2,3)
VALUES(具体数值1,2,3),
      (.....);

查询数据

SELECT 列名 FROM 表名;

查询所有列时用*表示

WHERE 子句

SELECT 列名 
FROM 表名 
WHERE 过滤条件

  • 查询多个表用,隔开
  • <> != 相当于不等于
  • 组合条件(AND,OR)
  • 模糊匹配条件(LINK)
  • IN条件(和=类似)
  • BETWEEN AND
  • IS NULL / IS NOT NULL

UPDATE 更新

UPDATE 表名
SET 列名 = 新的值
WHERE 指定要更改的行

省略WHERE将更新所有行,可以更新多列

QQ截图20241024170138

DELETE 语句

DELETE FROM 表名
WHERE 指定要删除的行

省略WHERE删除所有行,

可以使用子查询删除符合条件的行

LIKE 子句

SELECT 要选择的列名列名
FROM 表名
WHERE 要应用LIKE子句的列名 LIKE 匹配模式

通配符:

%:表示零个或多个任意字符
_:表示一个任意字符

不使用%和_时,LINK与 = 效果一样

SELECT * FROM uuu WHERE name LIKE _a%o 

查询uuu中,第二个字符是a以o结尾的name

UNION 操作符

SELECT 列名 FROM 表名
UNION
SELECT 列名 FROM 表名
  • 使用 UNION ALL 不去除重复行
  • UNION 操作中的列数和数据类型必须相同
  • 可以通过 UNION 过滤条件

ORDER BY 语句

SELECT 列名
FROM 表名
ORDER BY 指定排序顺序的表名
  • ASC 为升序(默认),DESC 为降序

  • 可以多列排序,哪个在前先按哪个排,在内容一样时再考虑下一项

  • 用数字表示列的位置

    其中,weight 为第二列,height 为第三列

  • 使用表达式排序

  • 从 MySQL 8.0.16 版本开始,可以使用 NULLS FIRST 或 NULLS LAST 处理 NULL 值

GROUP BY 语句

SELECT 列名,对分组后的每个组执行的聚合函数
FROM 表名
WHERE(可选,用于过滤条件)
GROUP BY 列名
  • 聚合函数:

    SUM() AVG() MIN() MAX() COUNT()

  • 按country分组,并统计每个国家有几个

  • 按name分组,并计算每个人的平均身高

  • WITH ROLLUP 可实现在分组统计数据基础上再进行相同的统计,

    其中记录 NULL 表示所有人的登录次数,

    我们可以使用 coalesce 来设置一个可以取代 NUll 的名称

coalesce(a,b,c)

连接的使用

INNER JOIN

SELECT column1,column2,...
FROM table1 AS 1
INNER JOIN table2 AS 2 ON 1.column1_name=2.column2_name;

  • 使用表别名

  • 多表连接
SELECT orders.order_id, customers.customer_name, products.product_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id
INNER JOIN order_items ON orders.order_id = order_items.order_id
INNER JOIN products ON order_items.product_id = products.product_id;
  • 使用 WHERE 子句进行过滤

LEFT JOIN

SELECT column1, column2, ...
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;

LEFT JOIN 会读取左边数据表的全部数据,即使右边表无对应数据;当右表中没有匹配的行时,相关列将显示为 NULL

RIGHT JOIN

SELECT column1,column2...
FROM table1
RIGHT JOIN table2 ON table1.column_name=table2.column_name;

RIGHT JOIN 会读取右边数据表的全部数据,即使左边边表无对应数据;RIGHT JOIN 并不经常使用,因为它可以用 LEFT JOIN 和表的顺序交换来实现相同的效果。

NULL值处理

IS NULL: 当列的值是 NULL,此运算符返回 true。
IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
<=>: 比较操作符(不同于 = 运算符),当比较的两个值相等或者都为 NULL 时返回 true。

正则表达式

MySQL 可以通过 LIKE ...% 来进行模糊匹配;

MySQL 同样也支持其他正则表达式的匹配, MySQL 中使用 REGEXP 和 RLIKE操作符来进行正则表达式匹配

RLIKE 和 REGEXP

RLIKE 是 MySQL 中用于进行正则表达式匹配的运算符,与 REGEXP 是一样的,RLIKE 和 REGEXP 可以互换使用,没有区别

REGEXP

SELECT column1,column2,...
FROM table_name
WHERE column_name REGEXP 'pattern';

RLIKE

SELECT column1,column2,...
FROM table_name
WHERE column_name RLIKE 'pattern';

正则模式

正则表达式匹配的字符类

  • .:匹配任意单个字符
  • ^:匹配字符串的开始
  • $:匹配字符串的结束
  • *:匹配零个或多个前面的元素
  • +:匹配一个或多个前面的元素
  • ?:匹配零个或一个前面的元素
  • [abc]:匹配字符集中的任意一个字符
  • [^abc]:匹配除了字符集中的任意一个字符以外的字符
  • [a-z]:匹配范围内的任意一个小写字母
  • [0-9]:匹配一个数字字符
  • \w:匹配一个字母数字字符(包括下划线)
  • \s:匹配一个空白字符

MySQL 事务

MySQL 事务主要用于处理操作量大,复杂度高的数据

在 MySQL 中,事务是一组SQL语句的执行,它们被视为一个单独的工作单元

  • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务
  • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行
  • 事务用来管理 insert、update、delete 语句

事务是必须满足4个条件(ACID):原子性、一致性、隔离性、持久性

原子性:一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交、读提交、可重复读和串行化。

持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

MYSQL 事务处理主要有两种方法

1、用 BEGIN, ROLLBACK, COMMIT 来实现

BEGIN 或 START TRANSACTION:开用于开始一个事务
ROLLBACK 事务回滚,取消之前的更改
COMMIT:事务确认,提交事务,使更改永久生效

2、直接用 SET 来改变 MySQL 的自动提交模式:

SET AUTOCOMMIT=0 禁止自动提交
SET AUTOCOMMIT=1 开启自动提交

开始事务

BENGIN/START TRANSACTION;

提交事务

COMMIT;

回滚事务,撤销自上次提交以来所做的所有更改

ROLLBACK;

在事务中设置保存点,以便稍后能够回滚到该点

SAVEPOINT savepoint_name;

回滚到之前设置的保存点

ROLLBACK TO SAVEPOINT savepoint_name;

ALTER 命令

添加列

ALTER TABLE table_name
ADD COLUMN new_column_name datatpye

修改列的数据类型

ALTER TABLE table_name
MODIFY COLUMN 

修改列名

ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name datatype;

删除列

ALTER TABLE table_name
DROP COLUMN column_name

添加 PRIMARY KEY

ALTER TABLE table_name
ADD PRIMARY KEY (column_name);

添加 FOREIGN KEY

ALTER TABLE child_table
ADD CONSTRAINT fk_name
FOREIGN KEY (column_name)
REFERENCES parent_table (column_name);

修改表名

ALTER TABLE old_table_name
RENAME TO new_table_name;

索引

MySQL 索引类似于书籍的索引,通过存储指向数据行的指针,可以快速定位和访问表中的特定数据

单列索引和组合索引

单列索引,即一个索引只包含单个列,一个表可以有多个单列索引

组合索引,即一个索引包含多个列

创建索引

CREATE INDEX index_name
ON table_name (column1[ASC|DESC],column2[ASC|DESC],...);

默认情况 索引升序ASC

添加索引

使用 ALTER TABLE 命令可以在已有的表中创建索引

ALTER TABLE table_name
ADD INDEX index_name (column1[ASC|DESC],column2[ASC|DESC],...);

创建表的时候直接指定

CREATE TABLE table_name(
column1 data_type,
column2 data_type,
...,
INDEX index_name(column1[ASC|DESC],column2[ASC|DESC],...)
)

删除索引的语法

DROP INDEX index_name ON table_name;

使用 ALTER TABLE 语句删除索引

ALTER TABLE table_name
DROP INDEX index_name;

显示索引信息

SHOW INDEX FROM table_name\G

命令大全

数据库相关命令

数据表相关命令

其他:

  • 重要的地方要大写,末尾加;才能运行
  • 命令后加IF NOT EXISTS ,避免执行出现错误
  • 使用mysqladmin前要先保证MySQL在运行
mysqladmin -u 用户名 -p 命令
  • 创建/删除数据表前要先选择数据库

  • 不写列名连接不到

  • 查询中的字符串记住要加引号

  • date < 2006-12-23 是指之前的时间

  • COLLATE utf8mb4_general_ci 不区分大小写

  • 插入多行数据,要在一行数据后加上,

  • 聚合函数:

    SUM():计算某列总和

    AVG():计算平均值

    MIN():返回最小值

    MAX():返回最大值

    COUNT():计算某列行数

标签:network,索引,MySQL,table,TABLE,SELECT,name
From: https://www.cnblogs.com/xmt123/p/18637816

相关文章

  • PHP_network
    PHPPHP基础教程语法PHP脚本以<?php开头,以?>结尾php语句以;结尾,php代码块的关闭标签也会自动标名;php支持的三种注释//单行注释单行注释/*多行注释*/php中,所有用户定义的函数、类和关键词都对大小写不敏感;但所有变量都对大小写敏感变量变量规则:以$符......
  • 基于python+Django+mysql校园二手书籍交易平台系统设计与实现
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。项目配有对应开发......
  • MYSQL访问控制,第2阶段:请求验证
    服务器接受连接后,进入权限控制的第二阶段。对于您通过连接发出的每个请求,服务器确定您要执行的操作,然后检查您的权限是否足够。这是授权表中的权限列发挥作用的地方。这些权限来自系统表user、global_grants、db、tables_priv、columns_priv或procs_priv。user表和global_gran......
  • MySql B树 B+树
    什么是叶子节点?想象你有一本书,书中的每一页都是一个节点。在这本书里,有些页面包含的是目录或章节标题(这些可以类比为内部节点),而另一些页面则包含了实际的内容,比如故事、文章或者数据记录(这些是叶子节点)。叶子节点就是存储真实数据的最终位置,在树结构中它们位于最底层,没有子节......
  • MySQL安装配置教程(非常详细),从零基础入门到精通,看完这一篇就够了
    Windows下有两种安装MySQL的方式:图形界面安装(.msi文件)免安装版(.zip压缩文件)MySQL下载官网:http://www.mysql.com也可前往百度网盘提取(两种安装方式文件都有):链接:https://pan.baidu.com/s/1NMRUu_E098h4ErzSXTUKgA提取码:3tfb一、MySQL免安装版配置教程http://c.bianche......
  • MySQL General error: 1364 Field 'XXX' doesn't have a default value
    向数据库中插入数据时报了以上错误,其原因为:MySQL使用了严格验证方式解决办法mysql设置的问题,有my.ini的就找这个文件,没有的就找my.cnf(这个一般都在/ect/my.conf)直接把[mysqld]模块下的sql-mode模式改变下,找到sql-mode,然后把这句删掉,改成:sql_mode=NO_ENGINE_SUBSTITU......
  • mysql 一个字段多种排序方式
    一、mysql一个字段多种排序数据idname1tkj1000020-1.11test2tkj1000020-13tkj1000020-2.1test4tkj1000020-2.2test5tkj1000020-26tkj1000020.1test7tkj1000020.1test_0018tkj1000020.2test9tkj1000020.3test10tkj1000020aest......
  • python 连接操作MySQL数据库
    安装依赖pipinstallmysql-connector-python自定义公共管理类importmysql.connectorfrommysql.connectorimportErrorclassMySQLDatabase:def__init__(self,host,database,user,password):self.host=hostself.database=database......
  • MySQL 数据库备份与恢复
    MySQL数据库的备份与恢复是确保数据安全的重要操作,以下是对这一过程的详细阐述:一、备份方式MySQL数据库的备份方式主要分为物理备份和逻辑备份两种。1.物理备份定义:直接复制数据库的物理文件(如数据文件、日志文件等)进行备份。优点:备份速度快,恢复时操作简单,占用的系统资......
  • MySQL的PRIMARY KEY的DEFAULT NULL问题
    问题展示 代码一:importpymysqlif__name__=='__main__':conn=pymysql.connect(host='localhost',port=3306,user='root',passwd='123123',charset='utf8mb4',......