文章目录

  • 一. 数据库常用的数据类型
  • 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

ios里面的约束条件 约束条件个数是什么_java

  • 当最大值需要进行四舍五入时,此时会报错:值超出了范围

ios里面的约束条件 约束条件个数是什么_数据库_02

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

ios里面的约束条件 约束条件个数是什么_数据库_03

  • DATETIME类型插入数据时不能忽略年月日
INSERT INTO userinfo(id,username,gender,birth,salary)
VALUES (3,'王五','男','12:15:32',5000)
会报错,DATETIME字段不能只插入时分秒

ios里面的约束条件 约束条件个数是什么_字段_04

  • 插入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 注意事项

  • 主键字段不能插入重复的值

ios里面的约束条件 约束条件个数是什么_ios里面的约束条件_05

  • 主键字段不能插入NULL值

ios里面的约束条件 约束条件个数是什么_java_06

  • 不能修改重复的值

ios里面的约束条件 约束条件个数是什么_ios里面的约束条件_07

  • 不能修改为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

ios里面的约束条件 约束条件个数是什么_ios里面的约束条件_08

  • 不能将NULL值插入具有非空约束的字段中
INSERT INTO user3 (name,age) VALUES(NULL,22)
  • 插入数据时不能忽略具有非空约束的字段(字段默认插入NULL)
INSERT INTO user3(age) VALUES(33)

ios里面的约束条件 约束条件个数是什么_字段_09

数据库相关文章链接

  1. 数据库基本概念介绍和MariaDB安装
  2. 数据库DDL数据定义语言
  3. 数据库DML数据操作语言
  4. 数据库DQL数据查询语言