MySQL数据管理

1. 主键与外键

1.1 创建主键

关系型数据库中的一条记录有若干个字段(列/属性),若其中某个字段/字段组能够唯一标识一条记录,该字段组就可以成为一个主键,一般情况下主键不具备任何含义,只是用于标识当前记录。

除了在创建表时指定主键外,我们可通过修改表的方式来添加主键,具体如下;

ALTER TABLE 表名 ADD CONSTRAINT 主键名
PRIMARY KEY (主键字段);

在这里插入图片描述

1.2 创建外键

外键用于与另一张表的关联,是能够确定另一张表记录的字段,用于保持数据的一致性。外键的特点:从表外键的值时对主表外键的引用,以表外键类型,必须与主表主键类型一致。

ALTER BABLE 从表 ADD CONSTRAINT 外键名称
FOREIGN KEY 从表外键字段名
REFERENCES 主表的外键
[外键名称] 用于删除外键约束,建议 _fk 结尾

在添加外键时可能会出现如err(150)等错误,可能的原因有:

  1. 外键的引用类型不一样,另一张表的主键时int,而本张表中对应的外键时char等类型。
  2. 找不到主表中引用的列。
  3. 主键和外键的字符编码不一致
  4. 两张表存储引擎不一样。(MyISAM储存引擎不支持外键)

在MySQL中创建外键时经常会遇到问题而失败,这是因为MySQL中还有狠多细节需要留意

  1. 两个字段的类型或者大小不严格匹配。例如,如果一个时int(10),那么外键也必须设置成int(10),另外还必须确定是否为一个signed,而另一个又是unsigned(即:无符号),这两字段必须严格地一致匹配。
  2. 试图设置外键的字段没有建立起索引,或者不是一个primary key。 如果其中一个不是primary key的话,你必须先为它创建一个索引。
  3. 其中一个或者两个表是MyISAM引擎的表。若想要使用外键约束,表必须是innoDB引擎。
  4. 外键的名字不能重复,应该检查数据库以确保外键名字是唯一的。
  5. 确定Charset和Clooate选项在表级和字段上的一致。
  6. 可能设置了一个默认值

1.3 外键的使用

在设置好外键以后,我们会发现对应的所设置了外键的表即从表,它的此外键字段取值必须满足一张表(主表)的实际值情况,否则无法储存。

主表:在数据库中建立的表格即Table,其中存在主键(primary key) 用于与其他表想关联,并且作为在主表中的唯一性标识。
从表:以主表的主键(primary key)值为外键(Foreign Key)的表,可以通过外键与主表进行关联查奥逊。

2. DML语句操作数据

2.1 插入数据

插入单条数据

插入数据时类型一定要保持一致。另外除了数值型数据类型,其他类型一定要添加单引号,如果不添加字段名列表,那么必须按照创建表时字段顺序依次进行插入。如果只是想插入表中的部分数据,字段名列表一定要加上。

INSERT INTO 表名 (字段名列表)VALUES(值列表);
  • 字段名是可选的,如省略则一次插入所有字段
  • 多个列表和多个值之间使用逗号分隔
  • 值列表和字段名列表一 一对应
  • 如插入的是表中部分数据,字段名列表必填
插入多条数据
INSERT INTO 新表(字段名列表)VALUES (值列表1),(值列表2),(值列表n);
将查询结果插入新表

插入数据只是将数据传递,如果插入到新表,部分约束会传递,但是主键约束和自增不会传递,查询多少字段就在新表中开辟多少字段,如果未*表示全字段。

CREATE TABLE 新表 (SELECT 字段1,字段2...... FROM 原表);

如果不想创建新表,想将数据查询插入到已存在的表,使用第二种方法/

INSERT INTO 目的表(字段列表)查询语句

2.2 修改数据

DDL语句中删除数据库和数据表的关键是DROP。这里DML语句中的删除表中数据是DELETE。还有另一种删除表数据语句未TRUNCATE 语句,它删除后将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比DELETE快。但DELETE 不会重置自增序列

UPDATE 表名
SET 字段1 = 值1,字段2 = 值2,....,字段n=值n
WHERE 条件;

2.3 删除数据

DELETE FROM 表名 WHERE 条件;
TRUNCATE TABLE 表名;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值