本文约 3207 字,阅读大约需要 4 分钟
SQL Developer | MySQL
SQL Developer
SQL 修改表语句
使用 SQL 语句创建表 E
create table E (
-- 列名 存放数据的数据类型 空/非空
EID varchar2(3) null/not null,
ENAME varchar2(30)
);
查看表 E
select * from E ;
使用 ALTER 修改表 D
alter table D -- 添加字段(2个)/添加列
-- 列名 存放数据类型 默认值'12345'
add(location varchar(20) default '12345',
phone varchar2(20) null; -- 第二字段
);
修改字段长度
alter table D -- 修改表中已有 location 字段的长度为10
modify(location varchar(10));
删除字段
alter table D -- 删除 D 表中的 note 字段
drop column note; -- 删除列
删除表
truncate table D -- 删除整个表中的数据,不可撤销
delete E -- 删除表中数据,通过加 WHERE 语句来实现删除表中部分数据
drop table -- 删除整表
复制表
create table myemp(编号, 姓名, 年薪)
as select * from DEP
重命名列名
select 原列名, 新列名
原列明 as 新列名
约束
约束分类
not null
非空
unique key
唯一键
primary key
主键
check
检查
foreign key
外键
数据完整性 = 正确性 + 一致性
域名完整性(列)约束方法:限制数据类型,检查约束,外键约束,默认值非空约束
实体完整性(行):保证每一行不重复
引用完整性(参照):主从关系,从 -> 主,外键约束实现
(数据完整性都是有不同的约束类型来保障的)
主键约束
关键字:primary key
功能:非空且唯一(一个表中只允许有一个主键)
create table S( -- 创建表时添加主键约束
S# CHAR(9) constraint_S# primary key -- 约束的名称:constraint_S#
);
alter table S -- 修改表时添加主键约束
add constraint S_SID_DK primary key(SID); -- 约束名称:S_SID_DK;列名:SID
select * from user_constraints where table_name = "T" -- 查看为 T 表创建的约束
非空约束
关键字:not null
alter table S
modify name varchar(20) not null; -- 修改表过程中添加非空约束
外键约束
关键字:foreign key
- 用于确保相关的两个字段之间的参照关系
- 子表外键中的值必须在主表范围内,或 null
- 外键参照的必须是主表的主键或唯一键,当被子表参照时主表相应记录,不允许被删除
create table SC( -- 创建 SC 表,同时为主表已有的列 S# 和 C# 字段添加外键,分别引用已有主表的 S 和 C 列
S# char(9),
C# char(7),
constraint SC_S#_S1 foreign key(S#) references S(S#),
constraint SC_C#_S2 foreign key(C#) references C(C#),
)
SC_C#_S2
创建的外键约束的名字(子表名_列名_子表名)foreign key(
C#
) 已有主表主键约束的列名references
C
(C#
) 已有主表名,已有主表列名(含主键)
alter table S -- 在修改表时为行字段添加外键约束(已有主表S)
add constraint SC_S#_S1 foreign key(S#)
references SC(S#)
SC_S#_S1
约束名称foreign key(
S#
) 已有主表主键约束的列名
SC
(S#
) 建立新的子表 SC,新子表的列名 S#
删除表的主键约束
alter table S
drop constraints SS_S#_S1; [cascade]
SS_S#_S1
约束名
[cascade]
用于删除外键使用
删除表的外键约束
alter table SS
drop constraint SS_S1
SS
外键表名
SS_S1
外键约束名
检查约束(check)
用于定义数据字段必须要满足的条件(取值范围,文本内容格式)
创建表时添加检查约束
在创建表语句(create table)后添加:constraint 约束名 check (检查约束条件,多个条件使用 and 链接)
修改表时添加检查约束
alter table S add check(SSEX='男' OR SSEX='女'); --使用系统自动提供的约束名
S
需要修改的表名
SSEX='男' OR SSEX='女'
约束条件
alter table S add constraint S_SO check('');
(sage between 0 and 120) --表级检查约束
或(sage >= 0 and sage <= 120)
S_SO
设定的约束名
移除检查约束
alter table S
drop constraint S_S0;
S
表名
S_S0
检查约束名
唯一约束(unique)
用于确保约束的字段不出现重复的值,允许有空值,允许定义多个唯一性约束
创建表时添加唯一约束
create table C(
CNAME char(7) not null,
unique(CNAME) -- 表级定义
);
或
constrant C_0 unique(CNAME)
C_0
约束名
CNAME
列名
移除唯一约束(修改表)
alter table C
drop constaint C_0;
C
表名
C_0
唯一约束名
非空约束(not null)
alter table C
modify column not null
添加数据(insert)
insert into C(C#, CNAME, CLASSH) values('C1', '00', '72');
C
表名
C#, CNAME, CLASSH
指定数据列名
'C1', '00', '72'
要插入的数据
修改表中数据(update)
update SC
set GRADE = 61 -- 修改表中数据,不加 where 修改一列全部数据
(可省略) where C# = 'C401001' and GRADE <= 80; -- 修改符合条件对应的列数据
SC
表名
set GRADE
要修改数据的列名
删除数据(delete)
delete S
(可省略) where PLAEOFB = '上海';
S
表名
where PLAEOFB
= '上海'
; 列名PLAEOFB,查找符合条件的数据’上海’
清空数据(truncate)
truncate table SS; -- 清空 SS 表中的所有数据
合并表(merge)
commit
指令结束语句,提交标识符以上的所有命令,提交完成后继续执行下方语句
savepoint PI;
保存节点,用于指定标记位置后期回滚操作
rollback to PI
回滚到 PI 处
基本查询
数据操纵语言(DML)
- SELECT
- INSERT
- DELETE
- UPDATE
- MERGE
数据定义语言(DDL)
- CREATE
- ALTER
- DROP
- RENAME
- TRUNCATE
数据控制语言(DCL)
- GRANT
- REVOKT
事务控制语句
- COMMIT
- ROLLBACK
会话控制语句
- ALTER
- SESSION
- SET ROLE
字符串连接运算符
||
可以把知乎或其他表达式连接在一起,得到一个新的字符串,实现 “合成” 列的功能
"
双引号为转义字符
查询
select sal, comm, sal + NVL(comm, 0) from EMP; --(comm, 0): 如果 comm 列的值为空,则赋值为 0
select DISTINCT deptno from EMP; --DISTINCT deptno: 去重(合并重复项)
select ename || 'IS A' AS 姓名, job AS JOB FROM EMP; --ename: 列名; IS A: 接入名; 姓名: 列首名; ,: 分隔列,SELECT 至逗号前为第一列,逗号后到 FROM 前为第二列