常用数据类型
数值
类型 大小 范围(有符号) 范围(无符号) TINYINT 1 Bytes (-128,127) (0,255) SMALLINT 2 Bytes (-32 768,32 767) (0,65 535) MEDIUMINT 3 Bytes (-8 388 608,8 388 607) (0,16 777 215) INT或INTEGER 4 Bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) BIGINT 8 Bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) FLOAT 4 Bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) DOUBLE 8 Bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 日期
类型 大小 ( bytes) 范围 格式 DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS YEAR 1 1901/2155 YYYY DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS TIMESTAMP 4 1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 字符串
CHAR 0-255 bytes 定长字符串 VARCHAR 0-65535 bytes 变长字符串 TINYBLOB 0-255 bytes 不超过 255 个字符的二进制字符串 TINYTEXT 0-255 bytes 短文本字符串 BLOB 0-65 535 bytes 二进制形式的长文本数据 TEXT 0-65 535 bytes 长文本数据 MEDIUMBLOB 0-16 777 215 bytes 二进制形式的中等长度文本数据 MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据 LONGBLOB 0-4 294 967 295 bytes 二进制形式的极大文本数据 LONGTEXT 0-4 294 967 295 bytes 极大文本数据
show databases; -- 查看所有的数据库
create database dataName; -- 创建数据库dataName
show tables; -- 查看数据库中所有的表
drop TABLE if EXISTS tableName; -- 当表存在时,删除表
-- 创建表
CREATE TABLE tableName(
id int,
other VARCHAR(20) NOT NULL
);
describe tableName; 查看表结构
select * from tableName; 查询表数据
-- 插入语句
insert into tableName
('id' ,'other')
values
('001','other');
-- 修改数据
update table tableName where id = '';
-- 删除数据
delete from table tableName where id = '';
-- 添加一列
ALTER TABLE tableName ADD icount INT;
-- 删除一列
ALTER TABLE tableName DROP icount;
-- 修改一列
ALTER TABLE tableName MODIFY other CHAR(10);
-- 主键约束
CREATE TABLE tableName(
id int PRIMARY KEY,
other VARCHAR(20) NOT NULL
);
-- 添加约束
alter table tableName add primary key (id);
-- 删除约束
alter table tableName drop primary key;
-- 联合主键id,name
CREATE TABLE tableName(
id int,
name VARCHAR(20),
other VARCHAR(20),
primary key(id,name)
);
-- 自增约束AUTO_INCREMENT
-- NOT NULL 非空约束
CREATE TABLE tableName(
id int PRIMARY KEY AUTO_INCREMENT,
other VARCHAR(20) NOT NULL
);
-- 外键约束
CREATE TABLE tableName(
id int PRIMARY KEY,
other VARCHAR(20)
);
CREATE TABLE tableName1(
id_foreign int,
remark VARCHAR(20),
foreign key (id_foreign) references tableName(id)
);
第一范式1NF
数据表中的所有字段都是不可分割 原子值
范式设计的越详细,对于某些实际操作更合适
字段值还可以继续拆分的,就不满足第一范式
例如:
地址字段(中国河北省沧州市运河区南陈屯街道)
应该被拆分成:国家(中国)、省份(河北省)、市(沧州市),区县(运河区)、镇等...
第二范式2NF
在满足第一范式的前提下,第二范式要求:除主键外,每一列都必须依赖于主键
-- 若某列不依赖于主键,则应该拆表
create table student{
student_id char(10) primary key,
student_name char(10),
subject_id char(10), --课程
subject_name char(10), --学科
score int --分数
}
-- 应该拆分成如下:
-- 学生表
create table student{
student_id char(10) primary key,
student_name char(10)
}
-- 课程表
create table subject{
subject_id char(10) primary key,
subject_name char(10)
}
-- 成绩表
create table score{
student_id char(10),
subject_id char(10),
score int, --分数
}
第三范式3NF
在满足第二范式的前提下,除主键外,其它列之间不能有传递依赖关系
create table student{
student_id char(10) primary key,
student_name char(10),
cityid char (10),
cityname char(10)
}
-- 因为cityname依赖于cityid,所以应该拆表
create table student{
student_id char(10) primary key,
student_name char(10),
cityid char (10)
}
create table city{
cityid char (10),
cityname char(10)
}
本文详细介绍了常见的数据类型,如数值、日期和字符串,以及它们的范围、格式和数据库表的设计原则,包括1NF、2NF和3NF范式。涵盖了创建表、添加约束、范式转换等内容,适合数据库管理员和开发者参考。

被折叠的 条评论
为什么被折叠?



