MySQL数据库使用笔记

索引失效问题

https://www.jianshu.com/p/d5b2f645d657

基本使用操作

  • 查看数据库:show databases;
    这里写图片描述

  • 选择某个数据库:use 数据库名
    这里写图片描述

  • 查看某个数据库内有哪些表:show tables;
    这里写图片描述

  • 显示数据表的属性:show columns from 表名;
    这里写图片描述

mysql> show index from user;
+-------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| Table | Non_unique | Key_name          | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible |
+-------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
| user  |          0 | PRIMARY           |            1 | user_id     | A  |           0 |     NULL |   NULL |      | BTREE      |         |  | YES     |
| user  |          0 | PRIMARY           |            2 | phone       | A  |           0 |     NULL |   NULL |      | BTREE      |         |  | YES     |
| user  |          0 | user_phone_uindex |            1 | phone       | A  |           0 |     NULL |   NULL |      | BTREE      |         |  | YES     |
| user  |          0 | user_id_uindex    |            1 | user_id     | A  |           0 |     NULL |   NULL |      | BTREE      |         |  | YES     |
+-------+------------+-------------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
4 rows in set (0.15 sec)

外键约束

在建表添加外键约束的时候,需要选择on delete/update时的操作。大致知道这是怎么回事,无非是主表的内容删除或者更新的时候,对从表的相应的字段进行什么样的操作。但是具体的内容,忘记了,在这里特地找出来,给自己一个参考,顺便温习一下外键。

外键约束对子表的含义:
如果在父表中找不到候选键,则不允许在子表上进行insert/update

外键约束对父表的含义:
在父表上进行update/delete以更新或删除在子表中有一条或多条对应匹配行的候选键时,父表的行为取决于:在定义子表的外键时指定的on update/on delete子句。

MySQL中的InnoDB有5中方式,如下:

方式 描述
cascade 在父表上update/delete记录时,同步update/delete掉子表的匹配记录
set null 在父表上update/delete记录时,将子表上匹配记录的列设为null,要注意子表的外键列不能为not null
no action 如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作
restrict 同no action, 都是立即检查外键约束
缺省 解析器认识这个action,但Innodb不能识别,不知道是什么意思

常见错误

  • 1022 can't write duplicate key in table #‘sql_XXXXX’
    外键重名导致,另起一个名字即可解决。(mysql)

  • -

猜你喜欢

转载自blog.csdn.net/asahinokawa/article/details/79998633