作者:卝軎亟_621 | 来源:互联网 | 2020-07-27 02:13
本文主要和大家分享mysql数据表操作实例详解,希望能帮助到大家,首先我们先来看一下如何创建数据表。
创建表
create table 【if not exists】 表名 (字段列表 【,索引或约束列表】) 【表选项列表】;
字段名 类型 【字段属性1 字段属性2 …..】
说明:
1. 字段名可以自己取;
2. 类型就是前面所学的数据类型:int, tinyint, float, double, char(6), varchar(25), text, datetime。
3. 字段属性可以有多个(根据具体的需要),相互之间直接空格隔开;主要如下几个:
属性名称 | 含义 |
---|
auto_increment: | 只用于整数类型,让该字段的值自动获得一个增长值。通常用于做一个表的第一个字段的设定,并且通常还当做主键(primary key) |
primary key: | 用于设定该字段为主键,此时该字段的值就可以“唯一确定”一行数据 |
unique key: | 设定该字段是“唯一的”,也就是不重复的。 |
not null: | 用于设定该字段不能为空(null),如果没有设定,则默认是可为空的。 |
comment : | 字段说明文字 |
索引
形式为:
索引类型(要建立索引的字段名)
索引类型 | 形式 | 含义 |
---|
普通索引 | key(字段名) | 就是一个索引而已,没有其他作用,只能加快查找速度 |
唯一索引 | unique key(字段名) | 是一个索引,而且还可以设定其字段的值不能重复(唯一性) |
主键索引 | primary key (字段名) | 是一个索引,而且,还具有区分该表中的任何一行数据的作用(其实也是唯一性),它其实比唯一性索引多一点功能:唯一性可以为空null,而主键不能为空 |
全文索引 | fulltext (字段名) |
|
外键索引 | foreign key (字段名) | references 其他表(对应其他表中的字段名) |
索引创建语法:
候选键或候选键:如果一个表中具有能够唯一标识的一个行的属性,则称为候选键,候选键中任选一个为主键。
MySQL中的全文检索是利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度。
二、语法
MATCH (col1,col2,...) AGAINST (expr [search_modifier])
search_modifier: { IN BOOLEAN MODE | WITH QUERY EXPANSION }
例如:SELECT * FROM tab_name WHERE MATCH (col1,col2) AGAINST (search_word);
这里的table需要是MyISAM类型的表,col1、col2需要是char、varchar或text类型,在查询之前需要在col1和col2上建立一个全文索引。
约束
约束,就是要求数据需要满足什么条件的一种“规定”。
约束类型 | 形式 | 含义 |
---|
主键约束 | primary key ( 字段名) | 使该设定字段的值可以用于“唯一确定一行数据”,其实就是“主键”的意思。 |
唯一约束 | unique key ( 字段名) | 使该设定字段的值具有“唯一性”,自然也是可区分的。 |
外键约束 | foreign key ( 字段名) references 其他表名(对应其他表中的字段名) | 使该设定字段的值,必须在其谁定的对应表中的对应字段中已经有该值了。 |
非空约束 | not null | 其实就是设定一个字段时写的那个“not null”属性。这个约束只能写在字段属性上 |
默认约束 | default XX值 | 其实就是设定一个字段时写的那个“default 默认值”属性,这个约束只能写在字段属性上。 |
检查约束 | check(某种判断语句) |
|
比如:
create table tab1 (
age tinyint,check (age>=0 and age <100) /*这就是检查约束*/
)#目前相关版本还不支持,就是说只分析,但会被忽略。
其实,主键约束,唯一约束,外键约束,只是“同一件事情的2个不同角度的说法”,他们同时也称为“主键索引”,“唯一索引”,“外键索引”。
表选项列表
表选项就是,创建一个表的时候,对该表的整体设定,主要有如下几个:
1、 charset = 要使用的字符编码,
2、 engine = 要使用的存储引擎(也叫表类型),
3、auto_increment = 设定当前表的自增长字段的初始值,默认是1
4、comment =‘该表的一些说明文字’
说明:
1,设定的字符编码是为了跟数据库设定的不一样。如果一样,就不需要设定了:因为其会自动使用数据库级别的设定;
2,engine(存储引擎)在代码层面,就是一个名词:InnoDB, MyIsam, BDB, archive, Memory。默认是InnoDB。
存储引擎
存储引擎是将数据存储到硬盘的“机制”。
不同的存储引擎,其实主要是从2个大的层面来设计存储机制:
选择不同的存储引擎,就是上述性能和功能的“权衡”。
大体如下: