mysql 外键的全局变量_MySQL外键约束是否启用是通过一个全局变量标示的:

bc3f9276acf88283a0569b9b9ef9ee92.png

在线QQ客服:1922638

专业的SQL Server、MySQL数据库同步软件

第一步,启动和停止mysql服务

净停止mysql

净启动mysql

第二步,登录mysql

语法如下:mysql-u用户名-p用户密码

键入命令mysql-uroot-p,然后按Enter键,提示您输入密码,输入12345,然后按Enter键输入mysql,mysql提示符为:

mysql \ gt;

请注意,如果它连接到另一台机器,则需要添加参数-h机器IP

第三招,添加新用户

格式:授予数据库权限。 *到用\标识的用户名@ loginhost;密码”

例如,将用户user1密码添加为password1,以便他可以登录到该计算机,并具有查询,插入,修改和删除所有数据库的权限。首先以root用户身份连接到mysql,然后键入以下命令:

在*上授予选择,插入,更新,删除的权限。 *至\\ n00 user1 @本地主机\\ n标识为” password1 \\;

如果希望用户能够在任何计算机上登录mysql,则将localhost更改为\”%\”。

如果您不希望user1拥有密码,则可以键入另一个命令来删除密码。

授予对mydb的选择,插入,更新,删除的权限。 *至\\ n00 user1 @本地主机\\ n标识为” \ quot ;;

第四招:操作数据库

登录到mysql,然后在mysql提示符下运行以下命令,每个命令以分号结尾。

1.显示数据库列表。

显示数据库;

默认情况下有两个数据库:mysql和test。 mysql清单包含mysql系统和用户权限信息。我们更改密码并添加用户,实际上是在此库上进行操作。

2.在库中显示数据表:

使用mysql;

显示表格;

3.显示数据表的结构:

描述表名;

4.构建和删除库:

创建数据库库名称;

删除数据库库名称;

5.构建表:

使用库名;

创建表的表名(字段列表);

删除表表名;

6.清除表中的记录:

从表名中删除;

7.在表中显示记录:

从表名中选择*;

第五项措施,导出和导入数据

1.导出数据:

mysqldump–opt测试\\ mysql.test

将数据库测试数据库导出到mysql.test文件,该文件是文本文件

例如:mysqldump-u root-p123456–databases dbname \ gt; mysql.dbname

它将数据库dbname导出到文件mysql.dbname。

2.导入数据:

mysqlimport-u根-p123456 \ lt; mysql.dbname。

无需解释。

3.将文本数据导入数据库:

标签数据用于分隔文本数据的字段数据。

使用测试;

加载数据本地文件\文件名”进入表表名;

1:使用SHOW语句找出服务器上当前存在的数据库:

mysql \ gt;显示数据库;

2:2,创建数据库MYSQLDATA

mysql \ gt;创建数据库MYSQLDATA;

3:选择您创建的数据库。

mysql>使用MYSQLDATA; (当出现Enter键时数据库已更改,指示操作成功!)

4:查看当前数据库中存在哪些表

mysql \ gt;显示表;

5:创建数据库表

mysql \ gt; CREATE TABLE MYTABLE(名称VARCHAR(20),性别CHAR(1));

6:显示表的结构:

mysql \ gt;描述表格

7:将记录添加到表中

mysql \ gt;插入MYTABLE值(\“hyq \”,\” M \”);

8:以文本模式(例如D:/mysql.txt)将数据加载到数据库表中

mysql \ gt; LOAD DATA LOCAL INFILE \ D:/mysql.txt\\u0026″进入表MYTABLE;

9:导入.sql文件命令(例如D:/mysql.sql)

mysql \ gt;使用数据库;

mysql \ gt;源d:/mysql.sql;

10:删除表格

mysql \ gt;放下TABLE MYTABLE;

11:清空表格

mysql \ gt;从MYTABLE删除;

12:更新表中的数据

mysql \ gt;更新MYTABLE设置性别=” f”其中name =” hyq”; 13:备份数据库mysqldump-u根库名\\ u> xxx.data14:

例2:将MYSQL连接到远程主机上。

假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。然后键入以下命令:

mysql-h110.110.110.110-uroot-pabcd123

(注意:u和root不需要添加空格,其他也一样)

3.退出MYSQL命令:退出\\ n。

MySql外键设置的详细说明

(1)使用外键:

外键有两个主要功能:

一种是让数据库本身使用外键来确保数据完整性和一致性

一是提高ER图的可读性。

有人认为,外键的建立会给开发过程中的数据库操作带来很大的麻烦。由于外键检测失败,数据库有时会导致开发人员删除和插入操作。他们认为这很麻烦。 br>

实际上,此正式外键迫使您确保数据的完整性和一致性。这是一件好事。 \ Nbsp;

例如:\

有一个基本数据表,用于记录商品的所有信息。所有其他表都存储产品ID。查询时,需要连接表以查询产品名称。文档1的商品表具有商品ID字段,文档2的商品表也具有商品ID字段。如果不使用外键,则当文档1和2都使用产品ID = 3的产品时,如果删除产品表中ID = 3的对应记录,则在检查文档1和文档2时将找不到产品。 2.名称。

当表很少时,有些人认为您可以编写脚本来确保程序实施时数据的完整性和一致性。即,在删除产品的操作中,检查文档1和2中是否使用了产品ID为3的产品。但是,在编写脚本之后,系统添加了文档3,他还保存了查找字段的产品ID。如果您不使用外键,您仍将无法找到产品名称。您不能总是返回并修改每次使用该脚本来检查是否使用该产品的脚本。产品ID的字段。同时,引入外键会降低速度和性能。

(2)添加外键的格式:

ALTER TABLE yourtablename \\ n

添加[CONSTRAINT外键名称] FOREIGN KEY [id](index_col_name,…)

参考tbl_name(index_col_name,…)

[在DELETE {CASCADE | SET NULL |没有行动| RESTRICT}]

[关于更新{CASCADE | SET NULL |没有行动| RESTRICT}]

说明:

on delete/on update,用于定义删除和更新操作。以下是更新和删除操作的各种约束类型:

级联:\

外键表中外键字段的值将被更新,或者该列将被删除。 \ Nbsp;

限制:\

RESTRICT也等同于不执行任何操作,即不执行任何操作。即,父表更新的外键关联列被拒绝,删除记录被拒绝。

设置为空:\

当父面的外键相关字段被更新和删除时,子表的外键列设置为null。 \ Nbsp;

对于插入,在子表的外键列中输入的值只能是父表的外键关联列的现有值。否则,将发生错误。

外键的定义受以下条件的约束:(前提条件)

1)

所有表都必须是InnoDB类型,不能是临时表。因为只有InnoDB类型的表在MySQL中支持外键。 \ Nbsp;

2)

必须使用外键创建的所有字段都必须建立索引。 \ Nbsp;

3)

对于非InnoDB表,FOREIGN KEY子句将被忽略。

注意:

创建外键时,在定义外键名称时不能添加引号。 \ Nbsp;

例如:约束” fk_1″或约束\ fk_1 \ quot;是错误的

(3)查看外键:

显示创建表***;您可以查看新创建的表及其存储引擎的代码。您还可以查看外键设置。 \ Nbsp;

删除外键:

更改表删除外键”外键名称”。

注意:

仅在定义外键时,才使用外键名称约束外键….来促进外键的删除。 \ Nbsp;

如果未定义,则可以:

首先输入:alter table drop外键->将提示错误。此时,错误消息将显示外键的系统默认外键名称。—

用它删除外键。

(4)例子

范例1:

4.1;

CREATE TABLE父级(ID INT NOT NULL,\\

主键(id)\\ n

)TYPE = INNODB;-type = innodb等效于engine = innodb

创建表子项(id INT,parent_id INT,\\

INDEX par_ind(parent_id),\

外键(parent_id)参考父(id)\

删除级联时\\ n

)TYPE = INNODB;

将数据插入父级后,将数据插入子级。插入时,child中的parent_id的值只能是parent中的数据,否则插入将失败。

当删除父记录时,子记录中的相应记录也将被删除;->因为:在删除级联时

更新父记录时,请勿更新;->由于未定义,因此默认情况下采用限制。 \ Nbsp;

4.2 \\ n

如果子项如下所示:

mysql \ gt;

创建表子项(id int不为null主键auto_increment,parent_id int,\\ ub26;

索引par_ind(parent_id),\\

约束fk_1外键(parent_id)引用

父级(id)在更新级联上(在删除限制下))

类型= innodb;

使用上面的命令:

1)。 \ Nbsp;

然后,当可以更新父记录时,子记录中的相应记录也将被更新;->因为:在更新时级联

2)。 \ Nbsp;

不能进行子表操作,影响父表。只有父表会影响子表。 \ Nbsp;

3)。 \ Nbsp;

删除外键:

alter table child drop外键fk_1;

添加外键:

alter table child添加约束fk_1外键(parent_id)引用

限制删除的更新的父级(id)设置为null;

(5)存在多个外键:

product_order表具有指向其他两个表的外键。

外键是指产品表中的两列索引。客户表中的另一个单行索引:

CREATE TABLE产品(类别INT NOT NULL,ID INT NOT NULL,\\

价格DECIMAL,\

主键(类别,ID))TYPE = INNODB;

创建表客户(ID INT NOT NULL,\\

主键(id))TYPE = INNODB;

创建表product_order(无INT NOT NULL AUTO_INCREMENT,\\

product_category INT NOT NULL,\

product_id INT NOT NULL,\\ ubsp;

customer_id INT NOT NULL,\\ ubsp;

主键(否),\

-双外键

INDEX(product_category,product_id),\

外键(product_category,product_id)\

参考产品(类别,ID)

关于删除限制的更新级联,\

-单个外键

INDEX(customer_id),\

外键(customer_id)

参考客户(id))TYPE = INNODB;

(6)说明:

1.如果不声明更新/删除,则默认方法为strict。 \ Nbsp;

2.对于外键约束,最好使用:ON UPDATE CASCADE ON DELETE RESTRICT。 \ Nbsp;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值