本帖最后由 小鲁哥哥 于 2017-6-14 10:37 编辑
【济南中心】PHP课程同步笔记day16:表定义语句 表定义语句 创建表: 基本形式: Create table [if not exists] 表名(列定义列表,[索引或约束列表])[表选项列表]; 说明: 1.上述列表都是指”多项并列项”,每一项之间用(,)分开 2.其中中括号部分是可以省略的 列定义: 每一个列定义的基本形式: 列名 列类型 [列属性列表] 说明: 1.列类型,就是数据类型,其中还可能会需要跟类型有关的相应设定。 2.列属性有6个,相互之间用空格隔开就可以: a) Auto_increment:表示自增长,用于整数类型。一旦设定了此属性,则也同时要求设定一个”key”属性,就是后面那2个:primary key或 unique key b) Primary key:表示主键,用于唯一确定一行的数据 c) Unique key :表示唯一键,用于设定某个字段的值在所有行中是唯一的(不可重复的) d) Not null :表示不能为空(非空属性) e) Default XX值:设定默认值,当该字段没有赋值或赋值为NULL时,自动获得该值 f) Comment ‘字段说明文字’:表示一种可以解释该字段含义,但又不属于”注释”的内容。 索引: 索引是一种数据库内部为了加快数据查找(搜索)速度的内部机制,其设定某个字段”有索引”,则该字段作为条件(比如where age=22)进行查找就会极大提高其速度。 索引设定形式: 通用形式:索引类别(字段名1,[字段名2],[字段名3]....);//至少一个字段 索引类别有: 普通索引:key [索引名](字段列表) 就只有索引的作用 唯一索引:unique key [索引名] (字段列表) 具有索引作用,而且具有唯一性 主键索引:primary key(字段列表) 具有索引作用,而且具有主键特性 外键索引:foreign key[索引名](字段列表) reference 其他表(对应字段列表) 具有索引作用,而且具有对应其他表的字段值的作用(外键作用) 全文索引:fulltext key [索引名](字段列表) 具有索引作用,但mysql对中文无法正常发挥作用 索引的弊端: 降低(减慢)增删改数据的效率(速度) 约束: 约束是指数据库中预先设定的对数据的”规定”,”要求”,”条件”等等 约束,是指在”建表”的时候,预先设定好的,以期对”后续写入数据”进行”检查”来决定是否满足设定的约束条件,结果有两种可能:满足写入成功,不满足写入失败。 有以下几种约束: 唯一约束 : unique key(字段列表) 主键约束 :primary key(字段列表) 外键约束 :foreign key(字段列表) references 其他表(对应字段列表) 非空约束 :not null 默认约束 :default XX值 检查约束 :check(某字段的条件) 说明: 1.前3个约束,其实同时也是索引,无需额外设定 2.非空约束和默认约束是”字段属性” ,无需额外设定 3.检查约束mysql不支持该功能。。。 表选项: 表选项是对一个表的额外属性的设定,多个设定之间用逗号(,)隔开 如下几个选项可设定: Auto_increment = 自增长数字的起始值 //可以不设定,默认为1 Charset = 字符编码名 //可以不设定,就是使用数据库级别的设定 Collate = 排序规则名 //可以不设定,使用数据库级别的设定 Comment = ‘表说明文字’ Engine = 存储引擎名 //可以不设定,默认是”InnoDB” 存储引擎 存储引擎其实就是将”成千上万”的数据,存入到硬盘(文件)的内部机制(方式). 不同的存储引擎在性能(速度),功能,资源消耗方面有所不同。 一个重要的观念:没有一个性能最好,功能最全,资源消耗最小的存储引擎。 主要存储引擎如下: 修改表: 总体思想: 1.修改表是一个表建立之后的补救工作,不应该当做一个”常规工作”. 2.建表能完成的事情,修改表几乎都能完成 3.语法: Alter table 表名 修改项1,修改项2.....; 其中,修改项可以包括: 字段:可以增删改 索引(约束):可以增删; 表选项:只能修改(从新设定) 删除表:
drop table 【if exists】 表名; 其他相关语句:
显示所有表: show tables; 显示某表的结构: desc 表名; 或:describe 表名; 显示某表的创建语句:show create table 表名; 重命名表:rename table 旧表名 to 新表名; 删除索引:drop index 索引名 on 表名。
|