周六去考二级,应用第一题就是添加外键约束

草,写了半天老说语法不对,然后急中生智,觉得默认的库里应该有文档说明表

以下是SQL查询过程:

-- 猜测是在mysql库里面
mysql> USE mysql;
Database changed -- 查看这个库下的表
mysql> SHOW TABLES;
+------------------------------------------------------+
| Tables_in_mysql |
+------------------------------------------------------+
| columns_priv |
| component |
| db |
| default_roles |
| engine_cost |
| func |
| general_log |
| global_grants |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| password_history |
| plugin |
| procs_priv |
| proxies_priv |
| replication_asynchronous_connection_failover |
| replication_asynchronous_connection_failover_managed |
| role_edges |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+------------------------------------------------------+
35 rows in set (0.46 sec)

  

然后发现这四张Help表,考试的时候我没关注过分类表

展开查看发现,里面已经说明了MySQL的内容:

mysql> SELECT * FROM help_category;
+------------------+---------------------------------------+--------------------+-----+
| help_category_id | name | parent_category_id | url |
+------------------+---------------------------------------+--------------------+-----+
| 0 | Contents | 0 | |
| 1 | Help Metadata | 0 | |
| 2 | Data Types | 0 | |
| 3 | Administration | 0 | |
| 4 | Functions | 0 | |
| 5 | Enterprise Encryption Functions | 4 | |
| 6 | Language Structure | 0 | |
| 7 | Geographic Features | 0 | |
| 8 | MBR | 7 | |
| 9 | WKT | 7 | |
| 10 | Comparison Operators | 4 | |
| 11 | Logical Operators | 4 | |
| 12 | Flow Control Functions | 4 | |
| 13 | Numeric Functions | 4 | |
| 14 | Date and Time Functions | 4 | |
| 15 | String Functions | 4 | |
| 16 | Cast Functions and Operators | 4 | |
| 17 | XML | 4 | |
| 18 | Bit Functions | 4 | |
| 19 | Encryption Functions | 4 | |
| 20 | Locking Functions | 4 | |
| 21 | Information Functions | 4 | |
| 22 | Spatial Functions | 4 | |
| 23 | WKT Functions | 22 | |
| 24 | WKB Functions | 22 | |
| 25 | Geometry Constructors | 22 | |
| 26 | Geometry Property Functions | 22 | |
| 27 | Point Property Functions | 22 | |
| 28 | LineString Property Functions | 22 | |
| 29 | Polygon Property Functions | 22 | |
| 30 | GeometryCollection Property Functions | 22 | |
| 31 | Geometry Relation Functions | 22 | |
| 32 | MBR Functions | 22 | |
| 33 | GTID | 4 | |
| 34 | Aggregate Functions and Modifiers | 4 | |
| 35 | GROUP BY Functions and Modifiers | 4 | |
| 36 | Window Functions | 4 | |
| 37 | Performance Schema Functions | 4 | |
| 38 | Internal Functions | 4 | |
| 39 | Miscellaneous Functions | 4 | |
| 40 | Data Definition | 0 | |
| 41 | Data Manipulation | 0 | |
| 42 | Transactions | 0 | |
| 43 | Compound Statements | 0 | |
| 44 | Account Management | 0 | |
| 45 | Table Maintenance | 0 | |
| 46 | User-Defined Functions | 0 | |
| 47 | Components | 0 | |
| 48 | Plugins | 0 | |
| 49 | Utility | 0 | |
| 50 | Storage Engines | 0 | |
+------------------+---------------------------------------+--------------------+-----+
51 rows in set (0.05 sec)

  

因为是关键字或者其他问题,尝试翻查这个关键字帮助表

当时写外键语句是这样:

ALTER TABLE xxx
ADD CONSTRAINT FOREIGN KEY xxx(xxx) REFERENCE xx(xx);

  

报错提醒发生在 reference这里

所以我当时就搜素两个关键字,外键和引用这两个

mysql> SELECT * FROM help_keyword WHERE `name` LIKE '%reference%';
+-----------------+------------+
| help_keyword_id | name |
+-----------------+------------+
| 653 | REFERENCE |
| 673 | REFERENCES |
+-----------------+------------+
2 rows in set (0.03 sec) mysql> SELECT * FROM help_keyword WHERE `name` LIKE '%FOREIGN%';
+-----------------+---------+
| help_keyword_id | name |
+-----------------+---------+
| 599 | FOREIGN |
+-----------------+---------+
1 row in set (0.02 sec)

  

然后官方给这个文档帮助表设定的说明关系是,关键字和主题是一个多对多的关系

用一个关系表维护,这里要先看【帮助主题】绑定的【关键字ID】

mysql> SELECT * FROM help_relation WHERE help_keyword_id = 599;
+---------------+-----------------+
| help_topic_id | help_keyword_id |
+---------------+-----------------+
| 508 | 599 |
| 518 | 599 |
| 520 | 599 |
| 521 | 599 |
+---------------+-----------------+
4 rows in set (0.12 sec)

我们还可以再看看之前reference关键字关联的

mysql> SELECT * FROM help_relation WHERE help_keyword_id = 653;
+---------------+-----------------+
| help_topic_id | help_keyword_id |
+---------------+-----------------+
| 519 | 653 |
| 532 | 653 |
+---------------+-----------------+
2 rows in set (0.02 sec) mysql> SELECT * FROM help_relation WHERE help_keyword_id = 673;
+---------------+-----------------+
| help_topic_id | help_keyword_id |
+---------------+-----------------+
| 520 | 673 |
| 521 | 673 |
| 610 | 673 |
+---------------+-----------------+
3 rows in set (0.02 sec)

  

可以发现599ID 和673ID都有共同两个帮助主题

所以确定是References关键字,然后看看520ID的主题是什么:

由于主题表输出的内容太多,格式完全混乱了,当时考试那个命令终端就是一直刷,还没办法停下

然后先查看主题表的字段:

mysql> DESC help_topic;
+------------------+-------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+-------------------+------+-----+---------+-------+
| help_topic_id | int unsigned | NO | PRI | NULL | |
| name | char(64) | NO | UNI | NULL | |
| help_category_id | smallint unsigned | NO | | NULL | |
| description | text | NO | | NULL | |
| example | text | NO | | NULL | |
| url | text | NO | | NULL | |
+------------------+-------------------+------+-----+---------+-------+
6 rows in set (0.08 sec)

  

最主要的是example样例和decription描述,但是example查询为空,只能看描述了

mysql> SELECT example FROM help_topic WHERE help_topic_id = 520;
+---------+
| example |
+---------+
| |
+---------+

  

520ID没找到,就找521,结果一看正好就是这个:

就是少写了S导致的

MySQL supports foreign keys, which permit cross-referencing related
data across tables, and foreign key constraints, which help keep the
related data consistent. A foreign key relationship involves a parent table that holds the
initial column values, and a child table with column values that
reference the parent column values. A foreign key constraint is defined
on the child table. The essential syntax for a defining a foreign key constraint in a
CREATE TABLE or ALTER TABLE statement includes the following: [CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (col_name, ...)
REFERENCES tbl_name (col_name,...)
[ON DELETE reference_option]
[ON UPDATE reference_option] reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT URL: https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html

  

【MySQL】二级MySQL考试 救场帮助表的更多相关文章

  1. mysql的锁--行锁,表锁,乐观锁,悲观锁

    一 引言--为什么mysql提供了锁 最近看到了mysql有行锁和表锁两个概念,越想越疑惑.为什么mysql要提供锁机制,而且这种机制不是一个摆设,还有很多人在用.在现代数据库里几乎有事务机制,aci ...

  2. mysql复习-来源考试

    mysql复习-   No1 .登录和权限 (一)常用命令1.登录mysqlmysql -h localhost -u root -p 2.重启mysqlservice mysql restart 延 ...

  3. MySQL的选则字段+联表+判断+排序(order by)

    MySQL的选则字段+联表+判断+排序(order by) 两个表:1.成绩单 2.查询名单 目标: 1.选中全部字段,用于输出. 2.成绩单中有很多人的成绩,第一步是希望通过联表,只查查询名单上的人 ...

  4. MySQL学习笔记02_数据库和表的基本操作

    02_1 操作数据库 (1)创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification[, create_specifica ...

  5. MySQL中select * for update锁表的范围

    MySQL中select * for update锁表的问题 由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的资料例 ...

  6. MySQL中select * for update锁表的问题

    MySQL中select * for update锁表的问题 由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的资料例 ...

  7. mysql系统库INFORMATION_SCHEMA,MySQL,TEST,mysql系统表的作用

    本文简要说明了MySQL数据库安装好后自带的INFORMATION_SCHEMA,MySQL,TEST三个数据库的用途. 第一个数据库INFORMATION_SCHEMA: 提供了访问数据库元数据的方 ...

  8. MYSQL中约束及修改数据表

    MYSQL中约束及修改数据表 28:约束约束保证数据的完整性和一致性约束分为表级约束和列级约束约束类型包括:    NOT NULL(非空约束)    PRIMARY KEY(主键约束)    UNI ...

  9. MySQL 如何只导出 指定的表 的表结构和数据 ( 转 )

    MySQL 如何只导出 指定的表 的表结构和数据 ( 转 ) 2011-01-04 15:03:33 分类: MySQL MySQL 如何只导出 指定的表 的表结构和数据 导出更个库的表结构如下:my ...

  10. mysql存储过程之游标遍历数据表

    原文:mysql存储过程之游标遍历数据表 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕 ...

随机推荐

  1. 2024-06-08:用go语言,给定三个正整数 n、x和y, 表示城市中的房屋数量以及编号为x和y的两个特殊房屋。 在这座城市中,房屋通过街道相连。对于每个编号i(1 <= i < n), 存在一条

    2024-06-08:用go语言,给定三个正整数 n.x和y, 表示城市中的房屋数量以及编号为x和y的两个特殊房屋. 在这座城市中,房屋通过街道相连.对于每个编号i(1 <= i < n) ...

  2. The solution of CF380C

    problem 希望这篇题解不要明年才审完. 标签:线段树 记录 \(Lsum_p\) 为这个区间有多少个 ( 不能匹配,\(Rsum_p\) 为这个区间有多少个 ) 不能匹配. 对于叶子结点如果是 ...

  3. INFINI Labs 产品更新 | 修复 Easysearch 跨集群复制索引同步问题,Gateway 内存异常增长等问题

    INFINI Labs 产品又更新啦~,本次更新主要对 Easysearch.Gateway.Console.Agent 等产品功能进行优化和相关 Bug 修复,解决了内存异常增长等问题,以下是详细说 ...

  4. Steam Epic 启动程序默认地址

    Steam Epic 启动程(启动器)序默认地址 "D:\Games\EpicAPP\Epic Games\Launcher\Portal\Binaries\Win32\EpicGamesL ...

  5. Scrapy框架(十)--增量式爬虫

    增量式爬虫 - 概念:监测网站数据更新的情况,只会爬取网站最新更新出来的数据. - 分析: - 指定一个起始url - 基于CrawlSpider获取其他页码链接 - 基于Rule将其他页码链接进行请 ...

  6. pytest执行_allure报“AttributeError: module 'allure' has no attribute 'severity_level'”

    背景: 一个大项目A,需要项目B作为源码,即pycharm的 source_root 问题: 项目B,执行pytest.main([pytest命令]),控制台报错"AttributeErr ...

  7. Linux常用耗资源命令汇总

    在Linux中,以下命令可能在处理大量数据或复杂操作时比较消耗资源.一般来说,涉及大量数据处理.计算或者I/O操作的命令会比较耗费系统资源. ​ 注意:所有命令资源消耗都是相对的,基于文件的处理量来展 ...

  8. java并发的发布和订阅测试

    现在编码的时候,为了处理消息,大家动不动就上个重器,例如MQ之类的.但很多时候,并不是那么有必要,因为数据量和并发其实远远不够. 可以替代的方案非常多,其中一个是java.util.concurren ...

  9. 一款.NET开源的i茅台自动预约小助手

    前言 今天大姚给大家分享一款.NET开源.基于WPF实现的i茅台APP接口自动化每日自动预约(抢茅台)小助手:HyggeImaotai. 项目介绍 该项目通过接口自动化模拟i茅台APP实现每日自动预约 ...

  10. 执行insmod提示 invalid module format

    内核版本和驱动版本不匹配: 1.假如内核版本是2018.3,驱动使用了另外一个版本,可能会出现这样的问题 2.内核和驱动版本一致,但内核进行了一些配置,导致驱动装不上,此时应该: make clean ...