mysql的建表约束
主键约束(primary key)
主键约束能够唯一确定一张表中的记录,也就是可以通过某个字段添加约束,就可以是的该字段不重复,且不为空
create table user (id int primary key,name char,phone int(11));


联合主键(只要联合主键的值加起来不完全相同就可以添加成功)
create table user3 (id int,name char(3),phone char(11),primary key (id,name));


联合主键的表中,只要插入的数据的主键的值加起来不完全相同,就可以添加成功

自增约束(primarykey和auto_increment联合使用)


当创建表时没有添加主键约束怎么办?
可以使用alter语句来修改表的结构
语法:alter table 表名 add primary key (字段名);


同样可以应用alter语句来删除主键
语法:alter table 表名 drop primary key ;

通过修改字段的方式添加主键约束(modify)
语法:alter table 表名 modify 字段名 字段类型 primary;

外键约束(foreign key.......references)
涉及到两个表:父表(主表)、子表(副表)
特性:主表中没有的数据,在副表中不可以直接添加-可先在主表中添加相应记录,再往副表中添加记录
主表中的记录被副表引用,是不可以直接删除主表中的记录的-要先删除副表中的相应记录,再删除主表中的这条记录


唯一约束(unique)
约束创建的字段的值不可以重复
语法1:create table 表名 (字段1 字段数据类型,字段2 字段数据类型 unique);
语法2:create table 表名(字段1,字段数据类型,字段2 字段2数据类型,unique(字段1));

同时给多个字段添加唯一约束
插入的数据这些键组合在一起不重复就可以
语法:create table 表名(字段1,字段数据类型,字段2 字段2数据类型,unique(字段1,字段2));

删除唯一约束
语法:alter table 表名 drop index 字段名;

通过modify添加唯一约束
语法:alter table 表名 modify 字段名 字段数据类型 nique;

非空约束(not null)
修饰的字段不能为空(NULL)
语法1:create table 表名 (字段1 字段数据类型,字段2 字段数据类型 not null);

默认约束
就是当我们插入记录时,如果没有传值,就会使用默认值

mysql的建表约束的更多相关文章
- mysql建表约束
--mysql建表约束--主键约束它能够唯一确定一张表中的内容,也就是我们通过某个字段添加约束,就可以是的该字段唯一(不重复)且不为空.create table user( id int pr ...
- mysql workbench 建表时 PK,NN,UQ,BIN,UN,ZF,AI解释
mysql workbench 建表时 - PK: primary key (column is part of a pk) 主键 - NN: not null (column is nullable ...
- mysql怎样建表及mysql优化
1.符合数据库三范式 2.字段选择合适的数据类型 3.注意表之间的联系,一对多,多对多,一对一 4.拆分表,把不常用的字段单独成表. 5.建立索引,哪些字段建立索引?建立索引的原则?最左前缀原则,wh ...
- MySQL常见建表选项以约束
一.CREATE TABLE 选项 1.在定义列的时候,指定列选项 1)DEFAULT <literal>:定义列的默认值 当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认 ...
- MySQL 分区建索引
200 ? "200px" : this.width)!important;} --> 介绍 mysql分区后每个分区成了独立的文件,虽然从逻辑上还是一张表其实已经分成了多张 ...
- mysql数据库建表的基本规范
1.创建表的时候必须指定主键,并且主键建立后最好不要再有数据修改的需求 mysql从5.5版本开始默认使用innodb引擎,innodb表是聚簇索引表,也就是说数据通过主键聚集( 主键下存储该行的数据 ...
- MySQL常见建表选项及约束
阅读目录---MySQL常见的建表选项及约束: 1.create table选项 1.指定列选项:default.comment 2.指定表选项:engine.auto_increment.comme ...
- mysql分区表之三:MySQL分区建索引[转]
介绍 mysql分区后每个分区成了独立的文件,虽然从逻辑上还是一张表其实已经分成了多张独立的表,从“information_schema.INNODB_SYS_TABLES”系统表可以看到每个分区都存 ...
- Mysql查看建表语句以及修改引擎
更多内容推荐微信公众号,欢迎关注: 1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a.show table status from db_name wh ...
随机推荐
- poi之Excel上传
poi之Excel上传 @RequestMapping(value = "/import", method = RequestMethod.POST) public String ...
- Elasticsearch集群状态查看命令
_cat $ curl localhost:9200/_cat=^.^=/_cat/allocation/_cat/shards/_cat/shards/{index}/_cat/master/_ca ...
- 转:container_of分析 研究内核的博客
源地址:http://blog.csdn.net/tigerjibo/article/details/8299589 2012-12-15 19:23 1636人阅读 评论(2) 收藏 举报 目录 ...
- 14-MySQL-Ubuntu-数据表的查询-范围查询(三)
范围查询 1,不连续查询-in, not in 查询年龄是12,18,34的学生姓名和年龄信息 select name,age from students where age in (12,18,34 ...
- iOS开发系列-修改项目工程名
当前有项目工程名为iOS,需要修改工程名为IFLY.在修改前注意备份项目 修改项目名 出现弹框,点击Rename 修改工程目录文件名 注意Tests与UITests不要删除 选中IFLY.xcodep ...
- Centos7解压.tar.bz2提示tar (child): bzip2: Cannot exec: No such file or directory解决方法
Centos7解压.tar.bz2提示tar (child): bzip2: Cannot exec: No such file or directory解决方法 原因是因为该centos没有bzip ...
- Impala查询执行过程
- C++ 系列:交换两个数字
1. 创建中间变量 这是最快也是最简单的办法,例如: #include<stdio.h> int main(){ int a=10; int b=20; int temp; printf( ...
- ETL工具-Kattle:初识kattle
ETL是EXTRACT(抽取).TRANSFORM(转换).LOAD(加载)的简称,实现数据从多个异构数据源加载到数据库或其他目标地址,是数据仓库建设和维护中的重要一环也是工作量较大的一块.当前知道的 ...
- IDEA引入jar但无法导入class
如图,jar已经导入,但是无法import class 选择setting->maven->Ignored Files,将被忽略的model取消选中就可以解决了