Oracle SQL语言基础

目录

1. SQL语言基础

1.1 SQL语言概述

1.1.1 PL/SQL与SQL的关系

1.2 SQL语言的组成

1.3 数据定义语言DDL

1.3.1 SQL数据类型

1.3.2 数据操纵语言DML----INSERT、DELETE、UPDATE、SELECT

1.3.3  查看表结构(只能在SQLPLUS中使用)

1.3.4  修改表结构

1.3.5 SQL操作符(查询中使用运算符会使索引失效)

1.3.6 伪表dual与伪列rowid,rownum


 

1. SQL语言基础

1.1 SQL语言概述

SQL(结构化查询语)是关系数据库语言,用于建立、存储、修改、检索和管理关系数据库中的数据。

SQL是所有程序和用户用于存取关系数据库中数据的命令集。

1.1.1 PL/SQL与SQL的关系

PL/SQL是Oracle对关系数据库语言SQL的扩充,它将SQL的数据操纵功能与过程化语言数处理功能相结合。

PL/SQL是Oracle数据库应用的重要开发工具。

1.2 SQL语言的组成

2.1数据定义语言DDL----CREATE、ALTER、DROP   - - 创建、修改表结构、删除

2.2数据操纵语言DML----INSERT、DELETE、UPDATE、SELECT  - - 插入、删除、修改表数据、查询

2.3事物控制语句TCL----COMMIT、ROLLBACK、SAVEPOINT  - - 提交、回滚、保存

2.4数据控制语言DCL----GRANT、REVOKE   - - 授权、撤回

1.3 数据定义语言DDL

1.3.1 SQL数据类型

1.3.1.1 字符:char,varchar2,long

char:    固变       1~2000字节
varchar2:可变长度   1~4000字节
nvarchar2:    可变长度   2GB长度(一般不用)

1.3.1.2 数值 number,integer

number:即是整数又是小数,默认整型
number[(p[,s])]  ==p精度,s小数位
number(5,2)  == 共5位,其中小数位2位
--只要整型:number(5)

1.3.1.3 日期时间

Date:存储日期、时间类型。
日期转换函数:to_date('2016-02-02','yyyy-mm-dd')

例:insert into tb_name(mydate)
values(to_date('2016-02-02','yyyy-mm-dd hh:mi:ss'));

1.3.1.4 储存二进制数据,比如图片、视频、声音文件等

4.1 Raw或Raw Long
4.2 LOB (常用,就是所谓的大数据,最大4BG)
记住,一般我们不把图片、视频等存在数据库中,只是把它们存放在硬盘地址保存到硬盘。
存在数据库里,要转换,资源消耗多。

1.3.1.5 格式:

CREATE TABLE TB_EMP(
SID NUMBER,
SNAME VARCAHR2(20) NOT NULL,
SEX VARCHAR2(20),
CONSTRAINT PK_SID PRIMARY KEY(SID),
CONSTRAINT CH_SEX CHECK(SEX)
)

1.3.2 数据操纵语言DML----INSERT、DELETE、UPDATE、SELECT

1.3.2.1 INSERT

--单条数据插入
INSERT  INTO  EMP(SID,SNAME)
VALUES(1, ’ 张三 ’);
- - 多条数据插入
INSERT  INTO EMP(SID,SNAME)
SELECT  1,’A’ from dual union
Select  2,’b’ from dual

1.3.2.2 DELETE

- - 删除数据(删除表数据)
DELETE EMP WHERE EMPNO = 7369;

1.3.2.3 UPDATE

 - - 修改数据
UPDATE EMP SET SAL = SAL+100;

1.3.2.4 SELECT

 - - 查询
SELECT * FROM EMP

1.3.3  查看表结构(只能在SQLPLUS中使用)

DESCRIBE <表名>;  - - 不能用

--复制表: 
CREATE TABLE EMP2 AS
SELECT * FROM EMP;
--只复制表结构,不要数据
CREATE TABLE EMP3 AS
SELECT * FROM EMP WHERE 1=2;

1.3.4  修改表结构

ALTER TABLE EMP
--添加表约束
alter table SCOTT.EMP
add constraint FK_DEPTNO foreign key (DEPTNO)

1.3.5 SQL操作符(查询中使用运算符会使索引失效)

1.算术运算符  + - * /
2.比较运算符  = != < > <= >=  between ..  and  in like is null
3.逻辑运算符  not and or
4.集合运算符 union行合并,union all
5.连接操作符 ||用来连接字符串
DECLARE 
   SNAME VARCHAR2(20);
BEGIN
SELECT ENAME INTO SNAME FROM EMP WHERE EMPNO = 7369;
DBMS_OUTPUT.PUT.LINE(‘姓名’||SNAME);
EDN;

注意:SQL操作符的优先级:算术 > 连接 > 比较 > not > and > or

1.3.6 伪表dual与伪列rowid,rownum

SELECT * FROM DUAL
--如果结果集中出现三列,其实它有五列,还有两个列:rowid、rownum
--rowid:唯一标识符,这是系统给的,不是我们自己定义的
--rownum:有点类似sql中的row_number()方法
查看:
select t.*,rowid from tb_name t;
select t.*.rownum from tb_name t;
注意:在Oracle项目中,一般都使用rownum做分页。
两个可以一起使用
SELECT EMP.*,ROWID,ROWNUM FROM EMP
问题:
求前两条数据
SELECT A.*,ROWNUM FROM EMP A WHERE ROWNUM<3

--求第3、4条记录(注意:rownum只能作用于小于号)
--解决办法:rownum是a表的伪列,把这伪列变成实列
SELECT EM.* FROM (SELECT E.*,ROWNUM EID FROM EMP E WHERE ROWNUM<5)EM WHERE EID>1;

问题:使用in 查询 部门编号10,20的所有员工
SELECT * FROM DEPT WHERE DEPTNO IN(10,20); 

有建议可以联系本人QQ:304808680

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值