1.创建库
CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
collate utf8_general_ci 校验规则:
ci:大小写不敏感
cs:大小写敏感
2.选择库
USE `dbname`;
3.创建表
性别(类型单一的字段)建议使用0/1存储
效率上,int类型比varchar要好
3.1创建父表
drop table if exists `class`
CREATE TABLE `class`(
`id` INT(1) PRIMARY KEY comment '班级编号'
) ENGINE =INNODB DEFAULT CHARSET=utf8 COMMENT '班级表';
ENGINE
INNODB
支持回滚、提交等事务
修改的性能较好
MYIASM
读取速度快
占用内存小
不支持事务管理
不容错,需要定期备份硬盘
3.2创建子表
CREATE TABLE `student` (
`id` INT(11) UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '学生编号(学号)' ,
`name` VARCHAR(64) UNIQUE COMMENT '学生姓名' ,
`sex` INT(1) NOT NULL DEFAULT 0 COMMENT '性别' ,
`birth` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP() COMMENT '出生日期' ,
`cid` INT(1) COMMENT '学生所在的班级编号' ,
CONSTRAINT `fk_student_cid` FOREIGN KEY (`cid`) REFERENCES `class`(`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT '学生表';
4.修改表结构
ALTER TABLE `student` CHANGE `sname` `name` VARCHAR(64);
ALTER TABLE `student` ADD `field` INT(2);
ALTER TABLE `student` DROP `field`;
ALTER TABLE `student` ADD CONSTRAINT `fk_student_cid` FOREIGN KEY (`cid`) REFERENCES `class`(`id`);
5.插入测试数据
INSERT INTO `student` values(default ,'name' ,1 ,default ,2);
SELECT * FROM `student` where...;
DESC `student`;
SHOW CREATE TABLE `student`;
SHOW TABLES;
UPDATE `student` set `field` =值 where ...;
DELETE FROM `student` where...;
6.可能遇到的问题
命名与关键字冲突
使用键盘中Tab键上面的反单引号`
使用MySQL官方提供的MySQL Command Line(命令行工具)时候
sql语句后使用;号
自增列(auto_increment)中,若被删除一行数据之后,后面添加的数据的自增列值将不再连续
这个问题手写函数可破
仅有字段类型为timestamp才可以接受时间函数作为默认键值
mysql不支持check()语句,但不报错
将逻辑判断放在java业务中或者手写函数可破
mysql字段的zerofill属性
缺位补0
mysql & oracle
mysql 大小写敏感 关键字(REFERENCES 、 CONSTRAINT )
oracle 不敏感 关键字(REFERENCE 、 CONSTRAINTS)