Oracle基础02

其实Sqlserver中的sql语句基本上都适用于Oracle
  1. 基本的sql语句复习(适用于Oracle)

增加

1.insert into 表名(列名1,列名2,列名3)values(值1,值2,值3);

2.insert into 表名(列名1,列名2,列名3)

select (值1,值2,值3)union

select (值1,值2,值3)union

select (值1,值2,值3)

删除

删除所有数据:delete from 表名;

根据条件删除数据:delete from 表名 where sid = 1;

修改

update 表名 set 字段1 = 值1,字段2 = 值2 where id=1;

查询

查询所有:select * from 表名;// * 表示所有字段/列;

模糊查询:select * from 表名 where 列名 like '%关键字%';

  1. SQL语言的构成

sq(Structured Query Language)是结构化查询语言。

结构化查询语言包含以下6个部分:

  • 数据查询语言/数据检索语句DQL):

常用关键字: select(查询/选择),where(分组前筛选),order by(排序),group by(分组) 和having(分组后筛选)。

  • 数据操作语言DML):该语句包括动词 insert(添加)、update (修改)和 delete(删除)。

  • 事务控制语言TCL):该语句能确保被 DML 语句影响的表的所有行及时得以更新。

包括 commit(提交)命令、save point(保存)命令、rollback(回滚)命令。

  • 数据控制语言DCL):它的语句通过 grant(授权) 或 revoke(撤销权限) 实现权限控制,

  • 数据定义语言DDL):其语句包括动词 cteate(创建数据表和数据库),alert(修改表结构) 和 drop(删除表)。在数据库中创建新表(create table),修改(alert trable),删除表(drop table)。

  • 指针控制语言CCL):它的语句,像 declare cursor( ),fetch info 和 update where 用于对一个或多个表单独行的操作。

  1. Oracle支持的数据类型

字符型

char:固变,长度范围“1--2000字节;

varchar2:可变,长度范围:1-4000字节;

long可变,长度范围:2GB;

数值

number:整型和非整型都是number,number可指定精确度,最高精确到38位。

整型表示:sid number(5);//5代表总位数

非整型表示:sid number(5,3);5代表总位数,3表示小数位的最大长度是3

例:5-3=2。 99.999

日期数据类型.

date:它可以精确到秒,比如:1小时1分1秒。

timestamp:可以把秒值精确到小数点后6位,比如:1小时1分1.111111秒。

  1. 比较操作符.

比较操作符用于比较两个表达式的值。

比较操作符包括 =、!=、<、>、<=、>=、between…and、in、not in、like 和 is null等。

is null nvl()

作用:is null 使用来判断某列是否为空。

nvl:nvl() 的作用和is null是一样的。(nvl() 不属于比较操作符。)

作用:判断某列的数据是否为空,如果为空,则赋指定的值。

案例1:求出 emp 表里面 sal 和 comm 列的数据之和。

select nvl(sal,0) + nvl(comm,0) from emp;

逻辑操作符.

逻辑操作符包括与(and)、或(or)和非(not)。

集合操作符

集合操作符:将两个查询的结果组合成一个结果

union:如果要组合的查询结果相同,则只会显示一个;

union all:显示所有要组成查询结果。

连接操作符 - ||.

--连接操作符用于将多个字符串或数据值合并成一个字符串。

  1. 伪列

伪列概述.

伪列:伪装起来的列,隐藏起来的列。可以通过代码查询,但不能插入、更新和删除它们的值。

oracle中伪列就像一个表里面的列,但是它并没有存储在表中;

常用的伪列有 rowid 和 rowunm.

rowid.

oracle数据库的表中的每一行数据都有一个唯一的标识符(rowid),在oracle内部通常就是使用它来访问数据的。

rowid需要 10个字节的存储空间,用18个字符来显示。该值表明了该行数据在oracle数据库中的具体物理位置。

让伪列(rowid)显示出来的方法:rowid:select a.rowid,a.* from emp a;

rownum.

在Oracle里面执行 insert 操作的时候,oracle会按照 insert 的先后顺序,将 rownum 分配给每一行数据,且是固定不变的。(类似于Sqlserver中的标识符)

伪列 rownum只能作用于"<"和"="以及"<=",不能作用于">"。

让伪列(rownum)显示出来的方法:select rownum,b.* from emp b;

  1. 分页

分页在web项目中使用频繁

在Oracle里面使用伪列 rownum 实现分页的效果。

案例演示:每页最多展示3条数据。

查询 emp 表中第 1 页的数据;

查询 emp 表中第 2 页的数据;

查询 emp 表中第 3 页的数据;

  1. 伪表.

伪表(dual):顾名思义。伪装的表。隐式存在,可以显式调用。

因为在Oracle里面 select 后面必须接 from 关键字,当 select和from单独存在的时候会报语法错误,伪表可以解决这个问题。

案例:求1+1的和。

  1. 约束

--约束:主键、检查、唯一、非空、默认值、外键。

create table tb_g2103(

sid number primary key,--主键约束

sname varchar2(10) unique,--唯一约束

sex varchar2(10) check(sex='男' or sex='女'),--检查约束

age number(2) check(age>=18 and age<=100) not null,--非空约束

saddress varchar2(10) default '长沙'--默认值约束

)

你可能感兴趣的:(oracle,数据库,sql)