列属性

列属性又称之为字段属性,在mysql中一共有6个属性:null,默认值,列描述,主键,唯一键和自动增长

Null属性

NULL属性:代表字段为空

如果对应的值为YES表示该字段可以为NULL

注意:

1、 在设计表的时候,尽量不要让数据为空

2、 Mysql的记录长度为65535个字节,如果一个表中有字段允许为NULL,那么系统就会设计保留一个字节来存储NULL,最终有效存储长度为65534个字节。

默认值

Default:默认值,当字段被设计的时候,如果允许默认条件下,用户不进行数据的插入,那么就可以使用事先准备好的数据来填充:通常填充的是NULL

测试:不给当前字段提供数据值

Default关键字的另外一层使用:显示的告知字段使用默认值:在进行数据插入的时候,对字段值直接使用default

列描述

列描述:comment,是专门用于给开发人员进行维护的一个注释说明

基本语法:comment ‘字段描述’;

查看Comment:必须通过查看表创建语句

主键

顾名思义:主要的键,primary key,在一张表中,有且只有一个字段,里面的值具有唯一性

创建主键

随表创建

系统提供了两种增加主键的方式

1、 方案1:直接在需要当做主键的字段之后,增加primary key属性来确定主键

2、 方案2:在所有字段之后增加primary key选项:primary key(字段信息)

表后增加

基本语法:alter table 表名 add primary key(字段);

查看主键

方案1:查看表结构

方案2:查看表的创建语句

删除主键

基本语法:alter table 表名 drop primary key;

复合主键

案例:有一张学生选修课表:一个学生可以选修多个选修课,一个选修课也可以由多个学生来选:但是一个学生在一个选修课中只有一个成绩。

主键约束

主键一旦增加,那么对对应的字段有数据要求

1、 当前字段对应的数据不能为空;

2、 当前字段对应的数据不能有任何重复

主键分类

主键分类采用的是主键所对应的字段的业务意义分类

业务主键:主键所在的字段,具有业务意义(学生ID,课程ID)

逻辑主键:自然增长的整型(应用广泛)

自动增长

自动增长:auto_increment,当给定某个字段该属性之后,该列的数据在没有提供确定数据的时候,系统会根据之前已经存在的数据进行自动增加后,填充数据。

通常自动增长用于逻辑主键。

原理

自动增长的原理:

1、 在系统中有维护一组数据,用来保存当前使用了自动增长属性的字段,记住当前对应的数据值,再给定一个指定的步长

2、 当用户进行数据插入的时候,如果没有给定值,系统在原始值上再加上步长变成新的数据

3、 自动增长的触发:给定属性的字段没有提供值

4、 自动增长只适用于数值

使用自动增长

基本语法:在字段之后增加一个属性auto_increment

插入数据:触发自动增长,不能给定具体值

修改自动增长

1、 查看自增长:自增长一旦触发使用之后,会自动的在表选项中增加一个选项(一张表最多只能拥有一个自增长)

2、 表选项可以通过修改表结构来实现

Alter table 表名 auto_increment = 值;

删除自动增长

删除自增长:就是在字段属性之后不再保留auto_increment,当用户修改自增长所在字段时,如果没有看到auto_increment属性,系统会自动清除该自增长

初始设置

在系统中,有一组变量用来维护自增长的初始值和步长

Show variables like ‘auto_increment%’;

细节问题

1、 一张表只有一个自增长:自增长会上升到表选项中

2、 如果数据插入中没有触发自增长(给定了数据),那么自增长不会表现

3、 自增长修改的时候,值可以较大,但是不能比当前已有的自增长字段的值小

唯一键

唯一键:unique key,用来保证对应的字段中的数据唯一的。

主键也可以用来保证字段数据唯一性,但是一张表只有一个主键。

1、 唯一键在一张表中可以有多个。

2、 唯一键允许字段数据为NULL,NULL可以有多个(NULL不参与比较)

创建唯一键

创建唯一键与创建主键非常类似

1、 直接在表字段之后增加唯一键标识符:unique[ key]

2、 在所有的字段之后使用unique key(字段列表);

3、 在创建完表之后也可以增加唯一键
alter table 表名 add unique key(字段列表);

查看唯一键

唯一键是属性,可以通过查看表结构来实现

唯一键效果:在不为空的情况下,不允许重复

在查看表创建语句的时候,会看到与主键不同的一点:多出一个“名字”

删除唯一键

一个表中允许存在多个唯一键:假设命令为主键一样:alter table 表名 drop unique key;//错误的

Index关键字:索引,唯一键是索引一种(提升查询效率)

删除的基本语法:alter table 表名 drop index 唯一键名字;

修改唯一键:先删除后增加

复合唯一键

唯一键与主键一样可以使用多个字段来共同保证唯一性;

一般主键都是单一字段(逻辑主键),而其他需要唯一性的内容都是由唯一键来处理。

表关系

表关系:表与表之间(实体)有什么样的关系,每种关系应该如何设计表结构。

一对一

一对一:一张表中的一条记录与另外一张表中最多有一条明确的关系:通常,此设计方案保证两张表中使用同样的主键即可

学生表

学生ID(PRI)

姓名

年龄

性别

籍贯

婚否

住址

表的使用过程中:常用的信息会经常去查询,而不常用的信息会偶尔才会用到。

解决方案:将两张表拆分,常见的放一张表,不常见的放一张表

常用表

学生ID(PRI)

姓名

年龄

性别

不常用表

学生ID(PRI)

籍贯

婚否

住址

一对多

一对多,通常也叫作多对一的关系。通常一对多的关系设计的方案,在“多”关系的表中去维护一个字段,这个字段是“一”关系的主键。

母亲表

母亲ID

姓名

年龄

身高

M1

M2

孩子表

孩子ID

姓名

年龄

身高

母亲ID

K1

M1

K2

M1

多对多

多对多:一张表中的一条记录在另外一张表中可以匹配到多条记录,反过来也一样。

多对多的关系如果按照多对一的关系维护:就会出现一个字段中有多个其他表的主键,在访问的时候就会带来不便。

既然通过两张表自己增加字段解决不了问题,那么就通过第三张表来解决。

师生关系

1、 一个老师教过多个班级的学生;

2、 一个学生听过多个老师讲的课;

首先得有两个实体:老师表和学生表

从中间设计一张表:维护两张表对应的联系:每一种联系都包含

多对多解决方案;增加一个中间表,让中间表与对应的其他表形成两个多对一的关系:多对一的解决方案是在“多”表中增加“一”表对应的主键字段。

十、列属性、主键、自动增长、唯一键相关推荐

  1. MYSQL学习笔记06:列属性[NULL,default,comment],主键,自增长,唯一键,数据库设计规范[范式(1NF,2NF,3NF),逆规范化],表关系[1V1,1VN,NVN]

    列属性 列属性又称为字段属性. 在mysql中一共有6个属性:null,默认值,列描述,主键,唯一键和自增长. NULL属性 NULL属性代表字段为空. 如果对应的值为yes表示该字段允许为null, ...

  2. Mysql,SqlServer,Oracle主键自动增长的设置

    Mysql,SqlServer,Oracle主键自动增长的设置 参考文献 http://blog.csdn.net/andyelvis/article/details/2446865 1.把主键定义为 ...

  3. oracle主键自动增长

    oracle的主键没有自动怎样功能,小编今天给大家说说怎样设置主键自动增长: 1.创建表: create table tb_user ( id NUMBER(10) not null, createt ...

  4. mysql设置主键自动增长

    1.不设置主键的增长起点(默认1开始) create table user(usernc varchar(10) not null,id int not null auto_increment,nam ...

  5. sqlserver新增主键自增_深入Mysql,SqlServer,Oracle主键自动增长的设置详解

    1.把主键定义为自动增长标识符类型MySql在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: create table customers(id i ...

  6. 深入Mysql,SqlServer,Oracle主键自动增长的设置详解

    1.把主键定义为自动增长标识符类型 MySql 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: 复制代码 代码如下: create table c ...

  7. mysql sql 设置主键自动增长_Mysql、Sql Server、Oracle主键自动增长的设置

    1.把主键定义为自动增长标识符类型 MySql 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: create table customers(id ...

  8. mysql sql 设置主键自动增长_Mysql,SqlServer,Oracle主键自动增长的设置

    在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: CREATE TABLE google(id INT AUTO_INCREMENT PRIMARY ...

  9. access中主键自动增长_ACCESS与EXCEL融合应用系列(一) :把数据导入Access

    Excel无疑是我们手头最便利的报表汇总及数据分析利器,但由于微软对EXCEL定位的问题,当我们遇到大容量数据需要存储.处理和分析的时候,excel就显得力不从心了.这种情况下我们有两种选择:①加装P ...

  10. ibatis中主键自动增长(Oracle,Ms sql server ,mysql)

    http://morning2008.iteye.com/blog/611528 iBatis的sqlMap配置文件的selectKey元素有个type属性,可以指定pre或者post表示前生成(pr ...

最新文章

  1. git 创建分支并合并到master 上
  2. Java 程序员如何使用 Shiro 框架
  3. 细说双 11 直播背后的压测保障技术
  4. 【ArcGIS遇上Python】ArcGIS Python实现长时间序列遥感影像批量处理--以裁剪为例
  5. 【转】C#中相同不同程序集存在相同的命名空间的时候的冲突解决办法
  6. 机器学习--逻辑斯谛回归(Logistic Regression)
  7. 在vue中实现picker样式_基于vue的颜色选择器vue-color-picker
  8. vs2008 代码对齐方式
  9. L2-035 完全二叉树的层序遍历 (25 分)-PAT 团体程序设计天梯赛 GPLT
  10. spring.net与OracleODP结合时发生的版本问题
  11. java enable_Java Compiler enable()方法与示例
  12. 计算机组成原理 - x86 x64 arm64的区别 - 学习/实践
  13. Java、十六进制转二进制
  14. 前端|Ant Design介绍
  15. FLV格式文件如何转换成MP4格式
  16. 最简示例 简介洗牌函数 之 __shfl_up_sync() cuda 之 shuffle
  17. ClouderaManager介绍、CDH特点、ClouderaManager架构、ClouderaManager功能、Cloudera Management Service
  18. Oracle第十五章:视图
  19. 根据两点的经纬度求方位角和距离,等
  20. Vmware虚拟机三种网络模式详解

热门文章

  1. 数据库语言的分类 DQL、DML、DDL、DCL
  2. Salmon之Fragment Library Types
  3. qtp连接mysql数据库_QTP连接MYSQL数据库方法
  4. LeetCode 312. Burst Balloons(戳气球)
  5. B站2022保姆级Java进阶教程(一)Javaweb阶段
  6. 垃圾信息转场移动应用 打击应与时俱进
  7. #x开头的是什么编码呢。浏览器可以解释它。如#20013;#22269;等同与中文中国?...
  8. mfc textout输出字体设置
  9. ThinkPHP5篮球培训报名系统
  10. git rebase 和revert