sql学习笔记
来源:互联网 发布:交换机有端口号吗 编辑:程序博客网 时间:2024/06/08 04:00
- select 可以嵌套,可作为select 的选择对象,where 的条件等 eg:select (select sum(commission_pct) from employees)/(select count(*) from employees ) from dual;
- select 作用: a.列选择:SELECT Column1, Column2 from table1; b.行选择:SELECT * FROM table1;c.多表链接查询 :SELECT table1.Column1,table2.Column2 from table1,table2…
- SQL语句中的数学表达式:对于数值和日期型字段,可以进行 “加减乘除”:SELECT last_name, salary, salary + 300 FROM employees;
- NULL表示 不可用、未赋值、不知道、不适用 , 它既不是0 也不是空格。记住:一个数值与NULL进行四则运算,其结果是? NULL
- AS 给列取别名,可以省略。若别名没用双引号,则自动转换为全大写。eg:SELECT colum1 AS co1...结果为CO1,如果是。。AS “co1”。。。结果为 co1
- 字符串连接操作符: “||”,连接函数 CONCAT(str1,str2);str1str2; eg:SELECT last_name||job_id AS "Employees"
FROM employees; - DISTINCT去除重复行:SELECT DISTINCT department_id FROM employees;使用DISTINCT消除重复结果行
- IN(set)在一个集合范围内
- 使用LIKE做模糊匹配:%代表0个或者多个 字符. _代表一个单个字符 eg:SELECT last_name
FROM employees
WHERE last_name LIKE '_o%';select * from t_char where a like ‘%\%%' escape '\'; - SELECT last_name, manager_id
FROM employees
WHERE manager_id IS NULL; - 按照字段别名排序:SELECT employee_id, last_name, salary*12 annsal
FROM employees
ORDER BY annsal; - LOWER('SQL Course') sql course
UPPER('SQL Course') SQL COURSE
INITCAP('SQL course') Sql Course - CONCAT('Hello', 'World') HelloWorld
SUBSTR('HelloWorld',1,5) Hello
LENGTH('HelloWorld') 10
INSTR('HelloWorld', 'W') 6
LPAD(salary,10,'*') *****24000
RPAD(salary, 10, '*') 24000*****
TRIM('H' FROM 'HelloWorld') elloWorld
TRIM(' HelloWorld') HelloWorld
TRIM('Hello World') Hello World - ROUND(45.926, 2) 45.93
TRUNC(45.926, 2) 45.92
MOD(1600, 300) 100 - MONTHS_BETWEEN ('01-SEP-95','11-JAN-94') 19.6774194
ADD_MONTHS ('11-JAN-94',6) 11-Jul-94
NEXT_DAY ('01-SEP-95','FRIDAY') 8-Sep-95
NEXT_DAY ('01-SEP-95',1) 3-Sep-95
NEXT_DAY ('1995-09-01',1)
ORA-
01861:literal
does not match
format string
NEXT_DAY (to_date('1995-09-01','YYYY-MM-DD'),1) 3-Sep-95
LAST_DAY('01-FEB-95') 28-Feb-95
ROUND('25-JUL-95','MONTH') 1-Aug-95
ROUND('25-JUL-95' ,'YEAR') 1-Jan-96
TRUNC('25-JUL-95' ,'MONTH') 1-Jul-95
TRUNC('25-JUL-95','YEAR') 1-Jan-95 - TO_CHAR(date, 'format_model') ;
日期格式化元素 意义
YYYY 4位数字表示的年份
YEAR 英文描述的年份
MM 2位数字表示的月份
MONTH 英文描述的月份
MON 三个字母的英文描述月份简称
DD 2位数字表示的日期
DAY 英文描述的星期几
DY 三个字母的英文描述的星期几简称
HH24:MI:SS AM 时分秒的格式化
DDspth 英文描述的月中第几天
fm 格式化关键字,可选 - TO_NUMBER(char[, 'format_model']) ;
- TO_DATE(char[, 'format_model']);
- NVL (expr1, expr2)如果expr1为空,这返回expr2
NVL2 (expr1, expr2, expr3) 如果expr1为空,这返回expr3(第2个结果)否则返回expr2
NULLIF (expr1, expr2) 如果expr1和expr2相等,则返回空
COALESCE (expr1, expr2, ..., exprn)
如果expr1不为空,则返回expr1,结束;否则计算expr2,直到找到
一个不为NULL的值 或者如果全部为NULL,也只能返回NULL
了 - SELECT last_name, job_id, salary,
CASE job_id
WHEN 'IT_PROG' THEN 1.10*salary
WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP' THEN 1.20*salary
ELSE salary
END "REVISED_SALARY"
FROM employees; - SELECT last_name, job_id, salary,
DECODE(job_id, 'IT_PROG', 1.10*salary,
'ST_CLERK', 1.15*salary,
'SA_REP', 1.20*salary,
salary) REVISED_SALARY
FROM employees; - SELECT table1.column, table2.column
FROM table1, table2
WHERE table1.column(+) = table2.column; oracle左连接 - sql 自然连接SELECT department_id, department_name,location_id, cityFROM departments NATURAL JOIN locations ;自然链接:相当于Oracle的“等于连接”,只不过是让系统自己去找两张表中字段名相同的字段作为
“等于连接”条件;(注意如果两个表中有相同的列名,但字段类型不一样,这会引发一个错误) - SELECT e.employee_id, e.last_name, d.location_id
FROM employees e JOIN departments d
USING (department_id) ; - 内连接 SELECT employee_id, city, department_name
FROM employees e
INNER JOIN departments d ON d.department_id = e.department_id
INNER JOIN locations l ON d.location_id = l.location_id;
INNER JOIN 可简写为JOIN ,即省去INNER - 左外连接
SELECT e.last_name, e.department_id, d.department_name
FROM employees e
LEFT OUTER JOIN departments d
ON (e.department_id = d.department_id) ; - SELECT e.last_name, e.department_id, d.department_name
FROM employees e
FULL OUTER JOIN departments d
ON (e.department_id = d.department_id) ; - 分组计算函数:相对于单行函数,也可称之为多行函数,它的输入是多个行构成得一个行集(这个行集可以是
一张表的所有行,也可以是按照某个维度进行分组后的某一组行),而输出都是一个值;
比如我们常见的一些分组计算需求:求某个部门的薪资总和,薪资平均值,薪资最大值等等。
1、求和(SUM)
2、求平均值(AVG)
3、计数( COUNT)
4、求标准差(STDDEV)
5、求方差(VARIANCE)
6、求最大值(MAX)
7、求最小值(MIN)
备注:MIN, MAX可用于任何数据类型,但AVG,SUM,STDDEV, VARIANCE仅适用于数值型字段。 - COUNT(*)返回满足选择条件的所有行的行数,包括值为空的行和重复的行
COUNT(expr) 返回满足选择条件的且表达式不为空行数。
COUNT(DISTINCT expr) 返回满足选择条件的且表达式不为空,且不重复的行数。 - 使用GROUP BY子句进行分组
- DELETE FROM departments
WHERE department_name = 'Finance';
1 row deleted.
举例二:删除一张表中的所有记录
DELETE FROM copy_emp;
22 rows deleted.
如果遇到这种需求,也可以使用TRUNCATE语句,TRUNCATE TABLE copy_emp ,
但要注意, TRUNCATE 语句无法回滚,因此除非是单独执行,并非常确认,否则慎用。 - create table TEST
- (
- ID NUMBER not null,
- NAME VARCHAR2(20)
- )
- ALTER TABLE SCOTT.TEST RENAME TO TEST1--修改表名
- ALTER TABLE SCOTT.TEST RENAME COLUMN NAME TO NAME1 --修改表列名
- ALTER TABLE SCOTT.TEST MODIFY NAME1 NUMBER(20) --修改字段类型
- ALTER TABLE SCOTT.TEST ADD ADDRESS VARCHAR2(40) --添加表列
- ALTER TABLE SCOTT.TEST DROP COLUMN ADDRESS --删除表列
0 0
- SQL、PL/SQL学习笔记
- SQL、PL/SQL学习笔记
- SQL、PL/SQL学习笔记
- 学习sql语言笔记
- PL/SQL学习笔记
- 学习sql server笔记。
- SQL学习笔记!
- sql学习笔记
- PL/SQL学习笔记
- PL/SQL学习笔记
- SQL学习笔记
- PL/SQL学习笔记
- PL/SQL学习笔记
- PL/SQL学习笔记
- 学习sql语言笔记
- sql学习笔记
- sql学习笔记
- sql学习笔记
- 给C++初学者的50个忠告
- iOS开发8-NSNotificationCenter的使用
- Perl学习笔记(一)
- Bootstrap中tab标签切换demo
- hadoop 学习(1) hadoop安装
- sql学习笔记
- 研究SLAM网站和有用站点-sourcecode+测试数据
- 你就是个菜鸟 还整天不学习 卧槽 跟个傻逼似得
- POJ1012Joseph解题报告
- eclipse最实用快捷键
- win10 删除设备和驱动器中你不要的图标
- 洛谷1086/NOI题库1.13.38/NOIP2004普及组第2题 花生采摘
- java里类方法和实例方法区别
- 静态注册实现开机启动