SQL查询+SQL概述

SQL语句分为以下三种类型:
DML: Data Manipulation Language 数据操纵语言
DDL: Data Definition Language 数据定义语言
DCL: Data Control Language 数据控制语言

DML用于查询与修改数据记录,包括如下SQL语句:
INSERT:添加数据到数据库中
UPDATE:修改数据库中的数据
DELETE:删除数据库中的数据
SELECT:选择(查询)数据SELECT是SQL语言的基础,最为重要。

DDL用于定义数据库的结构,比如创建、修改或删除数据库对象,包括如下SQL语句:
CREATE TABLE:创建数据库表
ALTER TABLE:更改表结构、添加、删除,改名、修改列长度
DROP TABLE:删除表
CREATE INDEX:在表上建立索引 DROP INDEX:删除索引

DCL用来控制数据库的访问,包括如下SQL语句:
GRANT:授予访问权限
REVOKE:撤销访问权限
COMMIT:提交事务处理
ROLLBACK:事务处理回退
SAVEPOINT:设置保存点
LOCK:对数据库的特定部分进行锁定注意事项:

SQL 语言大小写不敏感。 SQL 可以写在一行或者多行 关键字不能被缩写也不能分行 各子句一般要分行写。 使用缩进提高语句的可读性。

{

insert into users (id,user_name) values(1,’userName’ )

delete from users where id=1;

update users set user_name = ‘userName’,age=12 where id = 1

select id,user_name from users;

}

Select语句:

sql中的语句中数据类型分为:

number数值型:1,2,34,即数字

char,varchar2字符型:’a ‘,单引号表示

data日期型:sysdate,日期型一般转换成某种字符形式表示

to_char(sysdate,’yyyy-mm-dd’)

空值:

空值是无效的,未指定的,未知的或不可预知的值。

包含空值的数学表达式,其值也是空值。

列的别名:

列名之后 添加别名 (默认均大写),也可以 as 别名。也可以使用双引号来显式别名。

select employee_id as id,salary “工资”

from employees;

连接符:||

把列与列,列与字符连接在一起。

select last_name||’的工资是’||salary as info

from employees;

字符串

字符串:单引号表示

字符串可以是 SELECT 列表中的一个字符,数字,日期。日期和字符只能在单引号中出现。每当返回一行时,字符串被输出一次。

删除重复行(去重):

使用关键字 distinct

select distinct department_id

from employees

显示表结构

describe table

过滤:

SELECT *|{[DISTINCT] column| expression [alias],…}FROM table[WHERE condition(s)];

SELECT *

FROM employees WHERE department_id = 90 ;

字符和日期要包含在单引号中。字符大小写敏感,日期格式敏感。默认的日期格式是 DD-MON月-RR。

SELECT *

FROM employeesWHERE last_name = ‘Whalen’;

比较运算符:

= 等于【这里和java的==不同,另外sql中的赋值时:=】

= 大于等于

<= 小于等于

<> 不等于 也可以用 != 表示

其他比较运算符:

between … and … 表示在两个值之间,左右都包含。

in( set ) 等于值列表中的一个

like 模糊查询

is null 空值

模糊查询中 sql下的通配符

%代表零个或多个字符,_代表一个字符

回避特殊符号的:使用转义符。escape

例如:将[%]转为[ \% ] 、[ _ ]转为[ \ _ ],然后再加上[ ESCAPE‘\’] 即可。

select job_id as “job”

from jobs

where job_id like ‘AD_%’ escape ‘\’;

逻辑运算符

and 逻辑并

or 逻辑或

not 逻辑否

SELECT employee_id, last_name, job_id, salary FROM employees WHERE salary >= 10000 OR job_id LIKE ‘%MAN%’;

SQL优先级1 算术运算符2 连接符3 比较符4 IS [NOT] NULL, LIKE, [NOT] IN5 [NOT] BETWEEN6 NOT 7 AND8 OR

排序

ORDER BY 子句排序 ASC(ascend): 升序 DESC(descend): 降序 ORDER BY 子句在SELECT语句的结尾。SELECT last_name, job_id, department_id, hire_dateFROM employeesORDER BY hire_date desc;

单行函数:

单行函数: 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以转换数据类型 可以嵌套 参数可以是一列或一个值各式:function _name [(arg1, arg2,…)]

通用,字符,数值,日期,转换

1字符函数:

大小写控制函数

lower( )

upper( )

initcap( )

字符控制函数:

concat( ) substr( ) length() instr() lpad() rpad() trim() replace()

实例:

CONCAT(‘Hello’, ‘World’) HelloWorldSUBSTR(‘HelloWorld’,1,5) Hello 5代表子串的长度。LENGTH(‘HelloWorld’) 10返回字符长度INSTR(‘HelloWorld’, ‘W’) 6返回w第一次出现的索引位置,sql默认从1开始,若无则返回0LPAD(salary,10,’‘) *24000 字符占10位,不足以左填充RPAD(salary, 10, ‘‘) 24000 不足以*右填充TRIM(‘H’ FROM ‘HelloWorld’) elloWord 以H分割 字符REPLACE(‘abcd’,’b’,’m’) amcd 以m替换b字符2 数字函数:

round() 四舍五入 round(45.296,2) 45.3

trunc ()截断trunc( 45.926,2) 45.2

mod()求余 mod(400,300) 100

日期:

Oracle 中的日期型数据实际包含两个数值 :日期和时间

sysdate 返回日期 时间 例如:2015/10/30 18:58:52

在日期上加上或减去一个数字结果仍为日期。两个日期相减返回日期之间相差的天数。日期不允许做加法运算,无意义

–两个日期可以相减,得到相差的天数。

select employee_id,trunc(sysdate - hire_date,1)

from employees;可以用数字除24来向日期中加上或减去天数。

转换函数:

显示转换与隐式转换

隐式转换:

实例:

select ‘12’ + 1,sysdate + ‘2’,sysdate + 1

from dual;

显示转换的四个函数及其示意图:

–字符型和日期型之间的转换

–日期型—>字符型

select employee_id,hire_date

from employees

where to_char(hire_date,’yyyy/mm/dd’) = ‘1997/01/30’;

–字符型—>日期型

select employee_id,hire_date

from employees

where hire_date = to_date(‘1997/01/30’,’yyyy/mm/dd’);

–字符型和数值型之间的转换

–数值型—>字符型

select to_char(12345678.96,’999,999,999.99’) from dual;

select to_char(12345678.96,’000,000,000.00’) from dual; 位数不足以0补上

select to_char(12345678.96,’ 999,999,999.99)fromdual; 符表示美元

select to_char(12345678.96,’L999,999,999.99’) from dual;L表示本地系统的计量单位 人民币

字符转换成数值

select to _number(‘ 12,345,678.96, 999,999,999.99’) + 100 from dual;

select to _number(‘ 012,345,678.96, 000,000,000.00’) + 100 from dual;

通用函数:

这些函数适用于任何数据类型,同时也适用于空值:NVL (expr1, expr2) expr1 为空,则返回expr2的值

NVL2 (expr1, expr2, expr3) expr1为不为空,则返回expr2的值,为空,则返回expr3的值。NULLIF (expr1, expr2) expr1 与expr2相等,则返回null,不等则返回expr1

COALESCE (expr1, expr2, …, exprn) coalesca

coalesce 与 NVL 相比的优点在于 COALESCE 可以同时处理交替的多个值。如果第一个表达式为空,则返回下一个表达式,对其他的参数进行COALESCE

–练习2:输出last_name,department_id,当department_id为null时,显示‘没有部门’。

select last_name,nvl(to_char(department_id),’没有部门’)

from employees;

–练习:查询员工的奖金率,若为空,返回0.01,

–若不为空,返回实际奖金率+0.015

select employee_id,nvl2(commission_pct,commission_pct + 0.015,0.01)

from employees;

条件表达式:

decode() 与 case when then

select employee_id,department_id,case department_id when 10 then salary * 1.1

when 20 then salary * 1.2

when 30 then salary * 1.3

else salary * 1.4 end “new_sal”

from employees;

select employee_id,department_id,decode(department_id,10,salary * 1.1,

20,salary * 1.2,

30,salary * 1.3,

salary * 1.4) “new_sal”

from employees;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值