Oracle常用sql语句(一)

  • Sql的分类
    • DDL操作数据库表列等
      • 表基本的操作
      • 主键
      • 索引
      • 视图
    • 常用数据类型
      • 字符串类型
      • 数字类型
      • 日期类型
      • LOB类型
      • LONG类型
      • 数据转换
        • character date
        • numbercharacter
      • 通用函数
      • 条件表达式

Sql的分类


DDL (Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等; CREATE、 ALTER、DROP
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据); INSERT、 UPDATE、 DELETE
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
SELECT
*注意:sql语句以 ; 结尾
这些都是数据库的SQL的基础知识(也是常识),一定要记住。

DDL:操作数据库、表、列等


使用的关键字:CREATEALTERDROP

表基本的操作

  • 创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

根据已有的表创建新表:

select * into table_new from table_old (使用旧表创建新表)

create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle>

  • 删除表

drop table tablename

  • 修改表

rename 旧表名 to 新表名 修改表名

alert table tabname rename column oldColumn to newColumn 修改列名

alter table tabname add column col type 添加一列

alter table tabname drop column colname 删除一列

alter table tabname modify( ) 修改表中列的值

主键

添加主键:

Alter table tabname add primary key(col)

删除主键:
Alter table tabname drop primary key(col)

索引

创建索引:

create [unique] index idxname on tabname(col….)

删除索引:

drop index idxname

注:索引是不可更改的,想更改必须删除重新建。

视图

创建视图:

create view viewname as select statement

删除视图:

drop view viewname

常用数据类型

字符串类型

CHAR类型 CHAR(size [BYTE | CHAR])

  CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。

VARCHAR类型

  不要使用VARCHAR数据类型。使用VARCHAR2数据类型。虽然VARCHAR数据类型目前是VARCHAR2的同义词,VARCHAR数据类型将计划被重新定义为一个单独的数据类型用于可变长度的字符串相比,具有不同的比较语义。

* VARCHAR2类型*

  变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。

NVARCHAR2类型

  这是一个包含UNICODE格式数据的变长字符串。 NVARCHAR2最多可以存储4,000字节的信息。


函数:


这里写图片描述

  • 连接符||及CONCAT函数

可以连接两个列名或者常量。

注:如果姓名为中文还好,但是如果是英文的,这样连接会导致读起来比较困难,所以可以在中间加上常量“空格”;CONCAT函数符合ANSI SQL标准,所以适合更多不同的数据库,||是Oracle专有的,使用起来更简洁。

  • 格式统一:RPAD和LPAD

RPAD允许在列的右边填充一组字符,填充的字符可以为任何字符。LPAD从左边添加。

使用方式:

RPAD(string,length[,’set’])

LPAD(string,length[,’set’])

这里的string是数据库中的字符串列或常量,length是填充后的长度,set是用来填充的字符串。如果方括号中的内容省略了,会默认使用空格填充。

  • 修剪:LTRIM,RTRIM,TRIM

LTRIM和RTRIM从串的左边或右边删除不需要的字符。

使用方式:

RTRIM(string[,’set’])

LTRIM(string[,’set’])

如果没有设置要删除的值,默认删除空格。

  • 大小写转换:LOWER、UPPER和INITCAP

LOWER把串或列种的任意字母转换为小写。

UPPER与LOWER相反。

INITCAP将串或列中每个单词的首字母转换成大写。

它们经常一起使用。

使用格式:

LOWER(string)

UPPER(string)

INITCAP(string)

  • 子串:SUBSTR

使用SUBSTR函数可以提取出串的一部分。

使用格式:

SUBSTR(string,start[,count])

这个函数告诉Oracle提取string的一个子串,从start位置开始,长度为count个字符。如果不指定count,将从start开始一直到这个串结束。

  • 索引位置:INSTR

INSTR可以告诉你要搜索的字符(串)在串种的位置。

使用格式:

INSTR(string,set[,start[,occurrence]])

string为要寻找的列或常量;set为要指定的要寻找的值;start可选,默认为从串的第一个位置开始搜索;occurrence可选,为指定字符串出现的第occurrence次的位置。

  • like

    查询含下划线的名字

SELECT * FROM emp
where ename LIKE '%/_%'  escape '/';

数字类型

NUMBER类型

  NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10^130~10^126(不包含此值),需要1~22字节(BYTE)不等的存储空间。

  P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字

  S是Scale的英文缩写,可以使用的范围为-84~127。Scale为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数

INTEGER类型

  INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。

浮点数

BINARY_FLOAT

  BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少6位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节。

BINARY_DOUBLE

  BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节。

  在数字的列中,浮点数有小数精度。在 BINARY_FLOAT 或 BINARY_DOUBLE 的列中,浮点数有二进制的精度。二进制浮点数支持的特殊值无穷大和 NaN (不是数字)。

FLOAT类型

  FLOAT类型也是NUMBER的子类型。

  Float(n),数 n 指示位的精度,可以存储的值的数目。N 值的范围可以从 1 到 126。若要从二进制转换为十进制的精度,请将 n 乘以 0.30103。要从十进制转换为二进制的精度,请用 3.32193 乘小数精度。126 位二进制精度的最大值是大约相当于 38 位小数精度。


函数:


函数说明
ROUND(date, fmt)四舍五入
TRUNC(date, fmt)截断
MOD(n1, n2)求余
CEIL(n)向上取整
FLOOR(n)向下取整
GREATEST(expr1, … exprn)返回参数中最大的数
LEAST(expr1, … exprn)返回参数中最小的数

随机数

SELECT TRUNC(dbms_random.value(a,b)) FROM dual

产生 [a,b)之间的数

日期类型

  日期类型用于存储日期数据,但是并不是使用一般的格式(2012-08-08)直接存储到数据库的。

DATE类型

  DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。

TIMESTAMP类型

  这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位

TIMESTAMP WITH TIME ZONE类型

  这是TIMESTAMP类型的变种,它包含了时区偏移量的值


函数:


函数说明
MONTHS_BETWEEN(date1, date2)两个日期相差的月数
ADD_MONTHS(date, int)向指定日期中加上若干月数
NEXT_DAY(date, ch)指定日期的下一个日期(从星期日和1开始计算)
LAST_DAY(date)本月的最后一天
ROUND(date, fmt)日期四舍五入 fmt的值(’YEAR’,’MONTH’)
TRUNC(date, fmt)日期截断 fmt的值(’YEAR’,’MONTH’)
EXTRACT(time_unit FROM date)从date中提取time_unit指定格式的日期数据

日期格式

格式说明举例
YYYY年份的数字格式全称2017
YEAR年的英文全称twenty seventeen
MM月份(数字格式)10
MONTH月得全称10月
DY星期几星期四
DAY星期几星期四
DD一个月的第几天05
HH12小时(12)1
HH24小时(24)13
MI分钟12
SS12
  • 当前时间
SELECT SYSDATE 
FROMdual;
SELECTSYSTIMESTAMP 
FROMdual;-- 精确到毫秒
SELECTTO_CHAR( SYSDATE, 'yyyy-mm-dd hh24:mi:ss' ) 
FROMdual;
-- 昨天 今天   明天
SELECT( SYSDATE - 1 ) 昨天,SYSDATE 今天,( SYSDATE + 1 ) 明天 
FROMdual;

修改日期格式
(默认格式为’DD-MON-RR’)

SELECT * FROM v$nls_parameters;

ALTER SESSION SET nls_date_format=’yyyy-mm-dd’;
– 改回默认
ALTER SESSION SET nls_date_format=’DD-MON-RR’;

LOB类型

  内置的LOB数据类型包括BLOB、CLOB、NCLOB、BFILE(外部存储)的大型化和非结构化数据,如文本、图像、视屏、空间数据存储。BLOB、CLOB、NCLOB类型

CLOB 数据类型

它存储单字节和多字节字符数据。支持固定宽度和可变宽度的字符集。CLOB对象可以存储最多 (4 gigabytes-1) * (database block size) 大小的字符

NCLOB 数据类型

它存储UNICODE类型的数据,支持固定宽度和可变宽度的字符集,NCLOB对象可以存储最多(4 gigabytes-1) * (database block size)大小的文本数据。

BLOB 数据类型

它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。BLOB对象最多存储(4 gigabytes-1) * (database block size)的二进制数据。

BFILE 数据类型

二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文件当二进制文件处理

LONG类型

  它存储变长字符串,最多达2G的字符数据(2GB是指2千兆字节, 而不是2千兆字符),与VARCHAR2 或CHAR 类型一样,存储在LONG 类型中的文本要进行字符集转换。ORACLE建议开发中使用CLOB替代LONG类型。支持LONG 列只是为了保证向后兼容性。CLOB类型比LONG类型的限制要少得多。 LONG类型的限制如下:

  • 一个表中只有一列可以为LONG型。

  • LONG列不能定义为主键或唯一约束,

  • 不能建立索引.

  • LONG数据不能指定正则表达式。

  • 函数或存储过程不能接受LONG数据类型的参数。

  • LONG列不能出现在WHERE子句或完整性约束(除了可能会出现NULL和NOT NULL约束)

数据转换

数据转换分为

  • 隐式转换 varchar《==》number oracle数据库自动转换

  • 显示转换 number《==》character《==》date

character 《==》 date

  • TO_CHAR(date[,fmt])

  • TO_DATE(ch[, fmt])

例:

SELECTTO_CHAR( SYSDATE, 'dy' ) 
FROMdual;

number《==》character

  • TO_CHAR(NUMBER[,fmt])

  • TO_NUMBER(expr[, fmt])

数字转换格式

格式说明
9数字
0
$美元符号
.小数点
,千位符

例子:

-- 查询员工的薪水:两位小数,千位符,本地货币
SELECTTO_CHAR( sal, 'L9,999.99' ) 
FROMemp;
-- ¥7,000.00

通用函数

函数说明
NVL(expr1, expr2)把列expr1的null值修改为expr2
NVL2(expr1, expr2, expr3)把列expr1的null值修改为expr2,不为null修改为expr3
NULLIF(expr1, expr2)判断expr1和expr2是否相等,相等返回null,反之返回expr2
COALESCE(expr1, … exprn)从左到右找到第一个不为null的值

条件表达式

通用的

CAST expr WHEN comparison_expr1 THEN return_expr1[WHEN comparison_expr1 THEN return_expr1ELSE else_expr]
END

例子

SELECTename,job,sal 涨前,
CASEjob WHEN '学生' THENsal + 100 WHEN '教师' THENsal + 800 ELSE sal + 50 END 张后 
FROMemp;

oracle自己的

DECODE(COLUMN,search, result [[,search, result]*, default]) oracle自己的

例子:

SELECTename,job,sal 涨前,DECODE( JOB, '学生', sal + 100, '教师', sal + 800, sal + 50 ) 张后 
FROM
emp;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Web API 实现客户端Basic(基本)认证 之简单实现

优点是逻辑简单明了、设置简单。 缺点显而易见&#xff0c;即使是BASE64后也是可见的明文&#xff0c;很容易被破解、非法利用&#xff0c;使用HTTPS是一个解决方案。 还有就是HTTP是无状态的&#xff0c;同一客户端每次都需要验证。 实现&#xff1a; 客户端在用户输入用户名及…

WPF|分享一个登录界面设计

分享一个登录界面&#xff0c;先看效果图&#xff1a;准备文中使用到了一些图标&#xff1a;我们可以从 iconfont[1]免费下载&#xff1a;代码简单说明请随手创建一个WPF项目&#xff08;.NET Framework、.NET 5\6\7皆可&#xff09;&#xff0c;使用tree /f命令看看最终的文件…

《零基础看得懂的C++入门教程 》——(6)自己动手写个函数

一、学习目标 了解C语言的自定义函数的使用方法了解C语言自定义函数的传参了解C语言自定义函数的返回值 目录 预备第一篇&#xff0c;使用软件介绍在这一篇&#xff0c;C与C使用的软件是一样的&#xff0c;查看这篇即可&#xff1a;《软件介绍》 想了解编译原理和学习方法点…

k8s mysql数据同步_K8s——MySQL实现数据持久化

1、搭建nfs存储[rootdocker-k8s01 ~]# yum -y install nfs-utils[rootdocker-k8s01 ~]# mkdir /nfsdata/mysql -p[rootdocker-k8s01 ~]# cat /etc/exports/nfsdata *(rw,sync,no_root_squash)[rootdocker-k8s01 ~]# systemctl restart nfs-server[rootdocker-k8s01 ~]# systemc…

【计算机图形学】实验:C#语言采用GDI+定义笔刷并填充图形完整实验操作流程

一、实验目的: 熟练掌握在.net环境下对笔刷的定义,并可用定义好的笔刷填充多边形。 二、实验准备: 学习在.net环境下GDI+所提供的5种笔刷类型,掌握定义笔刷的方法和填充图形的函数,如FillRectange ( )、FillEllipse ( )等。 三、实验内容: 在.net环境中设计一个窗体…

Android之提示Invalid Region.Op - only INTERSECT and DIFFERENCE are allowed

1 问题 02-28 22:44:33.031 7379 7379 E AndroidRuntime: java.lang.IllegalArgumentException: Invalid Region.Op - only INTERSECT and DIFFERENCE are allowed 02-28 22:44:33.031 7379 7379 E AndroidRuntime: at android.graphics.Canvas.checkValidClipOp(C…

使用Java API的5个技巧

本文介绍了一些关于Java API安全和性能方面的简单易用的技巧&#xff0c;其中包括保证API Key安全和开发Web Service方面中在框架方面选择的一些建议。 程序员都喜欢使用API&#xff01;例如为app应用构建API或作为微服务架构体系的一部分。当然&#xff0c;使用API的前提是能让…

管道模式 pipe

先放一个图&#xff0c;预则立嘛 PipelinePattern.rar 这里是 不完整的码转载于:https://www.cnblogs.com/ganmk--jy/p/5525897.html

《零基础看得懂的C++入门教程 》——(7)小数组玩起来

一、学习目标 了解数组的使用方法了解一维数组的使用方法了解一维数组与循环的使用方法 目录 预备第一篇&#xff0c;使用软件介绍在这一篇&#xff0c;C与C使用的软件是一样的&#xff0c;查看这篇即可&#xff1a;《软件介绍》 想了解编译原理和学习方法点这篇&#xff0c…

SSO 方案演进

1背景介绍 随着业务与技术的发展&#xff0c;现今比以往任何时候都更需要单点登录 SSO 身份验证。现在几乎每个网站都需要某种形式的身份验证才能访问其功能和内容。随着网站和服务数量的增加&#xff0c;集中登录系统已成为一种必要。在本文中&#xff0c;我们将讨论下 …

【计算机图形学】实验:VB.net环境下的图形裁剪完整实验操作流程

一、实验目的: 熟练掌握在.net环境下对图形的裁剪。 二、实验准备: 学习图形裁剪的基本算法,以及在.net环境下裁剪图形的基本方法。 三、实验内容: 在.net环境中利用裁剪图形的基本方法对任意图形进行裁剪。

UI之常用通过颜色值和透明度怎么得到最后的颜色值

1 、问题 UI给了颜色#000000&#xff0c;透明度是75%&#xff0c;我需要最终的颜色值。 2 、透明度色值表 00%FF&#xff08;不透明&#xff09; 5%F2 10%E5 15%D8 20%CC 25%BF 30%B2 35%A5 40%99 45%8c 50%7F 55%72 60%66 65%59 70%4c 75%3F 80%33 85%21 90%19 95%0c 100%00…

《零基础看得懂的C++入门教程 》——(8)搞定二维数组与循环嵌套

一、学习目标 了解二维数组的使用方法了解循环嵌套的使用方法 目录 预备第一篇&#xff0c;使用软件介绍在这一篇&#xff0c;C与C使用的软件是一样的&#xff0c;查看这篇即可&#xff1a;《软件介绍》 想了解编译原理和学习方法点这篇&#xff0c;学习方法和一些原理C与C都…

mybatis模糊查询不同写法

工作中用到&#xff0c;写三种用法吧&#xff0c;第四种为大小写匹配查询 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT(%, #{text}), %); 2. 使用 ${...} 代替 #{...} SELECT * FROM tableName WHERE name LIKE %${text}%; 3. 程序中拼接 Java …

常见的Ubuntu命令30条(一)

Ubuntu命令是指在Ubuntu操作系统中用于执行各种任务和操作的命令行指令。这些命令可以用于管理系统、配置网络、安装软件、浏览文件等。Ubuntu命令通常在终端&#xff08;Terminal&#xff09;应用程序中输入并执行。 在Ubuntu中&#xff0c;有许多常用的命令和指令。以下是一…

【计算机图形学】实验:C#.net环境下的图形变换完整实验操作流程

一、实验目的: 熟练掌握在.net环境下对图形的变换方法。 二、实验准备: 学习图形变换的基本算法,如平移、旋转、缩放等,以及在.net环境下变换图形的基本方法。 三、实验内容: 在.net环境中利用变换图形的基本方法对图形进行变换,包括平移、旋转、缩放、对称、复合变…

Android之给ImageView添加点击效果

1 问题 给ImageView添加点击效果 2 解决办法 1&#xff09;、新建selector.xml文件 <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item android:drawable&…

python基础知识纵览(下)

python函数 1.函数作用 最大化代码重用和最小化代码冗余流程的分解2.函数基本概念 def创建对象并赋值给某一变量## 创建一个函数对象并赋值给fn_namedef fn_name(args1,args2,...,argsN): <statements>复制代码def是可执行的代码## 通过if语句判断来做定义函数,def是实…

《零基础看得懂的C++入门教程 》——(9)结构体原来如此

一、学习目标 了解C语言的结构体的使用方法了解C语言结构体的结构的赋值了解多种C语言结构体变量的赋值方法和取值方法 目录 预备第一篇&#xff0c;使用软件介绍在这一篇&#xff0c;C与C使用的软件是一样的&#xff0c;查看这篇即可&#xff1a;《软件介绍》 想了解编译原…

微信小程序python token验证_微信小程序python 用户认证

按流程图来先通过wx.login()获取code,再通过我们后台配置的接口获取openid和session_key// 登录wx.login({success: res > {console.log(res)// 发送 res.code 到后台换取 openId, sessionKey, unionIdwx.request({url: api.GET_OPENID, //data: {js_code: res.code},succes…