MySQL学习记录
MySQL学习笔记(易忘)
节选自 : MySQL 教程 | 菜鸟教程 侵权删
一、数据库
1、基础操作
1 | #创建数据库 |
2、选择数据库
1 | #登录数据库 |
二、数据表
1、数据类型略
2、操作数据库表
1 | #创建数据库表 |
3、删除数据库表
1 | DROP TABLE [IF EXISTS] table_name; -- 会检查是否存在,如果存在则删除 |
4、插入数据
1 | INSERT INTO users (username, email, birthdate, is_active) VALUES |
5、查询数据
1 | #基础语法 |
在 WHERE 子句中,你可以使用各种条件运算符(如 =, <, >, <=, >=, !=),逻辑运算符(如 AND, OR, NOT),以及通配符(如 %)等
1 | SELECT * FROM users WHERE birthdate IN ('1990-01-01', '1992-03-15', '1993-05-03'); |
6、更新语句
1 | UPDATE table_name |
7、删除语句
1 | DELETE FROM table_name |
8、LIKE
如果没有通配符%,那么LIKE和=效果一样。 通配符包括**_** 与%
1 | SELECT column1, column2, ... |
9、UNION
将查询到的两个表结果汇总
UNION默认去重。UNION ALL不会去重。UNION 操作中的列数和数据类型必须相同
1 | SELECT column1, column2, ... |
10、ORDER
1 | SELECT column1, column2, ... |
11、GROUP BY
1 | SELECT column1, aggregate_function(column2) |
12、JOIN
-
INNER JOIN 交连接
-
LEFT JOIN 左连接,保留左边,LEFT JOIN 返回左表的所有行,并包括右表中匹配的行,如果右表中没有匹配的行,将返回 NULL 值
-
RIGHT JOIN 右连接,保留右边,RIGHT JOIN 返回右表的所有行,并包括左表中匹配的行,如果左表中没有匹配的行,将返回 NULL 值
下面重点展示INNER JOIN
1 | SELECT column1, column2, ... |
13、NULL值处理
-
IS NULL: 当列的值是 NULL,此运算符返回 true。
-
IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
-
<=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。
1 | # 检查是否为 NULL: |
14、正则表达式
REGEXP RLIKE
正则表达式匹配的字符类
-
.:匹配任意单个字符。 -
^:匹配字符串的开始。 -
$:匹配字符串的结束。 -
*:匹配零个或多个前面的元素。 -
+:匹配一个或多个前面的元素。 -
?:匹配零个或一个前面的元素。 -
[abc]:匹配字符集中的任意一个字符。 -
[^abc]:匹配除了字符集中的任意一个字符以外的字符。 -
[a-z]:匹配范围内的任意一个小写字母。 -
[0-9]:匹配一个数字字符。 -
\w:匹配一个字母数字字符(包括下划线)。 -
\s:匹配一个空白字符。
例子可参考网站
1 | # 查找 name 字段中以元音字符开头或以 'ok' 字符串结尾的所有数据: |
15、事务
-
BEGIN 、 START TRANSACTION 开启一个事务
-
COMMIT 提交事务
-
ROLLBACK 回滚事务
-
SAVEPOINT savepoint_name 设置保存点
-
ROLLBACK TO SAVEPOINT 回滚到之前设置的保存点
16、ALTER
更改数据表结构
对列的修改:
1 | #添加列 |
17、索引
-
操作索引
1 | # 普通索引 |
-
唯一索引
1 | #创建唯一索引 |
-
使用ALTER命令添加删除索引
1 | ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,主键列中的值必须唯一,主键的列的列表,可以是一个或多个列,不能包含 NULL 值。 。 |
三、杂项
1、临时表
临时表只在连接会话连接的时候生效,关闭连接就会失效
关于临时表:
2、复制表
1 | #查看建表代码 |
使用 mysqldump 命令
1 | mysqldump -u root -p123456 learn_sql users > learn_sql_users.sql |
3、元数据
MySQL 元数据是关于数据库和其对象(如表、列、索引等)的信息。
元数据存储在系统表中,这些表位于 MySQL 数据库的 information_schema 数据库中,通过查询这些系统表,你可以获取关于数据库结构、对象和其他相关信息的详细信息。
1 | #查看表的结构 |
4、自增 AUTO_INCREMENT
1 | #获取刚刚插入的行的自增值 |
重置序列
1 | #删除自增列 |
5、重复数据
1 | #忽略设置UNIQUE的重复数据 |
6、导入数据
当然,都5202年了,用Navicat也是很方便的。 常用:
-
mysql命令导入
1
mysql -uroot -p123456 < runoob.sql
-
source命令导入
1
2
3
4mysql> create database abc; # 创建数据库
mysql> use abc; # 使用已创建的数据库
mysql> set names utf8; # 设置编码
mysql> source /home/abc/abc.sql # 导入备份数据库
7、函数
自行查看:MySQL 函数 | 菜鸟教程