第 3 章 SQL语言基础

目录

第 3 章 SQL语言基础

3.1 SQL概述

3.1.1 SQL 语言的功能

3.1.2 SQL 的特点

3.1.3 SQL语句的编写规则

3.2 数据定义

3.2.1 CREATE

3.2.2 DROP

3.2.3 ALTER

3.3 数据查询

3.3.1 简单查询

3.3.2 WHERE 子句

3.3.3 ORDER BY 子句

3.3.4 GROUP BY 子句

3.3.5 HAVING子句

3.3.6 多表连接查询

3.3.7 集合操作

3.3.8 子查询

3.4 数据操纵

3.4.1 INSERT语句

3.4.2 UPDATE语句

3.4.3 DELETE语句

3.4.4 TRUNCATE语句

3.5 数据控制

3.5.1 GRANT 语句

3.5.2 REVOKE语句

3.6 Oracle常用函数

3.6.1 字符类函数

3.6.2 数字类函数

3.6.3 日期类函数

3.6.4 转换类函数

3.6.5 聚集类函数


第 3 章 SQL语言基础

以Scott用户下的emp表为例,新建emp的临时表(emp_temp),不对emp表做操作


3.1 SQL概述


3.1.1 SQL 语言的功能


3.1.2 SQL 的特点


3.1.3 SQL语句的编写规则


3.2 数据定义

DDL(data definition language):数据定义语言,对表结构进行操作


3.2.1 CREATE

-- 创建表
create table emp_temp
(
  empno    NUMBER(4) not null,
  ename    VARCHAR2(10),
  job      VARCHAR2(9),
  mgr      NUMBER(4),
  hiredate DATE,
  sal      NUMBER(7,2),
  comm     NUMBER(7,2),
  deptno   NUMBER(2)
)
-- 表注释
comment on table emp_temp  is '员工表';

-- 字段注释
comment on column emp_temp.empno  is '员工编号';
comment on column emp_temp.ename  is '姓名';
comment on column emp_temp.job  is '工作';
comment on column emp_temp.mgr  is '上级编号';
comment on column emp_temp.hiredate  is '入职日期';
comment on column emp_temp.sal  is '薪水';
comment on column emp_temp.comm  is '奖金';
comment on column emp_temp.deptno  is '部门编号';

tip:
number(7,2) 是5位整数,两位小数,最多7位
当前时间:sysdate


3.2.2 DROP

-- 删除表
drop table emp_temp;


3.2.3 ALTER

对字段操作操作方法
更新字段名alter table TABLE_NAME rename column column_old to column_new;
添加字段alter table TABLE_NAME add COLUMN_NAME varchar(10);
删除字段alter table TABLE_NAME drop column COLUMN_NAME;
添加字段并附值alter table TABLE_NAME ADD COLUMN_NAME NUMBER(1) DEFAULT 1;
修改字段值update TABLE_NAME set filedname=value where filedname=value;
修改字段数据类型alter table tablename modify filedname varchar2(20);


3.3 数据查询


3.3.1 简单查询

-- 查询表
select * from emp_temp;


3.3.2 WHERE 子句

select * from emp_temp e where e.ename = 'Jack';


3.3.3 ORDER BY 子句


3.3.4 GROUP BY 子句


3.3.5 HAVING子句

 

3.3.6 多表连接查询


3.3.7 集合操作


3.3.8 子查询


3.4 数据操纵


3.4.1 INSERT语句

-- 全字段新增数据
insert into emp_temp values(1,'John','工程师',2,to_date('2020/02/02','yyyy/mm/dd'),3000,1000,21);
-- 隐式转换:varchar 和 number类型的数字可以隐式转换,
-- number字段不能插入字符或者日期数据,字段类型要一致
insert into emp_temp values('2','Nany','项目经理',3,to_date('2020/02/02','yyyy/mm/dd'),6000,2000,21);

-- 指定字段插入数据,字段的位置可以改变
insert into emp_temp(empno,ename) values(3,'Jack');


3.4.2 UPDATE语句

-- 修改字段,带条件
update emp_temp e set e.job = 'CEO' where e.ename = 'Jack';
-- 修改多个字段,带条件
update emp_temp e set e.sal = 10000.00,e.deptno = '1' where e.ename = 'Jack';

-- 异常:数据类型要一致
update emp_temp e set e.empno = 'aa' where e.ename = 'Jack';

tip:
工作中需要修改数据 通常是先查询出来 再去修改 避免改了不该改的数据


3.4.3 DELETE语句

--删除全表数据
delete from emp_temp;
-- 条件删除数据
delete from emp_temp e where e.ename = 'Jack';


3.4.4 TRUNCATE语句

truncate VS delete VS drop
 deletetruncatedrop
条件删除支持不支持不支持
事务回滚支持不支持不支持
清理速度慢(大数据)快(大数据)drop> truncate > delete
高水位重置 
属于哪种语言DML(data manipulation language):数据操纵语言DDL(data definition language):数据定义语言DDL(data definition language):数据定义语言
语法delete from aa where ...truncate table aadrop table aa
安全性低(慎用,注意备份)低(慎用,注意备份)
具体说明1、delete from记录是一条条删的,所删除的每行记录都会进日志

1、truncate一次性删掉整个页,因此日至里面只记录页释放

2、truncate不会触发delete的触发器,因为truncate操作不记录各个行删除

操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger
使用场景

1、删除部分数据行

2、想保留表而将所有数据删除. 但和事务有关,或者想触发trigger

1、想保留表而将所有数据删除. 和事务无关

2、整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据

想删除表

删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态

 

truncate VS delete


3.5 数据控制


3.5.1 GRANT 语句


3.5.2 REVOKE语句


3.6 Oracle常用函数


3.6.1 字符类函数


3.6.2 数字类函数


3.6.3 日期类函数


3.6.4 转换类函数


3.6.5 聚集类函数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值