1.2创建数据表
程序员文章站
2024-03-08 16:12:04
...
创建数据表
属于DDL 数据定义语言的一种
语法 :
create table [if not exists] `表名`(
'字段名1' 列类型 [属性][索引][注释],
'字段名2' 列类型 [属性][索引][注释],
#...
'字段名n' 列类型 [属性][索引][注释]
)[表类型][表字符集][注释];
说明 : 反引号用于区别MySQL保留字与普通字符而引入的 (键盘esc下面的键).
数据值和列类型
列类型 : 规定数据库中该列存放的数据类型
-
数值类型
-
字符串类型
-
日期和时间型
-
NULL值
- 理解为"没有值"或"未知值"
- 不要用NULL进行算术运算 , 结果仍为NULL
数据字段属性
UnSigned :
- 无符号的整数
- 声明该数据列不允许负数 .
ZEROFILL :
- 0填充的
- 不足位数的用0来填充 , 如int(3),5则为005
Auto_InCrement :
- 自动增长的 , 每添加一条数据 , 自动在上一个记录数上加 1(默认)
- 通常用于设置主键 index,必须为整数类型。
- 可定义起始值和步长
- 当前表设置步长(AUTO_INCREMENT=100) : 只影响当前表
- SET @@auto_increment_increment=5 ; 影响所有使用自增的表(全局)
NULL 和 NOT NULL :
- 默认为NULL , 即没有插入该列的数值
- 如果设置为NOT NULL , 则该列必须有值
DEFAULT :
- 默认的
- 用于设置默认值
- 例如,性别字段,默认为"男" , 否则为 “女” ; 若无指定该列的值 , 则默认值为"男"的值
/*创建数据表例子
1、创建一个名为School01的数据库。
1、创建一个学生信息表:学生id(自增,主键),姓名,年龄,性别,电话,籍贯,入学时间,所属班级id(外键)。
2、创建一个学生成绩表:成绩id(自增,主键),科目,成绩,学生id(外键),创建时间。
3、创建一个学生班级表:班级id(主键,自增),班级名称。
*/
#如果存在数据库School,则删除。否则创建数据库
DROP DATABASE IF EXISTS `School01`;
#创建数据库
CREATE DATABASE `School01`;
USE `School01`;
#如果存在数据表,则删除,否则创建
DROP TABLE IF EXISTS `tb_class`;
#创建一个学生班级表:班级id(主键,自增),班级名称。
CREATE TABLE `tb_class`
(
`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`Name` VARCHAR(32) NOT NULL
);
DROP TABLE IF EXISTS tb_student;
#创建一个学生信息表:学生id(自增,主键),姓名,年龄,性别,入学时间,所属班级id(外键)。
CREATE TABLE `tb_student`
(
`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`Name` VARCHAR(32) NOT NULL,
`Age` INT DEFAULT 0,CHECK(`Age`>0 AND `Age`<=100),
`gender` BOOLEAN DEFAULT 0,CHECK(`gender`=0 OR `gender`=1),
`date` DATETIME DEFAULT NOW()
);
#创建一个学生成绩表:成绩id(自增,主键),科目,成绩,学生id(外键),创建时间。
DROP TABLE IF EXISTS `tb_score`;
CREATE TABLE `tb_score`
(`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`course` VARCHAR(32) NOT NULL,
`Score` FLOAT(3,1) NOT NULL,
`stuId` INT(11) NOT NULL ,
CONSTRAINT `FK_Stuid` FOREIGN KEY(`stuId`) REFERENCES `tb_student`(`id`)
);
结果:
MySQL的数据表的类型 : MyISAM , InnoDB , HEAP , BOB , CSV等…
常见的 MyISAM 与 InnoDB 类型
名称 | MyISAM | InnoDB |
---|---|---|
事务处理 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约2倍 |
- 适用MyISAM : 节约空间及相应速度
- 适用InnoDB : 安全性 , 事务处理及多用户操作数据表
上一篇: java编写的简单移动方块小游戏代码