字段属性:

主键,唯一键,自增长。

主键:

Primary key 主要的键,一张表只能有一个字段能使用对应的键,用来唯一约束该字段里面的数据不能重复,称之为主见。

一张表最多只有一个主键。

增加主键:

Sql操作当中有很多方式给表增加主键,大体上有三种

方案一:

创建表的时候,直接加在字段之后跟primary key

例:name varcahr(20) primary key;

方案二:

复合主键

方案三:

当表已经创建好之后,再次额外追加主键,通过修改表字段的属性,也可以直接追加

Alter table 表名 add primary key (字段列表) ;

前提是:字段名不重复;

主键约束:

主键定义的字段中不允许重复;一旦重复数据操作失败(改,增)

更改主键&删除主键

Alter table 表名 drop primary

主键分类:

在实际创建表的过程中,很少使用真业务数据作为主键字段(业务主键)

大部分使用逻辑性字段(字段没有业务含义)将这种字段称之为逻辑主键。

自动增长:

自增长:

定义字段给的是默认值,不给值为null,会自动被系统触发,系统会从以前字段已有的最大值进行+1操作得到行的不同的字段。

自增长通常与主键搭配

特点:

auto_increment

1,任何一个字段要做自增长必须前提是本身是一个索引(key一栏有值)

2,自增长字段必须死数字(int 整型)

3,一张表最多只有一个自增长。

例:ID int primary key auto_increment comment’自动增长’;

自增长得使用

当自增长被给定的值为null 或者默认值的时候会自动增长

自增长如果对应的字段输入了值,那么自增长失效

下一次还是能够正确的自增长(最大值+1)

修改自增长:

自增长如果涉及到字段改变,必须先删除自增长(一张表只能有一个自增长)。

修改当前自增长已经存在的值,修改只能比当前已有的自增长的最大值大,不能为null。

Alter table 表名 atuo_increment=值

思考?为什么自增长都是从一开始为什么每次都是自增长一呢

所有系统的实现(如字符集,校对集)都是由系统内部变量控制的,查看自增长对应的变量

Show variables like ‘auto_increment’;

可以修改变量实现不同的效果;修改是对整个数据而不是单张表(修改只是会话级)

Set auto_incretment_increment=值---自增值

删除自增长:

自增长是字段的属性,通过modify来进行修改(保证字段没有auto_increment)

Alter table 表名 modify 字段类型;

唯一键:

一张表往往有很多字段需要具有唯一性,数据不能重复;但是一张表只能有一个主键。唯一键(unque key)就可以解决表中有很多字段需要唯一性约束。

本质与主键一致,唯一键允许自动为空(空字段不参与唯一性比较)

增加唯一键(三种)

方案一:

在创建表的时候字段后直接跟unque/unque key

例:name char(10) unque;

方案二:

在所有字段之后自动增加unque key(字段列表)---复合唯一键

Unque key (name);

方案三:

在创建表之后增加唯一键

Alter table 表名 add unque key (字段);

唯一键约束

唯一键与主键本质相同,唯一键区别就是唯一键默认允许为空,而且是多个为空

更新唯一键和删除唯一键:

先删除后新增(唯一键可以有多个)

Alter table 表名 drop index 索引名字

索引:

几乎所有的索引都建立在字段之上。

索引:系统根据某种算法将已有的数据(未来可能增加的数据),单独建立一个文件,文件能够实现快速匹配数据并且能够快速地找到对应表中的记录

意义:

1,提升查询数据的效率

2,约束数据的有效性(唯一性等)

增加索引的前提条件:索引本身会产生索引文件(有时候可能比数据文件还大)会非常耗费磁盘空间

如果某个字段作为查询条件经常使用你们可以使用索引(一定会想办法增加)

Mysql中提供了多种索引:

1、主键索引

2、唯一索引

3、全文索引

4、普通索引

全文索引:

针对文章内部关键字进行索引,

全文索引最大的问题:在于如何确定关键字

英文很容易:英文单词与单词之间有空格,中文很难,没有空格,而中文可以多种随意组合(分词:spinx)

mysql学习之路_字段类型与属性2的更多相关文章

  1. mysql学习之路_字段类型与属性

    回顾 数据库基本知识:关系型数据库与非关系型数据库 关系型数据库:安全(磁盘) 非关系型数据库:高效(内存) 关系型数据库:建立在关系模型上的数据库, 数据结构:二维表(浪费空间) 数据库操作指令:s ...

  2. mysql学习之路_事物_存储过程_备份

    数据备份与还原 备份:将当前已有的数据保留. 还原:将已经保留的数据恢复到对应表中 为什么要做数据备份 1,防止数据丢失,被盗,误操作 2,保护数据记录 数据备份还原方式有多种:数据表备份 单表数据备 ...

  3. mysql学习之路_联合查询与子查询

    联合查询 联合查询:将多次查询(多条select语句)在记录上进行拼接(字段不会增加). 语法:多条select语句构成,每条select语句获取的字段必须严格一致(但是字段类型无关). Select ...

  4. mysql学习之路_外键

    回顾4 连接查询: 连接多张表到一起,不管记录数如何,字段数一定会增加. 分类:内连接,外连接.自然连接,交叉连接, 交叉连接:cross join (笛卡尔积) 内连接:inner join,左右两 ...

  5. mysql学习(四)-字段类型

    mysql数据类型: 数值型: 整形:int 浮点型:float double decimal:定点型 日期: date  '2012-01-02' time '10:01:01' datetime ...

  6. mysql学习之路_高级数据操作

    关系 将实体与实体的关系,反应到最终数据表的设计上来,将关系分为三种,一对多,多对多,多对多. 所有关系都是表与表之间的关系. 一对一: 一张表的一条记录一定只对应另外一张表的一条记录,反之亦然. 例 ...

  7. mysql学习之路_基础知识

                    Mysql php阶段将数据库分为三个阶 基础阶段: mysql数据库的基本操作(增删改查),以及一些高级操作(视图,触发器,函数,存储过程等),PHP操作没有sql数 ...

  8. mysql学习之路_视图

    视图 视图:view是一种有结构的但是没有结构来源的虚拟表,虚拟表的结构来源不是自己定义的而是从对应的基表中产生(来源) 创建视图 基本语法: Create view 视图名字 as select 语 ...

  9. mysql学习之路_连接查询

    回顾 列属性:主键,自增长,唯一键. 关系:一对一,一对多,多对多 三层范式: 1NF:字段设计必须符合原子性 2NF:不存在部分依赖(没有复合主键) 3NF:不存在传递依赖(实体单独成表) 逆规范化 ...

随机推荐

  1. Word打开时显示*模板*,删除模板

    XP系统, 找到目录 C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates 删除里面的模板文件即可

  2. mysql乐观锁总结和实践(一)

    最近学习了一下数据库的悲观锁和乐观锁,根据自己的理解和网上参考资料总结如下: 悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持 ...

  3. 点线特征双目视觉SLAM---暑期笔记

    1.由于以后可能研究有关基于特征方面的SLAM研究,所以近期看了一篇文章[基于点线综合特征的双目视觉SLAM方法--谢晓佳],由于之前对SLAM的模块比较模糊,所以认真阅读了此论文,并对主要的3个线程 ...

  4. C#中委托

    委托是一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似.与 C 中的函数指针不同,委托是面向对象的.类型安全的和保险的.一个委托类型是代表与特定参数列表和返回类型的方法的引用类型.实例 ...

  5. go语言使用go-sciter创建桌面应用(二) ui元素查找,增加,删除,修改

    我们可以通过go-sciter给我们提供的方法,方便的对html,css编写的UI界面进行增删改查. demo3.go代码如下: package main; import ( "github ...

  6. prototype.js的Ajax对IE8兼容问题解决方案

    你是否遇到过这样的问题?在使用protype.js的Ajax应用时,会出现这样的问题:只要调用了Ajax.Request,然后点该页面右键,查看“属性”就弹出“IE停止工作”的对话框,然后强制重新加载 ...

  7. python 数据类型 之 利用 dict 模仿 switch语句功能

    Python本身并不提供Switch的语法功能,为了能够解决类似switch分支需求的问题,我们可以使用字典代替实现. 解决思路: 利用字典取值的get方法的容错性,处理switch语句中的defau ...

  8. mysql 常用 sql

    查询表创建时间.修改时间等 SELECT * FROM information_schema.tables    WHERE table_schema='ty_supplier' AND table_ ...

  9. 26.mysql日志

    26.mysql日志mysql日志包括:错误日志.二进制日志.查询日志.慢查询日志. 26.1 错误日志错误日志记录了mysqld启动到停止之间发生的任何严重错误的相关信息.mysql故障时应首先查看 ...

  10. C# Contains 包含空字符串的问题

    一个基本的条件判断,之前没有遇到,这次遇到后,感觉真是这些年白写程序了. if(("1,2,3").Contains("")) { MessageBox.Sho ...