当前位置: 首页 > news >正文

新网站建设公司/seo行业岗位

新网站建设公司,seo行业岗位,做网站是com还是cn好,南充网站建设114Oracle SQL(一) 重点 尽量避免select *,影响性能,不直观。 慎用Distinct,会排序,影响性能,用exists 排序尽量利用索引,索引有序 索引列不要加函数,会使索引失效 外连接:主表记录全显…

Oracle SQL(一)

重点

尽量避免select *,影响性能,不直观。

慎用Distinct,会排序,影响性能,用exists

排序尽量利用索引,索引有序

索引列不要加函数,会使索引失效

外连接:主表记录全显示,从表记录有则显示,无则留空

就用标准语法Count(*)

  1. Count(*)/Count(1)全量
  2. Count(字段)去Null值
  3. Count(null)恒为0

Exists和In:理论上,In先执行子查询,然后执行外层主查询;而Exists属于关联子查询,因此,首先执行外层查询,然后再执行子查询,直到找到第一个符合条件的匹配项,就不会再执行了,理论上会快一些

数据字典

物化视图

分页:RowNum

索引:覆盖索引,范围索引,前缀索引,最左前缀原则

22407651.jpg

位图索引:性别只有男和女两项,用位图索引很快

函数索引:普通索引列上使用函数,会导致不走索引。除非建立函数索引;

两表关联,关联字段类型不一致,会有隐式的类型转换

select * from employees where employee_id='xxx'

UNION 去重,UNION ALL,不去重

INTERSECT 取交集, MINUS 取差集

Union去除重复行,并且含排序,因此,效率低下,需要尽量避免的

ROLLUP

闪回:删数据删表可以找回,删数据库则不行

docker oracle

拉取镜像

git pull registry.saas.hand-china.com/tools/oracle-xe-11g:16.04

运行镜像

docker run -d -p 1521:1521 name

创建用户

navicat上连接数据库(默认服务名:xe,默认用户:system,默认密码:oracle)

创建用户名

create user usename identified by password [default tablespace tablename];

创建表空间

create tablespace tablename datafile 'd:\data.dbf' size 20m;

将空间分配给用户

alter user username default tablespace tablename;

给用户授权(加引号)

grant resource,connect,dba to "username";

DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。

RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。

CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。

增加WITH ADMIN OPTION选项,则得到的权限可以传递。

Oracle SQL入门视频

Select

对于数值和日期型字段,可以进行 “加减乘除"

一个数值与NULL进行四则运算,其结果是 NULL

列别名时加双引号锁定大小写,不加则转换成大写

字符串连接操作符: “||”

SELECT last_name ||' is a '||job_id AS "Employee Details"
FROM employees;

条件和排序

select distinct department_id from employees;--去重
--范围查询前面的值必须不大于后面的值,否则查询不到结果。同时注意between and是包含9000和4400的(>= <=)
where e.salary between 9000 and 4400;--无结果
where e.salary between 4400  and 9000;
where e.salary between 4400  and 4400;--有结果
where e.salary >=4400 and e.salary <=9000;
--只包含90,60而不是90到60的范围
where e.department_id in (90,60);where e.last_name like '_o%';--第二位是o,`_`是占用一位,`o`是多位
is not null;

% 代表 0 个或者多个 字符.
_ 代表一个单个字符

表中本身有通配符的怎么查询

使用ESCAPE 标识转义字符

--escape会定义转义字符
select * from t_char
where a like '%\%%' escape '\';select * from t_char
where a like '%K%%' escape 'K';

排序,按照字段别名排序,按照多字段排序

ORDER BY department_id DESC, salary DESC;

单行函数

单行函数分为五种类型:字符函数、数值函数、日期函数、转换函数、通用函数

字符函数

大小写控制函数

oracle数据库大小写敏感

select * from dual where dummy='x' --无结果
select * from dual where lower(dummy)='x' --有结果
select lower('Hello World') 转小写, upper('Hello World') 转大写 from dual;  
--initcap: 首字母大写  
select initcap('hello world') 首字符大写 from dual;--别名
select initcap('hello world') as 首字符大写 from dual;--别名

字符串操作函数

--字符控制函数  
-- concat: 字符连接函数, 等同于  ||  
select concat('i am',' dengyouquan') from dual;
--从第三位开始截取全部
select substr('HelloWorld',3) from dual;  
--从第3位开始截取4位 lloW
select substr('HelloWorld',3,4) from dual;  
--length和lengthb: 字符数和字节数  
select length('中国') 字符数, lengthb('中国') 字节数  from dual;  
--instr:在母串中,查找子串的位置  
select instr('HelloWorld','llo') from dual;  
--lpad,rpad: 左右填充,将abcd用*填充到10位  
select lpad('abcd',10,'*') 左填充, rpad('abcd',10,'*') 右填充 from dual;  
--trim: 去掉字符串前后指定的字符 大小写敏感 HelloWorld
select trim('D' from 'DHelloWorld') from dual;  
--去除前后空格
select trim(' Hello World') from dual;
--replace:字符串替换函数  
select replace('HelloWorld','l','*') from dual;  

46566784.jpg

数值函数

select round(1.234,2) 四舍五入, trunc(1.234,2)  截断 ,mod(1234,324) 求余 from dual;  
--ROUND函数  
select round(4311.234,0) 整数位, round(34211.234,-1) 十位,round(23411.234,-2) 百位 from dual;

日期函数

to_date("要转换的字符串","转换的格式") 两个参数的格式必须匹配:字符串->日期

to_char(日期,"转换格式" ) 即把给定的日期按照“转换格式”转换:日期->字符串

日期函数解释
months_between两个日期相差的月数
add_months在指定日期上加上若干个月
last_day指定日期的下一个日期
next_day本月最后一天
round日期四舍五入
trunc日期截断
--显示当前日期  
select sysdate from dual;
--显示昨天,今天和明天,加减数字仍未日期  
select sysdate-1 昨天, sysdate 今天, sysdate+1 明天 from dual;  
--员工工龄
select sysdate-hire_date 天 from employees
--months_between:两个日期相差的月数  
select (sysdate-hire_date)/30 方式一, months_between(sysdate,hire_date) 方式二 from employees;  
--add_months:在指定日期上加上若干个月  
select add_months(sysdate,1)  下个月 from dual  
--last_day: 某个日期当月的最后一天  
select last_day(sysdate) from dual;  
--next_day:下周五  
select next_day(sysdate,'星期五') from dual;  
--对日期进行四舍五入  
select round(sysdate,'MONTH')  月,round(sysdate,'YEAR') from dual;
--对日期进行截断  
select trunc(sysdate,'MONTH')  月,trunc(sysdate,'YEAR') from dual;  
--日期格式  
select * from employees where hire_date=to_date('1982-01-23','yyyy-mm-dd');  
-- 查询当前日期:显示:  2011-09-17 15:12:15今天是星期六  
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss"今天是"day') from dual;
格式解释显示
yytwo digits 两位年显示值:07
yyythree digits 三位年显示值:007
yyyyfour digits 四位年显示值:2007
mm两位月显示值:11
monabbreviated 字符集表示显示值:11月,若是英文版,显示nov
monthspelled out 字符集表示显示值:11月,若是英文版,显示november
ddnumber 当月第几天显示值:02
dddnumber 当年第几天显示值:02
dyabbreviated 当周第几天简写显示值:星期五,若是英文版,显示fri
dayspelled out 当周第几天全写显示值:星期五,若是英文版,显示friday
hhtwo digits 12小时进制显示值:01
hh24two digits 24小时进制显示值:13
mitwo digits 60进制显示值:45
sstwo digits 60进制显示值:25
Qdigit 季度显示值:4
WWdigit 当年第几周显示值:44
Wdigit 当月第几周显示值:1

41557889.jpg

通用函数

函数用途
NVL (expr1, expr2)如果expr1为空,这返回expr2
NVL2 (expr1, expr2, expr3)如果expr1为空,这返回expr3(第2个结果)否则返回expr2
NULLIF (expr1, expr2)如果expr1和expr2相等,则返回空
COALESCE (expr1, expr2, ..., exprn)依次考察各参数表达式,遇到非 null 值即停止并返回该值。
--nvl(exp1,exp2):当exp1为空时,返回exp2  
--nvl2(exp1,exp2,exp3):当exp1为空时,返回exp3;否则返回exp2  
select ename,sal*12+nvl2(comm,comm,0) 年收入 from employees;  
--NULLIF (expr1, expr2),如果expr1=expr2,返回null;否则,返回expr1  
select nullif('abc','abc') from dual;  
select nullif('abc','abcaa') from dual;  
--COALESCE :找到参数列表中,第一个不为空的值  
select ename,comm,sal,COALESCE(comm,sal) from employees;  

转换函数

函数含义
to_char(列日期,格式)
日期 to_date(列字符串,格式)
数字 to_number(列字符串)

使用货币格式化显示。

--9代表占位符,如果位数少于前面的数字,都会显示#
--L代表本地货币符号

alter session set NLS_CURRENCY = ' ¥';select to_char(4122341,'L9,999,999.00') from dual;select to_number('$1,324','$9,999') from dual;--能转换成数字1324 后面长度要长于前面长度,否则有问题

84831161.jpg

当比较字符型和数值型的值时,oracle会把字符型的值隐式转换为数值型。

当比较字符型和日期型的数据时,oracle会把字符型隐式转换为日期型。

连接时(||),一般是把数值型隐式转换为字符型,日期型隐式转换为字符型

数据类型优先级为:Number>字符类型>日期类型

隐式转换发生在字段列上时将使索引失效。

双引号的作用是:示意Oracle将严格区分大小写,否则Oracl都默认大写。

单引号:这个加了单引号的字段是一个字类似字符串,并不区分大小写。

转载于:https://www.cnblogs.com/sufferingStriver/p/9403451.html

http://www.lbrq.cn/news/1456849.html

相关文章:

  • 中国搜索提交网站/百度企业认证怎么认证
  • 美工做网站尺寸多少/拉新app推广平台
  • 陕西政府门户网站建设 招标信息/免费的域名和网站
  • 地方门户网站的出路/整合营销是什么
  • 网站后期维护/谷歌关键词
  • 网站建设预算申请表/深圳网络营销推广培训
  • 个人备案网站名称怎么写/网络推广营销策划方案
  • 未来中森网站建设公司/电商平台有哪些?
  • 商丘做网站公司/宣传推广方案范文
  • 肇庆做网站gdmkd/seo咨询岳阳
  • 沁阳网站建设/汕头企业网络推广
  • 如何建设一个简易网站/天津网站优化软件
  • 柳州做网站那家好/交换友情链接的要求有
  • 如何做滴滴网站平台/房管局备案查询网站
  • 重庆疫情最新政策/天津搜狗seo推广
  • 电脑做网站服务器需要什么/新品上市怎么推广词
  • 正规品牌网站设计推荐/免费行情软件网站大全
  • 优惠券网站制作教程/百度电话客服
  • 服装网站的建设策划/排名点击软件怎样
  • matlab代做网站/网站推广策划
  • 空间网站/关键词提取
  • 网页设计个人/合肥seo网站排名优化公司
  • 免费物业网站模板/北京疫情发布不再公布各区数据
  • vs2015做网站如何添加控件/百度手机怎么刷排名多少钱
  • 自己做动漫 哪个网站赚钱/百度推广app
  • 微信公众号配置 网站建设/域名注册平台
  • 响应式网站开发报价/整合营销案例
  • 公司要招个做网站的人/推广平台的方法
  • 宁波网站seo公司/百度指数批量查询
  • 培训网站模板免费/苏州搜索引擎优化
  • Web 开发 12
  • 《 ThreadLocal 工作机制深度解析:高并发场景的利与弊》
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | TodoList(代办事项组件)
  • 曼哈顿距离与切比雪夫距离
  • 【数据结构初阶】--排序(二)--直接选择排序,堆排序
  • 轻量级鼠标右键增强工具 MousePlus