文章目录
- 一. 数据库常用的数据类型
- 1. 数字类型
- 1.1 整数类型:INT(m)和BIGINT(m)
- 1.2 浮点类型:DOUBLE(m,n)
- 2. 字符类型
- 2.1 定长字符:CHAR(n)
- 2.2 变长字符:VARCHAR(n)
- 2.3 变长字符:TEXT(n)
- 3. 日期类型
- 3.1 语法格式:
- 3.2 注意事项
- 二. 约束条件
- 1.主键约束(PRIMARY KEY)
- 1.1 注意事项
- 1.2 主键自增AUTO_INCREMENT
- 2. 非空约束(NOT NULL)
- 数据库相关文章链接
一. 数据库常用的数据类型
不同的数据库数据类型不完全一致
1. 数字类型
1.1 整数类型:INT(m)和BIGINT(m)
- m:整数的位数
- int(5):最大保存一个5位整数。
- 若保存的数字为18,实际存的时候前面会补0:00018
1.2 浮点类型:DOUBLE(m,n)
-
m:数字的位数
-
n:小数部分的位数
-
m包含n
-
DOUBLE(5,3):该数字总共5位,其中有3位小数(意味着整数位2位)。
最大个保存的数字为:99.999
-
当保存的数字精度超过可保存精度时,会进行4舍5入
例如person表中salary字段的类型:DOUBLE(7,4)
INSERT INTO person (salary) VALUES(553.12568)
实际salary保存的数字为:553.1257
- 当最大值需要进行四舍五入时,此时会报错:值超出了范围
-
2. 字符类型
2.1 定长字符:CHAR(n)
-
n表示长度,单位是字符。
-
name CHAR(10):name可以保存10个字符
-
最大值为255个字符
-
表中该字段保存数据时,实际在磁盘中保存数据一定是指定长度的字符。当实际保存的字符不足时会补充空格来达到长度。
例如:name插入数据时为’张三’。那么实际存储时后面还有8个空格要占够10个字符。
-
优点:每条记录占用的字节长度是固定的,这对于数据库扫描磁盘查询数据时效率高。
-
缺点:浪费磁盘空间
2.2 变长字符:VARCHAR(n)
-
n表示长度,单位时字节。
-
最大值为65535个字节
-
表中该字段保存数据时,实际在磁盘中保存数据用多少占多少字节。
例如:name VARCHAR(30)
插入数据时name为’张三’,实际存储时磁盘中仅6个字节。
-
优点:不浪费磁盘空间
-
缺点:查询速度慢
2.3 变长字符:TEXT(n)
- n表示长度,单位是字符
- 最大值为65535
3. 日期类型
- DATE:仅保存年月日
- TIME:时分秒
- DATETIME:保存年月日时分秒
- TIMESTAMP:时间戳,记录UTC时间。自1970-01-01 00:00:00到表达的时间所经过的毫秒
例
-
准备一张表测试各种类型
CREATE TABLE userinfo( id INT, username VARCHAR(30), gender CHAR(1), birth DATETIME, salary DOUBLE(7,2) )
3.1 语法格式:
- 插入日期时,可以以字符串形式插入,格式为:“yyyy-MM-dd hh:mm:ss”
MM表示两位数字的月,mm表示两位数字的分
INSERT INTO userinfo(id,username,gender,birth,salary)
VALUES (1,'张三','男','2001-02-03 12:22:55',5000.99)
3.2 注意事项
-
插入日期时,如果类型为DATETIME,插入字符串中可以不指定时分秒
INSERT INTO userinfo(id,username,gender,birth,salary) VALUES (2,'李四','女','1998-08-24',6000) 此时时分秒都为0
-
DATETIME类型插入数据时不能忽略年月日
INSERT INTO userinfo(id,username,gender,birth,salary) VALUES (3,'王五','男','12:15:32',5000) 会报错,DATETIME字段不能只插入时分秒
-
插入DOUBLE值时精度超过部分会四舍五入,整数部分若超过长度则会报错
INSERT INTO userinfo(id,username,gender,birth,salary) VALUES (3,'王五','男','1985-06-01 12:15:32',100000)
二. 约束条件
可以对表添加约束条件,这样一来仅当满足约束条件的操作才可以进行。这样做可以更好的为我们的业务服务,保证数据库的操作是服务业务要求的。
1.主键约束(PRIMARY KEY)
- 主键的特点:非空且唯一。
- 符合该特点的值才可以用来标识表中唯一的一条记录。
- 通常一张表中的第一个字段都是主键字段,名字通常选取为:id
- 主键约束一张表只能为一个字段添加
例
CREATE TABLE user1(
id INT PRIMARY KEY,
name VARCHAR(30),
age INT(3)
);
INSERT INTO user1(id,name,age) VALUES (1,'张三',22)
INSERT INTO user1(id,name,age) VALUES (2,'李四',33)
1.1 注意事项
- 主键字段不能插入重复的值
- 主键字段不能插入NULL值
- 不能修改重复的值
- 不能修改为NULL
1.2 主键自增AUTO_INCREMENT
具体主键约束的字段通常会配合自增(AUTO_INCREMENT)使用 —id自增
-
将字段定义为主键约束时,同时指定:AUTO_INCREMENT
CREATE TABLE user2( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(30), age INT(3) ); 也可以修改现有的表字段 ALTER TABLE user1 CHANGE id id INT PRIMARY KEY AUTO_INCREMENT
-
当主键字段具有自增功能时,插入数据则可以忽略主键字段的插入
INSERT INTO user2 (name,age) VALUES('张三',22)
INSERT INTO user2 (name,age) VALUES('李四',33)
- 当显示的给自增字段插入NULL值时,该字段的值仍然会自增。(不推荐)
INSERT INTO user2 (id,name,age) VALUES(NULL,'王五',36)
2. 非空约束(NOT NULL)
- 被非空约束修饰的字段表中每条记录该字段必须有值,不能为NULL
例
CREATE TABLE user3(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
age INT(3)
)
-
非空约束在查看表结构时有所体现
DESC user3
-
不能将NULL值插入具有非空约束的字段中
INSERT INTO user3 (name,age) VALUES(NULL,22)
-
插入数据时不能忽略具有非空约束的字段(字段默认插入NULL)
INSERT INTO user3(age) VALUES(33)
数据库相关文章链接
- 数据库基本概念介绍和MariaDB安装
- 数据库DDL数据定义语言
- 数据库DML数据操作语言
- 数据库DQL数据查询语言