MySQL简单使用

常用数据类型

数值

类型大小范围(有符号)范围(无符号)
TINYINT1 Bytes(-128,127)(0,255)
SMALLINT2 Bytes(-32 768,32 767)(0,65 535)
MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)
INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)
BIGINT8 Bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)
FLOAT4 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)
DOUBLE8 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)范围格式
DATE31000-01-01/9999-12-31YYYY-MM-DD
TIME3'-838:59:59'/'838:59:59'HH:MM:SS
YEAR11901/2155YYYY
DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS
TIMESTAMP41970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07YYYYMMDD HHMMSS

字符串

CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-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)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值