今天我们来学习DML DDL基础,喜欢博主的点个关注和收藏,大家一起交流~
DML:数据操作语言(inster,delete,update,select),可以手动控制事务的开启、提交和回滚的
DDL:数据定义语言(create,drop,alter),DDL操作是隐性提交的,不能回滚
文章目录
一、常见数据类型
字符型:用来存放字符型数据,字符包括字母、符号、数字、汉字以及以上所有的组合
数值型:仅有数字,没有其他任何内容,可以用来计算
日期型:存放的是一个时间点,包括年月日时分秒周季(季度)
二、字段属性
数据类型 + 精度
-
字符型
CHAR(n):固定长度为n的字符串,长度不足n,则在右侧以空格补全
VARCHAR2(n):可变长度字符串,存入该字段的数据最长不超过n,不足n的以实际长度存储数据注:VARCHAR2(n)是ORCALE数据库中特有的
-
数值型
NUMBER(p,s):p表示数值的总长度(不含小数点),s表示小数位的长度。
注意:
1 小数位优先级高于整数位,即先补充小数位,再加上整个位,超过p就会报错
2 若小数位的长度不足,以0补全;若小数位长度超长,超出的部分四舍五入,总长度不能超过p
3 NUMBER:没有任何参数,默认是用最简的形式存入,遇见小数也不会四舍五入 默认的NUMBER长度为38位
-
日期型
DATE:固定存储7个字节,包括世纪、年、月、日、时、分、秒,但并不一定都显示。可以通过该种类型的数据查到关于日期的以上信息及季度、星期等信息
TIMESTAMP:不常见的日期型数据,存储7到11个字节,相比DATE多出毫秒部分
三、基本的建表语句
1 创建表
1 语法
CREATE TABLE TB_NAME (
COL_NAME1 COL_TYPE,
COL_NAME2 COL_TYPE,
COL_NAME3 COL_TYPE,
…
COL_NAMEN COL_TYPE);
2 规则
1 不建议写汉字表名、列名 (防止乱码,书写麻烦来回切换输入法)
2 表名和列名的长度不能超过30
3 名字要以字母开头 不要出现除了下划线之外的其他符号
4 再同一用户下不要出现同名的表;同一表下不能出现相同的列名
-- 0:男 1:女
CREATE TABLE STUDENT_INFO(
STUDENT_NO NUMBER,
STUDENT_NAME VARCHAR2(100),
SEX CHAR(2),
BIRTHDAY DATE
)
2 删除表
DROP TABLE 表名; -- 连同数据都删除
3 修改表
1 添加字段
语法
ALTER TABLE TB_NAME ADD (COL_NAME DATATYPE); -- 单加一个字段
ALTER TABLE TB_NAME ADD (COL_NAME1 DATATYPE,COL_NAME2 DATATYPE); -- 同时加多个字段
重点
1 向表中新增一个字段时,括号可以省略,建议加上
2 向表中新增多个字段时,括号必须带上
3 新增的字段与已有字段不能重复
2 删除字段
删除一个字段:ALTER TABLE TB_NAME DROP COLUMN COL_NAME;
删除多个字段:ALTER TABLE TB_NAME DROP (COL_NAME1,COL_NAME2…);记这个
重点
1 要删除的字段必须存在
2 删除单个字段,且没有括号括起,必须加上COLUMN关键字
3 删除多个字段,必须用括号括起,并且不能加COLUMN关键字
4 不能删除所有列,至少要保留一个字段
ALTER TABLE STUDENT_INFO DROP COLUMN ADDRESS;
SELECT * FROM STUDENT_INFO;
ALTER TABLE STUDENT_INFO DROP (BIRTHDAY,AGE);
SELECT * FROM STUDENT_INFO;
3 修改字段
修改单列字段的字段属性:ALTER TABLE TB_NAME MODIFY COL_NAME COL_TYPE_NEW;
修改多列字段的字段属性:ALTER TABLE TB_NAME MODIFY (COL_NAME1 COL_TYPE_NEW,COL_NAME2 COL_TYPE_NEW,…);
重点
1 修改的字段已存在
2 一般修改长度时是由低向高、从小到大修改
一般这个用的比较多
3 若跨数据类型修改字段属性,需要先清空该字段数据再操作
ALTER TABLE EMP MODIFY SAL NUMBER(8,2);
ALTER TABLE EMP MODIFY SAL NUMBER(7,2);
四、基本的增删改
1 仅限在PLSQL中使用
SELECT * FROM 表名 FOR UPDATE;
2 增加数据
INSERT INTO TB_NAME (列名1,列名2....) VALUES(数据1,数据2....); -- 一次只能插一条
当列名和数值一一对应,可以不写列名,直接写VALUES中的值
3 删除数据
DELETE FROM TB_NAME WHERE 条件;
删除数据时若不加WHERE条件,则是将所有数据删除,只删除数据不删除表
4 修改数据
UPDATE TB_NAME SET COL_NAME1 = NEW_VALUE1,COL_NAME2= NEW_VALUE2,… WHERE 条件;
修改数据时若是不加WHERE条件,则是将所有数据更新