mysql 学习笔记 day03
2015-03-10 19:44
423 查看
/* 字符串类型 */ --------------------------------------------------------------------------------- -- char(M) 固定长度 -- 最大255个字符 -- varchar(M) 可变长度 -- 最大 65535 个字节 取决于当前编码 采用两个字节表示长度65533 -- 不定义 not null 的时候65532 ,一个字节用来保存 null, -- 定义的时候65533,不为空省去一个字节 -- 一条记录使用同一的字节表示null。不论多少个字段 -- text 大文本数据 65535 全部表示数据,不同于varchar tinytext mediumtext longtext create table s_1( a char(18), b varchar(18) ); create table s_2( a text, b text )character set latin1; -- enum 枚举类型 -- 2 个字节保存 create table s_3( gender enum('female', 'male') ); -- set 集合类型 -- 最多八个字节,表示64 个元素 create table s_9( hobby set('basket','football','pingpang') ); insert into s_9 values('basket,football'); -- binary 二进制类型 -----------------------------------列属性------------------------------------------- -- 是否为空 -- 规定一个字段的值是否可以是null -- null | not null -- default 值 create table php1( a int not null, b int not null default 32 ); insert into php1(a) values(10); -- ERROR 1364 (HY000): Field 'a' doesn't have a default value insert into php1(b) values(10); -- 主键,唯一索引 -- primary key primary key create table teacher( t_id int primary key, t_name varchar(5), class_name varchar(6), days tinyint unsigned ); insert into teacher values(1, '汉子', '0990', 2); insert into teacher values(2, '汉子汉子汉', '099044', 2); create table teacher2( t_id int auto_increment, t_name varchar(5), class_name varchar(6), days tinyint unsigned, primary key(t_id,t_name) -- 联合主键 ); insert into teacher2 values(null, '或', '的', 3); -- 自动增长 -- 设置自动增长从10开始 alter table teacher2 auto_increment 10 -- 可以手动插入该列的值,不能重复 -- 该列可以被更新,不能冲突 -------------------------------------外键----------------------------------------------- /* foreign key 一个实体的某个字段指向另一个实体的主键,就称为外键 被指向的实体被称为 主实体,或父实体。 负责指向的实体 为从实体,子实体 在从表上增加一个字段 指向主表的主键 comment '班级名称' 注释 */ ------------------------------------------------------------------------------------ create table class ( class_id int primary key auto_increment, class_name varchar(20) not null default '一班' comment '班级名称' ); create table student( stu_id int primary key auto_increment, stu_name varchar(20) not null default '刘瑞斌' , class_id int, foreign key(class_id) references class(class_id) ); insert into class(class_name) values('眼'); insert into student (stu_name, class_id) values('nf',1); insert into student (stu_name, class_id) values('nf',2); --------------------------------------------级联操作------------------------------------------ -- on update -- 只有主表的主键发生变化,从表才变化 on update restrict -- -- on delete on delete set null on delete cascade -- 修改外键定义-- 先删除在新建 alter table table_name drop foreign key 外键名; alter table table_name add foreign key 外键定义; alter table student drop foreign key student_ibfk_1; -- 删除时将从表的外键设置成null `student_ibfk_1` alter table student add foreign key(class_id) references class(class_id) on delete set null; -- 删除时一并删除从表 alter table student add foreign key(class_id) references class(class_id) on delete cascade; delete from class where class_id = 2; alter table student add foreign key(class_id) references class(class_id) on delete cascade on update restrict; update class set class_id=1;
相关文章推荐
- PHP学习笔记(4)----Mysql用户密码的修改[原创]
- PHP学习笔记(4)----Mysql用户密码的修改[原创]
- mysql学习笔记
- MySQL学习笔记(较全面的)
- mysql学习笔记
- MySQL学习笔记:InnoDB和MyISAM的差别
- JBoss-MySql学习笔记
- MySQL学习笔记(一)――关于MySQL 5
- MYSQL学习笔记(5)配置:使用选项文件
- mysql学习笔记(二) ----维护
- mysql学习笔记
- MYSQL的select 学习笔记
- Mysql学习笔记
- MYSQL学习笔记(1)
- MYSQL的select 学习笔记
- PHP学习笔记(2)----Mysql与PHP的整合[原创]
- Mysql学习笔记(1)
- MySQL学习笔记
- MYSQL学习笔记(3)COUNT函数
- MYSQL的select 学习笔记