MySQL(9):数据表的约束(列的属性)
1.首先我们看一下这个图:
1、NULL| not NULL是否为空
规定一个字段的值是否为NULL
2、Default value 字段默认值属性
常见的是一个字段不能为空,而且存在默认值
create table php2(
a int not null default 10,
b int not null default 21
);
insert into php2(a) values(a); //a 默认是10
insert into php2(b) values(b);//b默认是21
3、primary key |unique key(关键字)
主索引 | 唯一索引
可以唯一标识,某条记录的字段或者是字段的集合,就是主键
主键可以是真实实体的属性
但是常用的好的解决方案:
利用一个与实体信息不相关的属性,作为唯一标识记录(如下图)、
设置主键的语法:primary key 完成
两种方案:
(1).字段上设置:
create table teacher(
t_id int primary key, //这里主键的类型为 int ,也就是说主键可以为正也可以为负
t_name varchar(5),
class_name varchar(6),
days tinyint unsigned
);
t_id 设置为主键之后,默认不能为null,
主键就是搜索的时候用到的关键字:
(2).在定义完了字段之后,可以定义为:
create table teacher1(
t_id int,
t_name varchar(5),
class_name varchar(6),
days tinyint unsigned,
primary key(t_id)
);
下面可以清楚地看到t_id 为 no null
也可以同时设置多个字段构成唯一主键(每个表:主键是唯一的),如下:
create table teacher2(
t_id int,
t_name varchar(5),
class_name varchar(6),
days tinyint unsigned,
primary key(t_id,class_name)// t_id 和 class_name 两个字段
);
4.自动增长
目的:为每条记录提供一个唯一的标示
每次插入记录时,将某个字段的值自动增加1;
使用auto_increment 标识
需要整型,还需要有索引…………
create table teacher3(
t_id int primary key auto_increment,
t_name varchar(5),
class_name varchar(6),
days tinyint unsigned
);
添加两条语句:
insert into teacher3 values(null, 'hebao', '0228', 34);
insert into teacher3 values(null, 'bufan, '0223', 45);
如下图:发现这个t_id 是唯一的 ,自动增长的
alter table teacher3 auto_inscrement 10;
insert into teacher3 values (null, 'fei', '0115', 32);
如果这时候我们再次:
alter table teacher3 auto_increment 5;
insert into teacher3 values(null, 'fly','0115', 98);
出现的结果是:你会发现新增加的 是以 11 为id索引的
当然主键也可以在初始化
insert into teacher3 values(5, 'flrt','0123', 56);
这个插入的元素是在'bufan'后面的
.
.
.
只要键值唯一不冲突,也是可以修改的,如下:
update teacher3 set t_id=21 where t_name='赵A' ;
MySQL(9):数据表的约束(列的属性)的更多相关文章
- 第二百七十七节,MySQL数据库-数据表、以及列的增删改查
MySQL数据库-数据表.以及列的增删改查 1.创建一个表 CREATE(创建) TABLE(表) ENGINE(引擎) ENGINE=INNODB(引擎)还有很多类引擎,这里只是简单的提一下INNO ...
- MySQL数据库-数据表、以及列的增删改查
1.创建一个表 CREATE(创建) TABLE(表) ENGINE(引擎) ENGINE=INNODB(引擎)还有很多类引擎,这里只是简单的提一下INNODB引擎,INNODB引擎支持事务(回滚), ...
- 备忘:MySQL中修改表中某列的数据类型、删除外键约束
-- MySQL中修改表中某列的数据类型 ALTER TABLE [COLUMN] 表名 MODIFY 列名 列定义; -- 删除外键约束 SHOW CREATE TABLE 表名; -- 复制CON ...
- MySQL中数据表的基本操纵
本文基于对国家863中部软件孵化器编著的<MySQL从入门到精通>一书的操作实践. 一.创建数据表 数据表属于数据库,在创建数据表之前,应该使用语句 USE 数据库名 指定操作是在那个 ...
- MySQL 创建数据表
MySQL 创建数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (col ...
- MySQL查询数据表中数据记录(包括多表查询)
MySQL查询数据表中数据记录(包括多表查询) 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: sele ...
- mysql(三) 数据表的基本操作操作
mysql(三) 数据表的基本操作操作 创建表,曾删改查,主键,外键,基本数据类型. 1. 创建表 create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGIN ...
- MySQL对数据表进行分组查询
MySQL对数据表进行分组查询(GROUP BY) GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组.字段中值相等的为一组.基本的语法格式如下: GROUP BY 属性名 [HAVI ...
- MySQL对数据表进行分组查询(GROUP BY)
MySQL对数据表进行分组查询(GROUP BY) GROUP BY关键字可以将查询结果按照某个字段或多个字段进行分组.字段中值相等的为一组.基本的语法格式如下: GROUP BY 属性名 [HAVI ...
- MySQL中数据表的查操作
查询数据表的全部内容 mysql> show tables;#查看当前数据库下的全部表 +--------------------+ | Tables_in_ceshi_ku | +------ ...
随机推荐
- e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回调
上一篇文章“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServ ...
- 问题:关于一个贴友的js留言板的实现
需求:用js做一个简单的留言板效果 html部分: 1: <!DOCTYPE> 2: <html lang="zh-en"> 3: <head> ...
- ubuntu修改主机名和出现问题
修改主机名方法,修改/etc/hostname即可,但是修改完成后,每次sudo都出现警告,警告解决方法如下: Linux 环境, 假设这台机器名字叫dev(机器的hostname), 每次执行sud ...
- jenkins api调用
在使用jenkins的时候,有时候需要其他外部调用,下面是调用方法,不定期更新 job调用 使用user和password: curl -X POST "jobPath/buildWithP ...
- HIbernate学习笔记(五) 关系映射之一对多与多对一
三. 多对一 –单向 场景:用户和组:从用户角度来,多个用户属于一个组(多对一 关联) 使用hibernate开发的思路:先建立对象模型(领域模型),把实体抽取出来. 目前两个实体:用户和 ...
- HDU1890 Robotic Sort Splay tree反转,删除
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1890 题目中涉及数的反转和删除操作,需要用Splay tree来实现.首先对数列排序,得到每个数在数列 ...
- linux产生静态库和动态库
如何构建一个库 静态库(.a) 静态库的建立和使用是非常简单的: 1. 编译源文件:gcc -Wall -c test1.c test2.c 2. 生成库文件:ar -cvq libtest.a 3. ...
- 转:并查集总结 例题:hdoj 1232 畅通工程
引述之类的就免了,我们现在做题碰到的并查集基础题目大都是连通城市(或者村庄学校),接下来我们就称每一个城市为一个元素.我们解决此类题目运用的是树结构,每个集合用一棵树表示,而树的节点用于存储集合中的元 ...
- 射频识别技术漫谈(11)——Mifare系列卡的共性【worldsing笔记】
Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mifare Pro.Mifare Desfi ...
- putty 连接ubuntu
1.安装ssh sudo apt-get install openssh-server 2.查看ssh服务是否启动 sudo ps -e |grep ssh 3.如果没有启动,输入" ...