oracle sql学习一
来源:互联网 发布:数据库删除后恢复 编辑:程序博客网 时间:2024/05/17 09:31
SQL语句分为以下三种类型:
DDL: Data Definition Language数据定义语言
DCL: Data Control Language数据控制语言
DML用于查询与修改数据记录,包括如下SQL语句:
DDL用于定义数据库的结构,比如创建、修改或删除数据库对象,包括如下SQL语句:
DCL用来控制数据库的访问,包括如下SQL语句:
SAVEPOINT:设置保存点
在SELECT子句中使用关键字 ‘DISTINCT’ 删除重复行。
日期可以进行加减,但是不能进行乘除,例如:
select sysdate+1 from dual;正确的
select sysdate*2 from dual;错误的
空值不同于0,凡是空值参与的运算结果都为空。
列的别名:在列的后面空格+别名 或者列后面+ as +别名
别名不加双引号,则别名就全大写,例如
连接符:
例子:select first_name||'`s job is'||job_id from employees;
过滤和排序数据:
通过本章学习,您将可以:
过滤的话,直接在后面加where语句。
where后面不可以用别名来做筛选条件,
如select first_name,salary*12 annul_sal from employees whereannul_sal>100000(错误的)
select * from employees where id=900;
字符和日期:
例子:
sql中的不等于可以是!=也可以是<>.
例子:
where salary between 4000 and 7000
where salary in (4000,5000,6000)
模糊查询
名字中包含a的员工:
where first_name like '%a%'
转译字符escape,例如我要查询名字中包含‘_’的员工
where first_name like '%\_%' escape '\'
也可以是where first_name like '%#_%' escape '#'
具体是\还是#,是自己指定的。
is null,查询是空值的,也可以查询不是空值的,is not null;
排序:
不写desc,asc,默认情况下是asc。
先按照department_id 升序排列,如果department_id 一样,再按照salary 降序排列。
单行函数:
通过本章学习,您将可以:
两种sql函数:
单行函数:一个数据,出来一个结果。
多行函数:多个数据,出来一个结果
字符函数:
initcap()首字母大写
substr('hello',2,5) 从第二个开始,取五个字符。
instr('hello','l') 某个字符在字符串中首次出现的位置。如果不存在返回0.
trim()去除首位的字符。
replace()替换所有的。
日期函数:
两个日期只可以做减法,或者日期跟数字做运算。
select (sysdate-hire_date)/30 months from employees;//求入职的月份
months_between(sysdate,hire_date)
add_months(sysdate,2)
next_day(sysdate,'星期五')
last_day(sysdate)
SELECT TO_CHAR(sysdate,'yyyy-MM-dd HH24:mi:ss') FROM dual;
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
通用函数:
这些函数适用于任何数据类型,同时也适用于空值:
当expr1为空的时候,用expr2代替,如果不为空,取它自己。
expr1和expr2的数据类型必须一致,如果不一致,得需要转换函数。
select nvl(to_char(department_id),'没有部门') from employees;(department_id是number类型的)
expr1不为NULL,返回expr2;为NULL,返回expr3。
相等返回NULL,不等返回expr1
条件表达式:
case表达式:
decode表达式:
多表查询:
等值连接:
非等值连接:
有两个表,一个是employees,每个员工有工资salary,还有一个工资等级表,1000到3000是A,3000到6000是B,以此类推。
现在想知道每个员工的工资等级。
SELECT e.last_name,e.salary,j.grade_level
FROM employees e,job_grades j
WHERE e.salary
BETWEENj.lowest_sal ANDj.highest_sal;
外连接:
外连接:两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行,这种连接称为左(或右) 外连接
左外连接:
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column=table2.column(+);
右外连接:
SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column(+)= table2.column;
sql99语法:
内连接:
SELECT e.employee_id,e.last_name,e.department_id,
d.department_id,d.location_id
FROM employees eJOIN departments d
ON (e.department_id =d.department_id);
多表连接:
SELECT employee_id, city,department_name
FROM employees e
JOIN departments d
ON d.department_id =e.department_id
JOIN locations l
ON d.location_id =l.location_id;
左外连接:
SELECTe.last_name,e.department_id,d.department_name
FROM employees e
LEFT OUTER JOINdepartments d
ON (e.department_id =d.department_id) ;
右外连接:
SELECTe.last_name,e.department_id,d.department_name
FROM employees e
RIGHT OUTER JOINdepartments d
ON (e.department_id =d.department_id) ;
SELECTe.last_name,e.department_id,d.department_name
FROM employees e
FULL OUTER JOINdepartments d
ON (e.department_id =d.department_id) ;
- oracle sql学习一
- Oracle SQL 学习(一)
- ORACLE PL/SQL 集合学习笔记(一)
- oracle PL-SQL学习案例(一)
- Oracle PL/SQL学习笔记(一)
- Oracle sql的优化学习记录一
- oracle sql基础学习篇《一》
- 推荐一本学习oracle sql的书籍
- ORACLE PL/SQL 对象(object)学习笔记(一)
- ORACLE PL/SQL 记录(Record)学习笔记(一)
- 二、Oracle初级学习之初级必备sql(一)
- oracle 11g PL/SQL Programming学习一
- oracle简单学习总结(一)——sql
- SQL Server与Oracle对比学习:权限管理(一)
- SQL Window - oracle 与 MySQl的学习笔记(一)
- SQL Server与Oracle对比学习:权限管理(一)
- ORACLE之PL/SQL简单基础语法学习(一)
- Oracle PL/SQL 上课学习笔记(一)
- Phpstorm Invalid MIT-MAGIC-COOKIE-1 key
- phonegap/Cordova和android自定义插件模块,cordova build后插件不会消失
- PHP网站提速 篇一
- Java环境搭建之JDK环境变量配置
- Web开发注意知识点
- oracle sql学习一
- C++序列化方案
- html中div+css布局
- python爬虫爬取百度贴吧的信息
- jQuery验证问题
- JAVA跟PHP对比
- BZOJ 1066 POJ 2711 [SCOI2007]蜥蜴
- C++走向远洋——51(数组类运算的实现)
- Archive卡顿时的另一种打包方式