字段属性:
主键,唯一键,自增长。
主键:
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的更多相关文章
-
mysql学习之路_字段类型与属性
回顾 数据库基本知识:关系型数据库与非关系型数据库 关系型数据库:安全(磁盘) 非关系型数据库:高效(内存) 关系型数据库:建立在关系模型上的数据库, 数据结构:二维表(浪费空间) 数据库操作指令:s ...
-
mysql学习之路_事物_存储过程_备份
数据备份与还原 备份:将当前已有的数据保留. 还原:将已经保留的数据恢复到对应表中 为什么要做数据备份 1,防止数据丢失,被盗,误操作 2,保护数据记录 数据备份还原方式有多种:数据表备份 单表数据备 ...
-
mysql学习之路_联合查询与子查询
联合查询 联合查询:将多次查询(多条select语句)在记录上进行拼接(字段不会增加). 语法:多条select语句构成,每条select语句获取的字段必须严格一致(但是字段类型无关). Select ...
-
mysql学习之路_外键
回顾4 连接查询: 连接多张表到一起,不管记录数如何,字段数一定会增加. 分类:内连接,外连接.自然连接,交叉连接, 交叉连接:cross join (笛卡尔积) 内连接:inner join,左右两 ...
-
mysql学习(四)-字段类型
mysql数据类型: 数值型: 整形:int 浮点型:float double decimal:定点型 日期: date '2012-01-02' time '10:01:01' datetime ...
-
mysql学习之路_高级数据操作
关系 将实体与实体的关系,反应到最终数据表的设计上来,将关系分为三种,一对多,多对多,多对多. 所有关系都是表与表之间的关系. 一对一: 一张表的一条记录一定只对应另外一张表的一条记录,反之亦然. 例 ...
-
mysql学习之路_基础知识
Mysql php阶段将数据库分为三个阶 基础阶段: mysql数据库的基本操作(增删改查),以及一些高级操作(视图,触发器,函数,存储过程等),PHP操作没有sql数 ...
-
mysql学习之路_视图
视图 视图:view是一种有结构的但是没有结构来源的虚拟表,虚拟表的结构来源不是自己定义的而是从对应的基表中产生(来源) 创建视图 基本语法: Create view 视图名字 as select 语 ...
-
mysql学习之路_连接查询
回顾 列属性:主键,自增长,唯一键. 关系:一对一,一对多,多对多 三层范式: 1NF:字段设计必须符合原子性 2NF:不存在部分依赖(没有复合主键) 3NF:不存在传递依赖(实体单独成表) 逆规范化 ...
随机推荐
-
Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
-
sql语句优化SQL Server
MS SQL Server查询优化方法查询速度慢的原因很多,常见如下几种 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了 ...
- Putty 配图
-
(Hibernate进阶)Hibernate映射——多对一单向关联映射(四)
介绍基于基本映射的关联关系映射. 概念 基本映射是对一个实体进行映射,关联映射就是处理多个实体之间的关系,将关联关系映射到数据库中,所谓的关联关系在对象模型中有一个或多个引用. 分类 关联关系分为上述 ...
-
Bellman-Ford最短路径
对于前面说到的最短路径的求解方法,不能解决负权边的情况,而Bellman-Ford却可以 共有n个顶点,m条边,每次输入u[i],v[i],w[i],代表从u[i]到v[i]的距离是w[i],对于所有 ...
-
easyui+Spring MVC+hibernate = 乐途
这个东西,玩的差不多了;不浪费口水了, 直接上图 发到blog 上让大家看看. 布局各方面有没有不足的地方 .请多多指教 http://item.taobao.com/item.htm?spm=686 ...
-
Linux:crontab命令学习
一.crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动cro ...
-
自己实现的android树控件,android TreeView
1.开发原因 在项目中经常需要一个需要一个树状框架,这是非常常见的控件.不过可能是谷歌考虑到android是手机系统,界面宽度有限, 所以只提供了只有二级的ExpandableListView.虽然这 ...
-
SpringSecurity简单应用(二)
这里我首先对我上一篇博文的第三个实例做一下讲解,下面是applicationContext-security.xml内容如下: <?xml version="1.0" enc ...
-
POJ-1003&;1004
这两题比较简单,就不做分析了,描述下题目,就上代码吧. [题目描述] 1003,其实就是求这个方程的最小n:1/2 + 1/3 + 1/4 + ... + 1/(n + 1) >= c: 100 ...