赞
踩
类型 | 说明 | 取值范围 | 存储需求 |
TINYINT | 非常小的数据 | 有符值:-2(7次方)~ 2(7次方)-1 无符号值:0 ~ 2(8次方)-1 | 1字节 |
SMALLINT | 较小的数据 | 有符值: -2(15次方) ~ 2(15次方)-1 无符号值: 0 ~ 2(16次方)-1 | 2字节 |
MEDIUMINT | 中等大小的数据 | 有符值: -2(23次方) ~ 2(23次方)-1 无符号值: 0 ~ 2(24次方)-1 | 3字节 |
INT | 标准整数 | 有符值: -2(31次方) ~ 2(31次方)-1 无符号值:0 ~ 2(32次方)-1 | 4字节 |
BIGINT | 较大的整数 | 有符值: -2(63次方)~2(63次方)-1 无符号值:0 ~2(64次方)-1 | 8字节 |
FLOAT | 单精度浮点数 | ±1.1754351e -38 | 4字节 |
DOUBLE | 双精度浮点数 | ±2.2250738585072014e -308 | 8字节 |
DECIMAL | 字符串形式的浮点数 | Decimal(M,D) | M+2个字节 |
UNSIGNED属性:标识为无符号数
ZEROFILL属性:宽度(位数)不足以0填充
例:
-
- CREATE DATABASE python7;
- SHOW DATABASES;
- USE python7;
- #创建一个名称为tb_type的表 这一列名称为为sid 存储数据类型为INT字节宽度为4 ZEROFILL:默认补齐不足指定位数用0填充如果超出则填写实际宽度
- CREATE TABLE `tb_type`(
- `sid` INT(4) ZEROFILL);
- #给tb_type 中添加内容
- INSERT INTO `tb_type`
- VALUE(12),(1234),(123456);
执行命令得
二、字符串、日期类型
字符串类型 | 说明 | 长度 |
CHAR[(M)] | 定长字符串 | M字节 |
VARCHAR[(M)] | 可变字符串 | 可变长度 |
TINY TEXT | 微型文本串 | 0~2(8次方)–1字节 |
TEXT | 文本串 | 0~2(16次方)–1字节 |
日期类型 | 格式 | 取值范围 |
DATE | YYYY-MM-DD 日期格式 | 1000-01-01~ 9999-12-31 |
DATE TIME | YY-MM-DD hh:mm:ss: | 1000-01-01 00:00:00 ~9999-12-31 23:59:59 |
TIME | hh:mm:ss | -835:59:59 ~ 838:59:59 |
TIMES TAMP | YYYYMMDDHHMMSS | 1970年某时刻~2038年某时刻,精度为1秒 |
TEAR | YYYY格式的年份 | 1901-2155 |
若某日期字段默认值为当前日期,一般设置为TIMESTAMP类型
约束是确保一个表数据的唯一性和完整性
主键是每行的唯一标识符,仅仅通过它就能准确定位到一行,其中主键列在整个表中不能有重复,必须包含唯一的值(不能为NULL)。
外键既能确保数据完整性,也能表现表之间的关系。添加了外键之后,插入引用表的记录要么必须被引用表中被引用列的某条记录匹配,要么外键列的值必须设置为NULL。
外键和主键不一样,每个表中的外键数目不限制唯一性。在每个表中,每一有-~253个外键。唯一的限制是一个列只能引用一个外键。一个列可以被多个外键引用。
如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性的。
无符号 | UNSIGNED | 无符号 |
非空约束 | NOT NULL | 字段不允许为空 |
默认约束 | DEFAULT | 赋予某字段默认值 |
唯一约束 | UNIQUE KEY(UK) | 设置字段的值是唯一的 允许为空,但只能有一个空值 |
主键约束 | PRIMARY KEY(PK) | 设置该字段为表的主键 可谓一表示该表记录 |
外键约束 | FOREIGN KEY(FK) | 用于在两表之间建立关系, 需要指定引用主表的哪一字段 |
自动增长 | AUTO_INCREMENT | 设置该列表自增字段 默认每条自增1 通常用于设置主键 |
语法:
CREATE TABLE [IF NOT EXISTS]表名(
字段1 数据类型[字段属性|约束][索引][注释],
...
字段n 数据类型[字段属性|约束][索引][注释]
)[表类型][表字符集][注释];
(注:多字段使用逗号隔开 保留字用撇号括起来 单行注释:#.... 多行注释/#....#/)
创建学生表
-
- CREATE TABLE `student`(
- `studentNo` INT(4) PRIMARY KEY,`name` CHAR(10),
- ...);
主键
-
- CREATE TABLE student (
- `studentNo` INT(4) PARIMARY KEY,
- ...);
注释
-
- CREATE TABLE text(
- `id` INT(11) UNSIGNED COMMENT'编号'#无符号
- )COMMENT='测试表';'
设置字符集编码
-
- CREATE TABLE[IF NOT EXISTS] 表名(
- #省略代码
- )CHARSET=字符集名;
例:
在python7数据中建一个学生表
代码如下:
-
- CREATE TABLE student(
- studentNo INT(4) NOT NULL PRIMARY KEY COMMENT'学号',
- loginPwd VARCHAR(20) NOT NULL COMMENT'密码',
- studentName VARCHAR(50) NOT NULL COMMENT'姓名',
- sex CHAR(2) NOT NULL DEFAULT'男' COMMENT'性别',
- gradeID INT(4) UNSIGNED COMMENT'年级编号',
- phone VARCHAR(50) COMMENT'电话',
- address VARCHAR(255) DEFAULT'地址不详' COMMENT'地址',
- bornDate DATETIME COMMENT'出生日期',
- email VARCHAR(50) COMMENT'邮件账号',
- identityCard VARCHAR(18) UNIQUE KEY COMMENT'身份证号'
- )COMMENT='学生表'
执行命令得
四、1.<1>查看表是否存在
-
- USE python7;
- SHOW tables;
执行命令得
<2>查看表定义
语法:DESCRIBE 表名; 或者DESC 表名;
-
- DESC student
执行命令得
(避免DOS窗口乱码,可执行SET NAMES jbk;)
2.删除表
语法: DROP TABLE[IF EXISTS] 表名;
-
- USE python7;
- DROP TABLE IF EXISTS `student`;#if语句可以不写 但是所删除内容必须存在读取的表中否则报错
3.修改表
<1>修改表名
语法:ALTER TABLE 旧表名 RENAME[TO] 新表名;
<2>添加字段
语法:ALTER TABLE 表名 ADD 字段名 数据类型 [属性];
<3>修改字段
语法:ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型[属性];
例:
-
- #修改表名
- ALTER TABLE student RENAME TO student1;
- #添加字段
- ALTER TABLE student1 ADD nikeName VARCHAR(30) NOT NULL;
- #修改字段
- ALTER TABLE student1 CHANGE nikeName haha INT(5);
执行命令得
<4>删除字段
语法:ALTER TABLE 表名 DROP 字段名
-
- #删除字段
- ALTER TABLE student1 DROP haha;
五、1.添加主键
语法:
ALTER TABLE 表名 ADD CONSTRAINT 主键名
PRIMARY KEY 表名(主键字段);
-
- CREATE TABLE grade(
- gradeID INT(4) UNSIGNED,
- gradeName VARCHAR (30) NOT NULL
- )
- ALTER TABLE grade ADD CONSTRAINT pk_gradeid
- PRIMARY KEY grade(gradeID)
执行命令得
2.添加外键
语法:
ALTER TABLE 表名 ADD CONSTRAINT 外键名
FOREIGN KEY (外键字段)
REFERENCES 关联表名(关联字段);
代码如下
-
- ALTER TABLE student1 ADD CONSTRAINT fk_gradeid
- FOREIGN KEY(gradeID)
- REFERENCES grade(gradeID)
执行命令得
3.删除外键
注:删除表时先删除子表再删除主表
删除不能只删除外键 否则还会存在,紧接着必须删除索引
-
- #删除外键 删除表时 先删除子表 再删除主表
- ALTER TABLE student3 DROP FOREIGN KEY fk_gradeid #删除不能只删除外键 否则还存在
- ALTER TABLE student3 DROP INDEX fk_gradeid#还必须删除索引
练习
需求说明
result表需要添加的内容
主键约束:学号、课程编号和日期构成组合主键
外键约束:主表student和从表result通过studentNo字段建立主外键关联
-
- CREATE TABLE result(
- studentNo INT(4) NOT NULL COMMENT'学号',
- subjectNo INT(4) NOT NULL COMMENT'课程编号',
- examDate DATETIME NOT NULL COMMENT'考试日期',
- studentResult INT(4) NOT NULL COMMENT'考试成绩'
- )
- #组合主键
- ALTER TABLE result ADD CONSTRAINT pk_st_su_date
- PRIMARY KEY result(studentNo,subjectNo,examDate)
- #外键约束
- ALTER TABLE student1 ADD CONSTRAINT fk_st_su_date
- FOREIGN KEY(studentNo)
- REFERENCES result(studentNo)
3.MySQL系统帮助
-
- HELP contents;
- HELP DATA TYPES;
- HELP INT;
在DOS命令之执行得
在student表和result表中添加一些学生信息
student表
result表
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。