DML 数据操作语言
三个语句:
INSERT 语句:功能,将数据插入到表中,结果,表中数据量增加了,以行为单位,行数增加了
实际功能中: 注册,加入购物车,下订单,上车扫码...
UPDATE 语句:更新修改数据: 功能,将表中数据进行修改,结果,数据量不变,但是内容发生了变化
实际功能中:修改密码
DELETE 语句:删除数据语句: 功能,将表中不要的数据删除,结果,数据量变少了,以行为单位
实际功能:清空购物车
---------------------- 数据类型:每个列下面的数据是什么样子,都是有类型限制的
常见的数据类型:字符串、日期类型、数值类型
CHAR(n) 字符类型,固定长度的字符类型,列存储的字符串的长度是固定的,如果长度不够,
会自动在后面补足空格,最多存放 255 个字符,优势:存储效率高
例如: CHAR(10) -- 表示固定存储10个字符长度的字符串
abcde -- > 存储数据 abcde补足5个空格
VARCHAR(n) 字符类型,可变长度的字符类型,最多可以存放 65535 个字符,优势:节省空间
例如: VARCHAR(10) -- 最多可以存放10个字符长度的字符串
abcde -- 》abcde
abcdefg -- > abcdefg
实际中:有一些固定长度的信息存储,建议使用 CHAR 类型,效率高,例如:身份证号,手机号,性别
那些不固定长度的信息存储,建议使用 VARCHAR 类型: 地址,姓名,签名,留言等等
CHAR 类型的字符在检索的的时候要比 VARCHAR 快很多。
------------------------------------------------------------------
日期类型:
DATE:日期 '2022-03-25'
TIME :时间 '10:00:00'
DATETIME : 日期时间 '2022-03-25 10:00:00'
时间函数: NOW() -- 获取现在的时间
SYSDATE() -- 取系统当前的时间
区别: NOW() 在执行的时候获取的是执行开始时取的时间, SYSDATE()在函数执行的时候获取的动态时间值
SELECT NOW(),SYSDATE() FROM DUAL; -- 执行过快,看不出区别,让语句执行若干秒,延迟取时间 sleep(n);
SELECT NOW(),SLEEP(3),NOW() FROM DUAL;
SELECT SYSDATE(),SLEEP(3),SYSDATE() FROM DUAL;
----------------------------------------------------
数值类型:整型和小数
整型: INT() : 指定的是显示宽度,不是表示存储的大小,默认就是 10
小数:浮点型 FLOAT/DOUBLE (单精度/双精度,精确的程度不一样)
例如:
CREATE TABLE t112(
id1 INT(5),
id2 FLOAT(5,3));
SELECT * FROM t112;
INSERT INTO t112 VALUES(32524354.5678,234); -- bug列的精度不够,存储的是99.999,自认为范围内最大的
-- FLOAT(5,3)# 单精度浮点型,总位数 5位,小数位3位,整数位 5-3 =2 位
INSERT INTO t112 VALUES(3252435445645.5678,23.45675785); -- bug 列的精度不够,int 类型超出精度范围,需要修改代码
INSERT INTO t112 VALUES(3252,23.45644);
INSERT INTO t112 VALUES(3252,3.4234345644);
INSERT INTO t112 VALUES(325245454,3);