码迷,mamicode.com
首页 > 数据库 > 详细

Oracle

时间:2018-07-16 00:59:04      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:concat   括号   控制   出现   world   rop   sql   column   scribe   

Oracle学习

1      SQL初步

SQL语句分为三种类型:

DML:数据操纵语言

DDL:数据定义语言

DCL:数据控制语言

1.1   DML

INSERT   UPDATE   DELETE   SELECT

1.2   DDL

CREATE TABLE     ALTER TABLE    DROP TABLE    CREATE INDEX    DROP INDEX

1.3   DCL

GRANT    REVOKE   COMMIT   ROLLBACK   SAVEPOINT     LOCK

2      基本查询语句SELECT

查看表结构:desc table_name;

在select的语句中可以加上算术运算符;

查看系统当前时间:select sysdate from dual;

空值是无效的,未指定的,未知的,或不可预知的值;空值不是0或者空格;

使用别名三种方式:

第一种:select cloumn_name1 alias_name1 from table_name;

第二种:select column_name1 as alias_name from table_name;

第三种:select column_name1 “aliasName” from table_name;

第一、  二种的别名都是默认的大写,第三种大小写默认的不变

查询中的连接符“||”:

可以将两个列的查询结果合成一个:

Select last_name || employee_id from employees;

 

显示的结果:

employees

-----------------------------------

BaerPR_REP

HigginsAC_MGR

GietzAC_ACCOUNT

 

Select last_name,employee_id from employees;

显示的结果:

LAST_NAME                 EMPLOYEE_ID

------------------------- -----------

Baer                              204

Higgins                           205

Gietz                             206

日期和字符只能在单引号中出现,每当返回一行时,字符串被输出一次,

Select lastname || ‘ is a ’ job_id as “employee details” from employees;

删除重复行:

Select dinstinct department_id from employees;

但结果可能返回为空

 

Sql语句和SQL plus的区别:

Sql语句是一种语言,一种标准,关键字不能缩写

Sql plus是一种环境,Oracle的特性之一,关键字可以缩写

 

Desc实际上就是describe的缩写

 

Select last_name,distinct department_id from employees;

语句错误,last_name有107条,而department_id用distinct修饰后,只剩12条,不能匹配

 

显示出表employees的全部列,各个列之间用逗号连接,列头显示成OUT_PUT:

Select employee_id || ‘,’ || last_name || ‘,’ ||salary from employees;

 

3      过滤和排序行

过滤使用where加上查询条件,需要注意的是,where后的条件如果是字符/日期,需要用单引号来修饰,数字类型不需要修饰。

比较运算:>  <   <=   >=   <>

其他运算比较: between and, in(set),like, is null

Like ‘s%’; like ‘_o%’:%代表一个多个字符,_代表一个字符

判断是否为空:is(not) null

Escape: select * from job_id where job_id like ‘IT\_%’ escape ‘\’,这代表的是_就是_

Order by asc/desc: 升序/降序

多个列排列:

选择名字中有a或e的员工:

Select * from employees where last_name like ‘%a%e%’ or ‘%e%a%’

 

4      单行函数

大小写函数:

Lower()

Upper()

Initcap():字符首字母大写

字符控制函数:

函数

结果

CONCAT(‘Hello‘, ‘World‘)

SUBSTR(‘HelloWorld‘,1,5)

LENGTH(‘HelloWorld‘)

INSTR(‘HelloWorld‘, ‘W‘)

LPAD(salary,10,‘*‘)

RPAD(salary, 10, ‘*‘)

TRIM(‘H‘ FROM ‘HelloWorld‘)

REPLACE(‘abcd’,’b’,’m’)

HelloWorld

Hello

10

6

*****24000

24000*****

elloWorld

amcd

数字函数:

ROUND(四舍五入)     ROUND(45.926,2)

45.93

TRUNC(截断)         TRUNC(45.926)

45.92

MOD(求余)           MOD(1600,300)

100

 

5      多表查询

 

Select employees.employee_id,employees.department_id, departments.department_id

From    employees,departments;

上面的语句查询结果有2000多条记录,这种现象被称为笛卡儿积。

笛卡儿积的产生情况在下面这些条件产生:

(1)省略连接条件;

(2)连接条件无效;

(3)所有表中的所有行互相连接。

避免笛卡儿积的方式可以加上where过滤

 

内连接与外连接:

内连接:合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不匹配的行;

外连接:两个表在连接的过程中,除了返回满足连接条件的行以外,还返回左表或右表中不满足条件的行,这中连接称为左外连接或右外连接。外连接的where子句条件类似于内部连接,但连接条件中没有匹配行的表的列后面要加外连接运算符,即用圆括号括起来的加号(+).

左连接:左边的全都显示,右边的用null来补上

Select table1.column,table2.column

From table1,table2

Where table1.column= table2.column(+);

右连接:右边的全都显示,左边的用null来补上

Select table1.column,table2.column

From table1,table2

Where table1.column(+) = table2.column

 

Oracle

标签:concat   括号   控制   出现   world   rop   sql   column   scribe   

原文地址:https://www.cnblogs.com/lfdingye/p/9315703.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!