Mysql学习之路03-列属性

来源:互联网 发布:淘宝旺铺专业版价格 编辑:程序博客网 时间:2024/06/14 10:57

列属性:数据类型的约束很单一,需要一些额外的约束,来保证数据的合法性
:NULL/NOT NULL ,default,primary key ,unique key,auto_increment,comment

空属性:    两个值:NULL和NOT NULL列描述:comment,描述,没有实际含义,是专门用来描述字段,会根据表创建语句保存:       来给数据管理员进行了解默认值:可以由用户选择性的使用默认值    默认值关键词:default     create table my_default(    name varchar(20) not null,    age tinyint unsigned default 0,    gender enum('男','女','保密') default '男'    )charset utf8;字段属性:    主键,唯一键和自增长        主键 :primary key ,主要的键,一张表只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复      一张表只能有最多一个主键    增加主键:        1,在创建表的时候,直接在字段之后,跟primary key 关键字,主键不允许为空        优点:非常直接;;缺点:只能使用一个字段作为主键        2,在创建表的时候,在所以的字段之后,使用primary key(主键字列表)来创建主键  (如果有多个字段作为主键,可以是复合主键)        3,当表已经创建好之后,再次额外追加主键:可以通过修改表字段属性,也可以直接追加        alter table 表名 add primary (字段列表)        alter table 表名 modify 字段 primary key;     主键对应的字段中的数据不允许重复:一旦重复,数据操作失败            更新主键&删除主键:主键必须先删除,才能更新        alter table 表名 drop primary key;    主键分类:        在实际创建表的过程中,很少使用真实业务数据作为主键字段(业务主键,如雪花,课程号),        大部分的时候是使用逻辑性的字段(字段没有业务含义,值是什么都没有关系),这种字段主键称之为逻辑主键     自动增长:当对应的字段,不给值,或者是NULL时,系统会从当前字段中已有的最大值在进行+1操作,得到一个新的字段    自增长通常是跟主键搭配    查看自增长对应的变量:show variables like 'auto_incremrnt%';    特点:auto_increment    1,任何一个字段要做自增长必须其本身是一个索引(key一栏有值)    2,自增长字段必须是数字(整型)    3,一张表最多只能有一个自增长    create table my_auto(    id int primary key auto_increment comment '自增长',    name varchar(10)    )charset utf8;    自增长使用:自增长默认第一个为1,每次加1,如果对应字段输入了值,那么自增长失效,但是下一次还是能够正确的自增长(即输入值+1)    修改自增长:        如果涉及到字段改变,必须先删除自增长,后增加        修改当前自增长已经存在的值:修改只能比当前已有的自增长的最大值,不能小        alter table 表名 auto_increment = 值;    删除自增长:        alter table 表名 modify 字段 类型;     唯一键:一张表中有许多字段需要唯一性,数据不能重复,但是一张表只能有一个主键,        唯一键(unique key)可以解决        增加唯一键:        1,在创建表的时候,字段之后直接跟unique,        2,在所有字段后增加unique key(字段列表) -- 复合唯一键        3,在表创建之后增加唯一键        删除唯一键:        alter table 表名 drop index 索引名字;---唯一键默认以字段名为索引         唯一键约束:与主键相同,唯一区别为唯一键允许为空,而且是多个为空
-- 创建表create table my_teacher(name varchar(20) not null comment  '姓名',money decimal(10,2) not null comment  '工资')charset utf8;-- 默认值create table my_default(name varchar(20) not null,age tinyint unsigned default 0,gender enum('男','女','保密') default '男')charset utf8;--插入数据insert into my_default (name) values ('Marr');insert into my_default values ('Arry',default,default);-- 增加主键create table my_pril(name varchar(20) not null comment '姓名',number char(10) primary key comment '学号:0000,不能重复' )charset utf8;-- 复合主键create table my_pri2(number char(10) comment '学号',course char(10) comment '课程代码',score tinyint unsigned default 60 comment '成绩',-- 增加主键限制:学号和课程号应该对应,具有唯一性primary key (number,course))charset utf8;-- 追加主键create table my_pri3(course char(10) not null comment '课程编号',name varchar(10) not null comment '课程名字')charset utf8;alter table my_pri3 modify course char(10) primary key;alter table my_pri3 add primary key(course) ;-- 删除主键alter table my_pri3 drop primary key;-- 自增长create table my_auto(id int primary key auto_increment comment '自增长',name varchar(10))charset utf8;-- 触发自增长insert into my_auto(name) values('Han');insert into my_auto values(null,'Mary');insert into my_auto values(default,'Grr');insert into my_auto values(6,'Sarry');insert into my_auto values(null,'Kaat');-- 修改自增长alter table my_auto  auto_increment = 8;-- 查看自增长变量show variables like 'auto_increment%';-- 删除自增长alter table my_auto modify id int;-- 唯一键create table my_unique1(number char(10) unique comment '学会:唯一键',name varchar(20) not null)charset utf8;------------create table my_unique2(number char(10) unique comment '学会:唯一键',name varchar(20) not null,unique key(number))charset utf8;------------ 追加唯一键create table my_unique3(id int primary key auto_increment,number char(10) not null,name varchar(20) not null )charset utf8;alter table my_unique3 add unique key (number);-- 删除唯一键alter table my_unique3 drop index number;