博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL 表结构与键值
阅读量:4229 次
发布时间:2019-05-26

本文共 3637 字,大约阅读时间需要 12 分钟。

一、约束条件

null 允许为空,默认设置
not null 不允许为空
key 索引类型
default 设置默认值,缺省为null
            
+-----------------------------------------------------------------+
| Field |Type | NULL | KEY | Default | Extra             |
+-----------------------------------------------------------------+

二、表结构

语法:

alter table 表名 add(添加字段) modify(改字段类型) change(改字段名) drop(删除字段) rename(改表名);

1.添加字段
alter tanle 表名 add 字段名 类型(宽度) 约束条件 可加after(在字段后新增) 字段名 或first(在最前面新增字段);
2.修改字段类型
alter table 表名 modify 字段名 类型(宽度)约束条件 可加after 字段名 或first;
3.修改字段名
alter table 表名 change 源字段名 新字段名 类型(宽度)"加新类型和约束条件时,也可修改字段类型"   约束条件;
4.删除字段
alter table 表名 drop 字段名"表中有很多记录时,此字段的所有值都会被删除";
5.修改表名
alter table 表名 rename 新表名(表对应的文件名,也会改变);

 
三、键值

介绍

1.索引:对记录集的多个字段进行排序(排序后表记录不发生变化,会生成一个排序文件,排序表(目录)直接告诉直接去第几行找(节省资源不用每行找)),类型Btree,B+tree,hash
索引优点:唯一性索引,每一行数据的唯一性
缺点:当对表增删改时,索引也要动态的维护,降低数据维护速度,且占物理空间.

2.键值类型

index 普通索引

unique 唯一索引
fulltext 全文索引
primary key 主键
foreign key 外键

 

  • 2.1)Index普通索引

一个表可以多个index字段

字段值允许有重复,且可以赋null值
经常把做查询条件字段设置为index字段
index字段的key标志为MUL

mysql>create mysql.t3(

->id int primary key auto_increment,
->name char(10) not null,
->age int ,
->sex enum("boy","girl") default "boy",
->index(age),index(name) #可以多个INDEX
->);

mysql>desc mysql.t3;

+-------+--------------------+------+-----+---------+----------------+

| Field | Type               | Null | Key | Default | Extra          |
+-------+--------------------+------+-----+---------+----------------+
| id    | int(11)            | NO   | PRI | NULL    | auto_increment |
| name  | char(10)       | NO   | MUL | NULL    |                |
| age   | int(11)            | YES  | MUL | NULL    |                |
| sex   | enum('boy','girl') | YES  |     | boy     |                |
+-------+--------------------+------+-----+---------+----------------+

在已有表设置index字段:create index 索引名 on 表名(表段名);
删除指定表的索引字段:drop index 索引名 on 表名;
例:drop index name on mysql.t3;

查看表索引信息:show index from 表名\G;

  • 2.2)primary key主键

.插入限制:一个表只能一个primary key字段,对应字段不能重复且不能赋NULL值

.如多个字段作为primary key称为复合主键,必须一起创建。
.主键字段KEY标志为PRI
.通常与auto_increment(自动增长) 连用
.常用来记录编号字段(唯一标识记录的字段)

建表时指定

mysql>create table mysql.t5(
->id int auto_increment,
->name char(10),
->age int not null,
->primary key(id)
->);

mysql>desc mysql.t5;

在已有的表设置primary key值字段

alter table 表名 add primary key(字段名);

移除priamry key 字段(如有自增属性必须去掉)

alter table 表名 drop primary key;

mysql>alter table mysql.t5 modify id int not null;(重赋属性,没加自增=删除自增)

mysql>alter table mysql.t5 drop primary key;

 

  • 2.3)foreign key外键

.让当前表字段的值在另一个表中字段值的范围内选择

.条件:表引擎必须是InnoDB,字段类型要一致,被参照字段必须是索引类型的一种(priamry key)

foreign key(表A的字段名)  references 表B(字段名)

on update  cascade(同步更新) on delete cascade(同步删除);

 

删除外键字段

格式:alter table 表名 drop foreign key 约束名;

添加外键

mysql>alter table gz add foreign key(gz_id字段名) references yg表(yg_id字段名)   on update cascade on delete cascade;

mysql> create table yg(
->yg_id int primary auto_increment,
->name char(15),
->engine=innodb;
mysql>insert into yg(name) values("Bob");
多建几个方便测试

mysql>create table gz(

->gz_id int not null,
->gz float(7,2) default 20000,
->foreign key(gz_id) references yg(yg_id)
->on update cascade on delete cascade
->)engine=innodb;

mysql>update yg set yg_id=8 where yg_id=4;

mysql>insert into gz values(8,8000);
#gz_id要与yg_id一致且不能重复、空值

mysql>show create table gz\G
*************************** 1. row ***************************
       Table: gz
Create Table: CREATE TABLE `gz` (
  `gz_id` int(11) NOT NULL,
  `gz` float(7,2) DEFAULT '20000.00',
  PRIMARY KEY (`gz_id`),
  CONSTRAINT `gz_ibfk_1`(外键约束名称,删除时需要) FOREIGN KEY (`gz_id`) REFERENCES `yg` (`yg_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.01 sec)

mysql> alter table gz drop foreign key gz_ibfk_1;

空 键值 默认值 额外值
primary key 要符合使用规则(不能重复,不能NULL)
有自动增长性的字段作主键,不允许删除
foreign key (被参考字段必须是key值中的一种primary key)
被参考的表、表的字段不允许被删除
 

转载地址:http://nriqi.baihongyu.com/

你可能感兴趣的文章
CentOS6.4配置Hadoop-2.6.0集群配置安装指南(经过实战演练)【张振华.Jack】
查看>>
【屌丝程序的口才逆袭演讲稿50篇】第二篇:专注的力量 [张振华.Jack]
查看>>
BFS——求矩阵中“块”的个数
查看>>
BFS——走迷宫的最小步数
查看>>
并查集——好朋友
查看>>
关键路径
查看>>
Web前端学习笔记——JavaScript之事件详解
查看>>
Web前端学习笔记——JavaScript之事件、创建元素、节点操作
查看>>
Web前端学习笔记——JavaScript之正则表达式、伪数组、垃圾回收
查看>>
Web前端学习笔记——JavaScript 之继承、函数进阶
查看>>
Web前端学习笔记——JavaScript之面向对象游戏案例:贪吃蛇
查看>>
不做单元测试?小心得不偿失!嵌入式系统单元测试工具,自动生成测试用例
查看>>
一种实用的联网汽车无线攻击方法及车载安全协议
查看>>
光靠欺骗检测是不够的:对抗多目标跟踪的攻击
查看>>
基于微区块链的V2X地理动态入侵检测
查看>>
面向V2C场景的ADAS数字孪生模型构建方法
查看>>
Comma2k19数据集使用
查看>>
面向自动驾驶车辆验证的抽象仿真场景生成
查看>>
一种应用于GPS反欺骗的基于MLE的RAIM改进方法
查看>>
自动驾驶汽车GPS系统数字孪生建模(一)
查看>>