目录
一、数值类型
1)整数类型
TINYINT类型:微小整型,一个字节,
SMALLINT:小整型,两个字节
MEDIAINT类型: 三个字节
INT类型:占用四个字节,保存范围+-21亿
BIGINT类型: 占用八个字节
2)浮点数类型
DOUBLE(M,N)
M是一个数字,表示数字的总位数
N是一个数字,表示小数位的位数
DOUBLE(7,2)可以保存一个七位数,其中2位是小数,整数5位
最大为99999.99
其中小数位如果多了会四舍五入,只会看小数位数的后一位,小数位可以不写
整数位超出会报错,如果四舍五入大于数字的总位数也会报错
CREATE DATABASE day02db CHARSET=UTF8; USE day02db; -- 整数类型:浮点型 CREATE TABLE person( id INT, name VARCHAR(20), salary DOUBLE(7,2) )CHARSET =UTF8; INSERT INTO person(id, name, salary) VALUES (1,'Tom',12345.67);//12345.67 INSERT INTO person(id, name, salary) VALUES (2,'Jack',12345.6745);//12345.67 INSERT INTO person(id, name, salary) VALUES (2,'Jack',12345.678);//12345.68 INSERT INTO person(id, name, salary) VALUES (3,'jerry',123456.78);//报错 INSERT INTO person(ID, NAME, SALARY) VALUES (4,'Lucy',99999.996);//报错 SELECT id,name,salary FROM person;
3)字符类型
定长字符串:
CHAR类型是定长字符串
CHAR(m):m是一个数字,表示长度,单位是字符。最大可取255
CHAR类型在磁盘中开辟的长度是固定的
优点:在磁盘中保存每条记录的长度是固定的,读取速度快
缺点:在磁盘中占用空间固定,不论实际保存多少数据,都要占够空间,磁盘空间浪费
变长字符串:
VARCHAR类型:
VARCHAR(m):m是一个数字,表示字符串的长度,最大值为65535
实际占用磁盘空间按照实际保存的数据而定
优点:磁盘空间占用取决于实际保存的数据,因此不造成磁盘空间浪费
缺点:由于数据长度不一致,会导致读取效率低
TEXT类型:
TEXT;
4)日期类型
格式固定
DATE:保存年月日“1987-10-16”
TIME:保存时分秒“10:10:10”
DATETIME:保存年月日时分秒“1987-10-16 10:10:10”
TIMESTAMP(时间戳):保存UTC时间,记录1970年到现在所经过的毫秒,默认当前时间
图片,视频,音频等在服务器上存储,在数据库中存储文件的路径
二、约束条件
2.1)主键约束 PRIMARY KEY
可以为表添加约束条件,可以限制对表的操作必须符合我们施加的约束条件,否则数据库会 拒绝该操作
1)主键约束:
主键约束要求该字段的值必须非空且唯一
主键约束一般会为表中第一个字段添加,并且通过该字段取名为“id”;
DROP TABLE userinfo;
CREATE TABLE userinfo(
id INT PRIMARY KEY ,
username VARCHAR(20),
password CHAR(32),
mobile CHAR(11),
balance DOUBLE(8,2),
created_time DATETIME
)CHARSET=UTF8;
DESC userinfo;
INSERT INTO userinfo(id) VALUES (1);
INSERT INTO userinfo(id) VALUES (1); //报错,被修饰的不能重复
INSERT INTO userinfo(id) VALUES (null); //报错,被修饰的不能为空
SELECT id FROM userinfo;
2)自增长
具有主键约束的字段通常主键的生成方式由系统完成,而自增就是其中一种方式
在创建表时为主键字段添加自增AUTO_INCREMENT
CREATE TABLE user2(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(30),
age INT(3)
)
当主键字段具有自增时,插入数据可以忽略主键字段
当主键字段具有自增时,可以显示的向主键中插入null值,但此时主键字段仍在使用自增
2.2非空约束(NOT NULL)
被非空约束施加的字段,该字段的值不能为null
示例
创建表时为字段添加非空约束
CREATE TABLE user3(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(30) NOT NULL, # name字段施加非空约束
age INT
)
插入数据时,不能向具有非空约束的字段中插入null值
2.3唯一性约束(UNIQUE)
具有唯一性约束的字段值不允许重复,但是可以为NULL
插入数据时,不可以将重复的值插入到具有唯一性约束的字段中
2.4检查约束(CHECK)
检查约束允许我们自定义约束条件,仅当满足我们指定的条件才可以进行操作
插入数据时,age字段的取值必须符合CHECK约束
CREATE TABLE user5(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(30),
age INT CHECK(age>0 AND age<120 ) # 要求age字段的值>0且<120,不符合就报错
);
2.5外键约束
外键约束是一种限制,通过对表的行或列的数据做出限制,来确保表的数据完成性、关联性
功能:建立表与表之间的某种约束的关系,由于这种关系的存在,能够让表与表之间的数 据,更加的完 整,关连性更强,为了具体说明创建如下部门表和人员表。
语法:CONSTRAINT 外键名称 FOREIGN KET(外键字段)
BEFERENCES 要关联的表(要关联的列)
-- 创建表时直接建立外键
CREATE TABLE emp
(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32) NOT NULL,
age INT,
salary DOUBLE(10, 2),
dept_id INT,
CONSTRAINT dept_fk FOREIGN KEY (dept_id) REFERENCES dept (id)
//添加一个名为
dept_fk
的外键约束,将dept_id
列与dept
表中的id
列建立关联。);
2.6级联动作
RESTRICT(默认) : ON DELETE RESTRICT ON UPDATE RESTRICT
当主表删除记录时,如果从表中有相关联记录则不允许主表删除
当主表更改主键字段值时,如果从表有相关记录则不允许更改
CASCADE:数据级联更新 ON DELETE CASCADE ON UPDATE CASCADE
当主表删除记录或更改被参照字段的值时,从表会级联更新
SET NULL : ON DELETE SET NULL ON UPDATE SET NULL
当主表删除记录时,从表外键字段值变为null
当主表更改主键字段值时,从表外键字段值变为null