欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1.2创建数据表

程序员文章站 2024-03-08 16:12:04
...

创建数据表

属于DDL 数据定义语言的一种

语法 :

create table [if not exists] `表名`(
    '字段名1' 列类型 [属性][索引][注释],
    '字段名2' 列类型 [属性][索引][注释],
    #...
    '字段名n' 列类型 [属性][索引][注释]
)[表类型][表字符集][注释];

说明 : 反引号用于区别MySQL保留字与普通字符而引入的 (键盘esc下面的键).

数据值和列类型

列类型 : 规定数据库中该列存放的数据类型

  1. 数值类型

  2. 字符串类型

  3. 日期和时间型

  4. 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`)
);

结果:
1.2创建数据表
MySQL的数据表的类型 : MyISAM , InnoDB , HEAP , BOB , CSV等…

常见的 MyISAM 与 InnoDB 类型

名称 MyISAM InnoDB
事务处理 不支持 支持
数据行锁定 不支持 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间大小 较小 较大,约2倍
  • 适用MyISAM : 节约空间及相应速度
  • 适用InnoDB : 安全性 , 事务处理及多用户操作数据表
相关标签: MySQL