乐山网站公众号建设,网站锚点链接怎么做,万脑网站建设,淘宝网pc首页文章目录1.创建表2.表创建基础3.表的主键4.使用null值5.使用AUTO_INCREMENT6.指定默认值7. 字段备注8.引擎类型9.外键1.创建表
表的创建一般有俩种方式#xff0c;一种是使用交互式创建和管理表的工具#xff0c;比如我们安装的MariaDB#xff0c;另一种是使用MySQL 语句进… 文章目录1.创建表2.表创建基础3.表的主键4.使用null值5.使用AUTO_INCREMENT6.指定默认值7. 字段备注8.引擎类型9.外键1.创建表
表的创建一般有俩种方式一种是使用交互式创建和管理表的工具比如我们安装的MariaDB另一种是使用MySQL 语句进行创建
在日常工作中涉及到表的新建或修改的语句都需要提供SQL脚本到生产环境进行批量的生效所以MySQL 语句的创建方式才是更多人选择使用的一种方式使用交互式创建和管理表的工具来进行创建是十分简单易学的但是因为每个工具都有自己的设计分隔所以这里不再进行介绍大家自行研究即可
2.表创建基础
创建表使用CREATE TABLE语句创建时必须在CREATE TABLE语句后给出新表的名字表列的名字和定义用逗号分隔
CREATE TABLE语句也可能包含其他关键字或选项但至少要包含表的名字和列的细节
语法: create table 表名(字段名称 字段类型(字段长度),字段2,字段3…)
如 create table tb_door(id int(11) not null,door_name varchar(100) not null,tel varchar(20) null);从上面的例子中可以看出表名紧跟在create table 关键字之后实际关于表的相关定义被包裹在圆括号之中各列之间使用逗号分隔
在MySql语句中其会忽略空格语句可以在一个长行上输入也可以分成许多行一般我们便于查看都会根据其字段将其分成多行进行使用
表中每个字段的定义都以列名开始列名在表中必须唯一后跟列的数据类型以及相关属性最后一个字段切记不加逗号否则MySql会认为你还有没有输入完成的下一列没有输入导致命令报错
在创建新表时要求在当前数据库中此表名是唯一的否则会报错如果要防止意外覆盖已经存在的表SQL要求首先手动删除该表然后再重新建它而不是简单的用创建语句覆盖。如果你只想在一个表不存在时创建它那么应该在表名后给出 if not exists这样做不会检查已经存在的表与你的表属性是否相同只会检查表名是否存在且在表明不存在时创建它如下方语句对上述创建表语句的优化
create table tb_door if not exists(id int(11) not null,door_name varchar(100) not null,tel varchar(20) null);3.表的主键
接下来我们改造tb_door 表
create table tb_door if not exists(id int(11) not null,door_name varchar(100) not null,tel varchar(20) null,PRIMARY KEY(id));这张表中表名为tb_door 紧跟在CREATE TABLE 后面实际的表定义都在括号内各列之间用逗号分隔列名在表中必须唯一列名后跟着列的数据类型及是否为空属性
表的主键可以在创建表时用PRIMARY KEY指定也可以在指定字段后直接跟PRIMARY KEY来表明这个字段为主键比如
create table tb_door if not exists(id int(11) PRIMARY KEY not null,door_name varchar(100) not null,tel varchar(20) null);这样也是可以的
在表中主键值必须唯一即表中的每个行必须具有唯一的主键值与之关联如果一张表中有多个主键字段那么多个字段的组合值必须保证唯一当然这种情况是比较少的
为创建由多个列组成的主键应该以逗号分隔的列表给出各列明如
create table tb_door if not exists(id int(11) not null,door_name varchar(100) not null,tel varchar(20) null,PRIMARY KEY(id,door_name));4.使用null值
null值就是没有值或者缺值允许null值的列也允许在插入行时不给出该列的值比如tb_door 表中除tel 外其他列都是不允许为null值的所以插入一个新的数据时你必须插入id与door_name 只有tel 可以不插入
为not null的字段在插入数据时必须提供其对应的值否则会插入失败在实际开发中要确认哪些字段是必须要有的而哪些字段不是必须的以此来控制插入数据的准确性
5.使用AUTO_INCREMENT
每张表只允许有一个AUTO_INCREMENT列其必须被索引索引将在后续介绍主键会自动加入索引
在表中我们每插入一行新的数据都必要要有一个与其他行不相同的主键我们可以使用AUTO_INCREMENT来实现其表明每一个新的行使用AUTO_INCREMENT的字段的值都在上一个此字段的基础上加1
例如我们插入的第一行数据cust_id 为1那么接下插入的第二行数据我们不必给定确定的值使用null插入也可以MySql会自动帮我们给定cust_id 值为2
这样当我们每增加一行数据时自动增量cust_id 的值便可以保证我们在业务中的cust_id 值唯一而不用担心上一个插入的值到底是多少导致cust_id 值重复插入失败
6.指定默认值
我们可以使用DEFAULT 来指定此字段的默认值
如door_name 字段我们指定了默认值为“葫芦娃”那么在插入数据时我们可以不输入door_name 字段的值MySql会自动帮我们给定door_name 的值为“葫芦娃”
7. 字段备注
我们可以使用comment 来给字段添加备注信息
复杂的表往往有几百个字段要记住这么多字段的具体含义是比较困难的我们可以在设计表时就给字段添加备注信息来表明此字段的具体含义这个备注信息只提供给开发人员查看无任何其他作用所以不必担心它会对你的表造成任何破坏如
CREATE TABLE customers( cust_id int PRIMARY KEY NOT NULL AUTO_INCREMENT comment 主键, cust_name char(50) NOT NULL comment 名字, cust_address char(50) NULL comment 地址, cust_city char(50) NULL comment 城市, cust_state char(5) NULL comment 省, cust_country char(50) NULL DEFAULT China comment 国家, cust_contact char(50) NULL comment 联系方式, cust_email char(255) NULL comment 电子邮箱, ) ENGINEInnoDB;8.引擎类型
每一个Sql语言其内部都有一个管理和处理数据的内部引擎MySql相比较其他sql语言有多个引擎所以在创建表时你可以指定使用哪个引擎也可以不指定当不指定时就会使用默认的引擎来创建
创建表语句结尾的ENGINEInnoDB就指定这张表使用InnoDB引擎来管理和处理数据 - InnoDB一个可靠的事物处理引擎不支持全文本搜索 - MEMORY功能等同于MyISam但是数据存储在磁盘中所以速度很快很适合创建临时表 - MyISam一个性能极高的引擎支持全文本搜索但不支持事物处理
在一个数据库中引擎类型是可以混用的比如表A你设置引擎类型为InnoDB表B你设置引擎类型为MyISam这是完全可以的但也有例外情况就是外键不能跨引擎
外键用于强制实施引用完整性所以不能跨引擎使用也就是说使用InnoDB引擎的表不能引用使用MyISam引擎表的外键
9.外键
外键是某张表中的一列其被包含在另外一张表中且是另外一张表的主键外键也是索引的一种是通过一张表中的一列指向另一张表中的主键来对两张表进行关联一张表可以有一个外键也可以存在多个外键与多张表进行关联
外键的主要作用是保证数据的一致性和完整性并且减少数据冗余。主要体现在以下两个方面 阻止执行 从表插入新行其外键值不是主表的主键值便阻止插入从表修改外键值新值不是主表的主键值便阻止修改主表删除行其主键值在从表里存在便阻止删除(要想删除必须先删除从表的相关行)主表修改主键值旧值在从表里存在便阻止修改(要想修改必须先删除从表的相关行) 级联执行 主表删除行连带从表的相关行一起删除主表修改主键值连带从表相关行的外键值一起修改
并且由于外键是关联外部表的所以一般为了避免创建外键时所关联的表及字段不存在一般在创建完成表之后使用修改表的语句增加外键在修改表的语句中使用foreign key 关键字来创建如
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键字段名)
REFERENCES 外表表名(主键字段名)其中外键名一般由字段名_表名_外表表名组成例如要给 表A 的 id1 字段创建外键关联 表B 的 id2 字段那么外键名一般设置为 id1_A_B