Oracle (一)

  • Post author:
  • Post category:其他


– Oracle中的建表语句

– Oracle中的主要数据类型

– 1.字符型

– varchar(10) 定长的字符型数据

– char(2) 字符量较少时(定长)

– varchar2(20) 变长的字符型数据

– 2.数值型

– number(4) 不带小数点的数值

– number(8,2) 数据的长度是8位,小数点后占俩未

– 3.日期型

create table users(

id number(4) primary KEY,

name varchar(10),

password varchar2(10),

sex char(2),

addr varchar2(20),

birthday date,

sal number(8,2)

);

– 删除表的语句

drop table users;

– 查询表中的数据

select * from users;

– 查询表的结构:只能在命令行模式下使用

desc users;

– sql语句是不区分大小写的,包括登录是的账号和密码

selECT * FroM EmP;

– select语句的使用

–从表中查询部分的字段

select empno,ename,sal,comm

from emp;

– 在查询过程中,对于数值型的数据可以执行 +,-,

,/运算

– 可以给查询字段取别名,又不同的方式

select empno 员工编号,ename 员工姓名,sal 月薪,sal

12 年薪

from emp;

– 在算数运算中出现null,则结果为null,在数值类型中null不等于0.0; ()可以改变运算顺序 并影响结果

select empno 员工编号,ename as “员工姓名”,sal “月薪”,sal

12 年薪,comm “奖金”,(sal

12 + comm) 年收入

from emp;

– 用||可以将俩列或者多列合并起来

select empno,ename,job,empno || ename,empno || ename || job as 员工信息

from emp;

– 在连接表达式中出现字符数据,字符型的数据必须要使用 ‘’

– 在连接表达式中出现null,结果就是原来的字符型数据

– 任何类型都支持空值null

select empno || ‘的经理是’ || MGR “从属关系”

from emp;

– 对于日期型的数据可以进行 +,- 运算 ,+ – 就是+ – 一个天数

select empno,ename, hiredate “雇佣日期” ,(hiredate + 90 ) “转正日期”

from emp;

select empno,ename, hiredate “转正日期” ,(hiredate – 90 ) “雇佣日期”

from emp;

– 俩个日期型的数据相减,得到的是俩个日期直接相差的天数

– sysdate取得当前的天数

select empno 员工编号,ename 员工姓名,(sysdate – hiredate)/365 “工作年限”

from emp;

– 关键字:DISTINCT(distinct)去除单列重复的数据 DEPTNO:部门(外键)

select deptno

from emp;

select distinct deptno

from emp;

– 去除多列重复的数据

select JOB 职位, DEPTNO 部门

from emp;

select distinct JOB,DEPTNO

from emp;

– 使用where语句来对数据进行过滤

select *

from emp

where deptno = 10;

– 对于字符型的数据和日期型的数据必须要使用 ‘’ ; 字符型的数据是严格区分大小写的

select *

from emp

where ename = ‘SMITH’;

– 对于日期型的数据格式是严格的,是 DD-MM-YYYY(年-月-日)

select *

from emp

where emp.hiredate = ‘17-12月-1980’;

– 可以改变当前会话的日期格式

alert session set nls_date_format = “YYYY-MM-DD HH:MI:SS”

– 在查询语句中使用其他的比较运算符

select *

from emp

where sal >= 2000;

select *

from emp

where sal != 2000; – 不等于

select *

from emp

where sal <> 2000; – 不等于

– 使用 between … and…

select *

from emp

where sal between 1000 and 3000;

– 在Oracle中用 AND 来执行 &&(与) 的功能

select *

from emp

where sal >= 1000 and SAL <= 3000;

– 使用IN

select *

from emp

where JOB IN (‘SALESMAN’,‘MANAGER’);

– 在Oracle中用 OR 来执行 ||(或) 的功能

select *

from emp

where JOB = ‘SALESMAN’ OR Job = ‘MANAGER’;

– 使用 NOT 运算符来表示 非

select *

from emp

where not sal >= 1000 and SAL <= 3000;

select *

from emp

where comm is not null;

– 关键字 LIKE ,用于字符型数据的查询,可以执行模糊查询

– % 表示 0 个或者多个字符

select *

from emp

where ENAME LIKE ‘%A%’;

select *

from emp

where ENAME LIKE ‘A%’;

– _ 表示一个字符

select *

from emp

where ENAME LIKE ‘_A%’;

– \ 表示转义符的意思

select *

from emp

where ENAME LIKE ‘%%%’ escape ‘’;

– 对于空值要使用 IS NULL 进行比较

select *

from emp

where comm is null;

select *

from emp

where comm is not null;

– 运算顺序是按照 先 NOT 再 AND 后 OR 的顺序

select *

from users

where name = ‘admin’ and password = ‘123456’;

– sql注入攻击 admin’ OR ‘X’ = ‘X

select *

from users

where name = ‘admin’ OR ‘X’ = ‘X’ and password = ‘456789’; –相当于是:where name = ‘admin’ OR (‘X’ = ‘X’ and password = ‘456789’);

– 对查询的数据进行排序,使用 ORDER BY 子句 ;默认升序排列 加不加 ASC 默认都是升序排列 加 DESC 进行降序排列

select *

from emp

where sal > 2000

order by sal;

– 显示的时候默认按照指定的字段升序排列

select *

from emp

order by sal;

– 显示的时候用指定的字段升序排列

select *

from emp

order by sal ASC;

– 显示的时候用指定的字段降序排列 关键字:DESC

select *

from emp

order by sal desc;

– 可以按照多个字段进行排列

select *

from emp

order by deptno,sal;

– 可以使用字段的别名进行排序

select empno,ename,sal,(sal*12) “年薪”

from emp order by “年薪”;



版权声明:本文为z_h180612原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。