其实Sqlserver中的sql语句基本上都适用于Oracle
基本的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 '%关键字%';
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 用于对一个或多个表单独行的操作。
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秒。
比较操作符.
比较操作符用于比较两个表达式的值。
比较操作符包括 =、!=、<、>、<=、>=、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:显示所有要组成查询结果。
连接操作符 - ||.
--连接操作符用于将多个字符串或数据值合并成一个字符串。
伪列
伪列概述.
伪列:伪装起来的列,隐藏起来的列。可以通过代码查询,但不能插入、更新和删除它们的值。
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;
分页
分页在web项目中使用频繁
在Oracle里面使用伪列 rownum 实现分页的效果。
案例演示:每页最多展示3条数据。
查询 emp 表中第 1 页的数据;
查询 emp 表中第 2 页的数据;
查询 emp 表中第 3 页的数据;
伪表.
伪表(dual):顾名思义。伪装的表。隐式存在,可以显式调用。
因为在Oracle里面 select 后面必须接 from 关键字,当 select和from单独存在的时候会报语法错误,伪表可以解决这个问题。
案例:求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 '长沙'--默认值约束
)