文章目录

  • 前言
  • 一、Sql语句基础
  • 二、Oracle中的主要的数据类型
  • 三、Sql语句分类
  • 四、SQL语句的书写规则
    • 注意
  • 五、运算符的优先级
  • 六、空值的使用
    • 知识点
    • 空值的运算表达式
  • 七、文本字符串的使用
  • 八、输出结果中列标题的默认显示
    • 1、Sql*plus的默认显示
    • 2、iSql*plus的默认显示
  • 九、Oracle中简单的创建表
    • 案例:新建表
  • 十、Oracle简单的删除表
    • 案例:删除表
  • 十一、Oracle中对表的简单查询操作
    • 案例一:查询表的数据
    • 案例二:查询表的结构
  • 十二、从表中查询部分字段
    • 案例:查询部分字段
  • 十三、对表中数据进行简单运算
    • 案例:数据进行简单运算
  • 十四、定义字段的别名
    • 知识点
    • 案例:起别名
  • 十五、字符串的连结操作符使用
    • 知识点
    • 案例一:简单合并运算
    • 案例二:字符数据运用及空值的运算
  • 十六、对表中数据进行修改
  • 十七、 对日期型数据进行加减运算
    • 案例一
    • 案例二
  • 十八、去除重复行
    • 知识点
    • 案例一:去除单列重复数据
    • 案例二:去除多列重复数据
  • 十九、限定所选择查询记录
    • 知识点
    • 案例一:注意单引号
    • 案例二:字符型数据
    • 案例三:日期型数据
    • 案例四:在查询条件中使用比较运算符
    • 案例五:逻辑运算符
  • 二十、对查询数据的排序
    • 知识点
    • 案例一:普通升降序
    • 案例二:按照多个字段进行排序
    • 案例三:使用字段的别名来进行排序
  • 总结

前言

此篇文章是我在B站学习时所做的笔记,主要对Oracle数据库部分SQL语句做了简单的介绍,文中的数据库为已建好的数据库,为方便演示用的。此篇文章仅供学习参考,禁止转载!


提示:以下是本篇文章正文内容,下面案例可供参考

一、Sql语句基础

  1. SQL被称为结构化查询语句
  2. SQL是操作和检索关系型数据库的标准语言
  3. 使用SQL语句,程序员和数据库管理员可以完成如下的任务:

二、Oracle中的主要的数据类型

三、Sql语句分类

四、SQL语句的书写规则

  1. 在Oracle数据库中,Sql语句大小写不敏感
  2. Sql语句可单行或多行书写
  3. 在Sql语句中,关键字不能跨多行或缩写
  4. 为了提高可读性,一般关键字大写,其他小写
  5. 子句通常位于独立行,便于编辑,提高可读性
  6. 空格和缩进使程序易读

注意

SQL语句是不区分大小写的,包括登录的用户名,密码都是不区分大小写的,且要注意输入的符号要英文半角格式。

SeLEcT * FrOm A_CHENS;
--等价于
SELECT * FROM A_CHENS;

五、运算符的优先级

  1. 乘法和除法的优先级高于加法和减法
  2. 同级运算的顺序是从左到右
  3. 表达式中使用括号可强行改变优先级的运算顺序

六、空值的使用

知识点

  1. 空值是指不可用、未分配的值
  2. 空值不等于零或空格
  3. 任意类型都可以支持空值

空值的运算表达式

  1. 包括空值的任何算术表达式都等于空
  2. 包括空值的连接表达式等于与空字符串连接,也就是原来的字符串

七、文本字符串的使用

  1. 文本字符串是一个包括在SELECT查询列表中的字符,表达式,或数字
  2. 日期和字符型文本字符串必须用单引号扩起来(例如:十五、案例二)
  3. 每返回一条记录文本字符串被显示一次

八、输出结果中列标题的默认显示

1、Sql*plus的默认显示

  • Date和character型数据左对齐
  • Numeric型数据右对齐
  • 列标题默认显示为大写(如:EMPNO,ENAME,JOB…)

2、iSql*plus的默认显示

  • 列标题缺省居中对齐
  • 列标题默认显示为大写

摘自B站

九、Oracle中简单的创建表

案例:新建表

CREATE TABLE A_CHENS (ID       NUMBER(4)  PRIMARY KEY,NAME     VARCHAR(10),SEX      CHAR(2),ADDR     VARCHAR2(20),BIRTHDAY DATE,SAL      NUMBER(8,2)
);

注意:

  1. 每个字段后面必须加分号。
  2. 表里边就是一个一个的字段。

步骤一:点击选择“My objects”

步骤二:点击左上角“File-New-SQL Window”


步骤三:在弹出的SQL Window窗口中输入sql建表语句,选中所有语句,点击左上角齿轮运行


步骤四:点击Tables,右键refresh刷新一下,找到新建的表CHENS,右键点击“Edit data”可查看表内容。


十、Oracle简单的删除表

案例:删除表

DROP TABLE A_CHENS;

步骤:在SQL Window窗口中输入删除语句,选中所有语句,点击左上角齿轮运行,即可删除。

删除前

删除后

十一、Oracle中对表的简单查询操作

案例一:查询表的数据

SELECT * FROM A_CHENS;

步骤:在SQL Window窗口中输入查询语句,选中所有语句,点击左上角齿轮运行,即可显示结果。


案例二:查询表的结构

注意:只能在命令行的模式下使用

DESC A_CHENS;

步骤一:点击左上角“File-New-Command Window”。

步骤二:在弹出的Command Window窗口中输入查询语句,即可得到结果。

十二、从表中查询部分字段

原表数据:

案例:查询部分字段

注意:此表A_CJJ_3为已建好表

--SELECT 语句的使用
--从表中查询部分的字段
SELECT CHENGJI,XUENIAN,XINGMING,KEMU
FROM A_CJJ_3;

步骤:在SQL Window窗口中输入需查询部分字段的语句,选中所有语句,点击左上角齿轮运行,即可得结果。

十三、对表中数据进行简单运算

案例:数据进行简单运算

--在查询过程中,对于数值型的数据,可以执行+,-,*,/运算
SELECT CHENGJI,CHENGJI*2,XUENIAN,XINGMING,KEMU
FROM A_CJJ_3;

步骤:在SQL Window窗口中输入需运算的语句,选中所有语句,点击左上角齿轮运行,即可得结果。

十四、定义字段的别名

知识点

  1. 改变列的标题头
  2. 用于表示计算结果的含义
  3. 作为列的别名
  4. 如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都需加双引号

注意:如果字符型写小写不加双引号,会强制输出大写表名,若需保持大小写或小写,则需加双引号。

案例:起别名

--可以给查询字段起别名,有不同的方式,可以不用"",也可以不用"",可以用As(as),也可以不用As
SELECT CHENGJI "ChengJi",CHENGJI*2 两倍成绩,XUENIAN "学年",XINGMING as 姓名,KEMU As 科目,PINGSHIFEN psf
FROM A_CJJ_4;

步骤:在SQL Window窗口中输入命名语句,选中所有语句,点击左上角齿轮运行,即可得结果。

十五、字符串的连结操作符使用

知识点

  1. 将列或字符与其它列连结
  2. 用双竖线表示(||)
  3. 产生的结果列是另一个字符表达式

案例一:简单合并运算

  • 用 || 可以将两列或多列查询结果合并到一起
--用||可以将两列或多列查询结果合并到一起
SELECT XUENIAN "学年",XINGMING as 姓名,XINGMING||XUEHAO 学生信息,XUEHAO AS 学号
FROM A_CJJ_4;

(注意:此处的表A_CJJ_4是已建好的)

结果

案例二:字符数据运用及空值的运算

  • 在连接表达式中出现字符数据,字符型的数据必须要使用单引号’ ’
  • 在连接表达式中出现null,就是原来的字符型数据,即原来是null,现在还是null类型
--在连接表达式中出现字符数据,字符型的数据必须要使用单引号''
--在连接表达式中出现null,就是原来的字符型数据,即原来是null,现在还是null类型
SELECT XUENIAN 学年,XINGMING 姓名,XINGMING||'的平时分是'||PINGSHIFEN "学生信息1",PINGSHIFEN 平时分
FROM A_CJJ_4;

结果:

十六、对表中数据进行修改

SELECT *
FROM A_CJJ_4
FOR UPDATE;

十七、 对日期型数据进行加减运算

案例一

  • 对于日期型的数据可以使用+,-运算符
  • 1个日期 ±1个数值(就是±1个天数)=1个新的日期
--对于日期型的数据可以使用+,-运算符
--1.一个日期 +— 一个数值(就是+-一个天数)=一个新的日期
SELECT NAME,ADDR 地址,BIRTHDAY "今天",(BIRTHDAY+7)"过七天"
FROM A_CHENS;

结果:

案例二

  • SYSDATE取得系统当前日期
  • 2个日期型的数据相减,得到的是两者之间相差的天数
  • 2个日期型的数据不能相加,日期型的数据不能进行乘除运算
--SYSDATE取得系统当前日期
--2.两个日期型的数据相减,得到的是两者之间相差的天数
--2个日期型的数据不能相加,日期型的数据不能进行乘除运算
SELECT NAME,ADDR 地址,BIRTHDAY "今天",(SYSDATE-BIRTHDAY)已存活天数
FROM A_CHENS;

结果:

十八、去除重复行

知识点

  • 缺省情况下查询显示所有行,包括重复行,使用DISTINCT关键字可从查询结果中清除重复行
  • DISTINCT的作用范围是后面所有宇段的组合

查看表A_CHENS的原始数据

SELECT * FROM A_CHENS;

结果:

案例一:去除单列重复数据

--去除单列重复数据
SELECT DISTINCT NAME
FROM A_CHENS;

结果:

案例二:去除多列重复数据

--去除多列重复数据
SELECT DISTINCT ADDR,BIRTHDAY
FROM A_CHENS;

结果:

十九、限定所选择查询记录

知识点

1、Where中的字符串日期值

  • 字符串和日期要用单引号扩起来
  • 字符串是大小写敏感的,日期值是格式敏感的
  • 缺省的日期格式是’DD-MON-YY’

2、使用BETWEEN运算符

  • 使用BETWEEN运算符显示某一值域范围的记录

3、使用IN运算符

  • 使用IN运算符获得匹配列表值的记录

4、使用LIKE运算符

  • 使用LIKE运算符执行通配查询
  • 查询条件可包含文字字符或数字
    (%)可表示零或多个字符
    (_)可表示一个字符

5、使用IS NULL运算符

  • 查询包含空值的记录

案例一:注意单引号

  • 对于字符型的数据和日期型的数据必须使用单引号’ ’

正确:

--使用WHERE子句对数据进行过滤
--对于字符型的数据和日期型的数据必须使用单引号''
SELECT *
FROM A_CHENS
WHERE NAME='陈一';

结果:


错误语句:

SELECT *
FROM A_CHENS
WHERE PASSWORD=chengyi;

结果:

案例二:字符型数据

  • 字符型的数据对大小写是敏感的

正确:

--字符型的数据对大小写是敏感的
SELECT *
FROM A_CHENS
WHERE PASSWORD='chenyi';

结果:


例子:

SELECT *
FROM A_CHENS
WHERE PASSWORD='CHENGYI';

结果:

案例三:日期型数据

正确:

--对日期型数据,格式是敏感的,使用日期型数据的格式是DD-MM-YYY(日-月-年)
SELECT *
FROM A_CHENS
WHERE BIRTHDAY='20-7月-2001';

结果:

错误一: 输入日期型格式不对

--对日期型数据,格式是敏感的,使用日期型数据的格式是DD-MM-YYY(日-月-年)
SELECT *
FROM A_CHENS
WHERE BIRTHDAY='2001-7-20';

结果:

错误二: 由于系统设置中文的编码格式,缺少“月”字

--对日期型数据,格式是敏感的,使用日期型数据的格式是DD-MM-YYY(日-月-年)
SELECT *
FROM A_CHENS
WHERE BIRTHDAY='20-7-2001';

结果:

案例四:在查询条件中使用比较运算符

where中的比较运算符

运算符 含义
= 等于
> 大于
>= 大于等于
< 小于
<= 小于等于
<> 或 != 不等于
--在查询条件中使用其他的比较运算符
SELECT *
FROM A_CJJ_4
WHERE CHENGJI >=80;SELECT *
FROM A_CJJ_4
WHERE CHENGJI !=90;
--等价于
SELECT *
FROM A_CJJ_4
WHERE CHENGJI <>90;

其他的比较运算符

运算符 含义
BETWEEN…AND… 在两值之间(包含)
IN(list) 匹配列出的值
LIKE 匹配一个字符模式
IS NULL 是空值
--使用BETWEEN...AND
SELECT *
FROM A_CJJ_4
WHERE CHENGJI BETWEEN 80 AND 100;
--等价于
--在Oracle中用AND来执行&&的功能
SELECT *
FROM A_CJJ_4
WHERE CHENGJI >=80 AND CHENGJI<=100;
------------------------------------------------
--使用IN子查询学科为数学和java的同学的全部信息
SELECT *
FROM A_CJJ_4
WHERE KEMU IN ('数学','java');
------------------------------------------------
--在Oracle中用OR来执行||的功能
SELECT *
FROM A_CJJ_4
WHERE KEMU='java' OR KEMU='英语';
------------------------------------------------
--LIKE用于字符型数据的查询,可以执行模糊查询
-- % 表示0个或多个字符
SELECT *
FROM A_CJJ_4
WHERE KEMU LIKE'%A%';SELECT *
FROM A_CJJ_4
WHERE KEMU LIKE'A%';-- _表示一个字符
SELECT *
FROM A_CJJ_4
WHERE KEMU LIKE'_A%';
----------------------------------------
--转义字符的使用,输出数据中含有%的信息
SELECT *
FROM A_CJJ_4
WHERE NAME LIKE '%\%%' ESCAPE '\';
----------------------------------------
--对于空值,要使用IS NULL进行比较
SELECT *
FROM A_CHENS
WHERE PASSWORD IS NULL;

案例五:逻辑运算符

运算符 含义
AND && 如果组合的条件都是TRUE,返回TRUE
OR || 如果组合的条件之一是TRUE,返回TRUE
NOT ! 如果下面的条件是FALSE,返回TRUE
--使用NOT运算符SELECT *
FROM A_CJJ_4
WHERE CHENGJI NOT BETWEEN 80 AND 100;
--等价于
SELECT *
FROM A_CJJ_4
WHERE CHENGJI <80 OR CHENGJI>100;
--------------------------------------------
SELECT *
FROM A_CJJ_4
WHERE KEMU NOT IN ('数学','java');
--等价于
SELECT *
FROM A_CJJ_4
WHERE KEMU != '数学' AND KEMU != 'java';
--------------------------------------------
SELECT *
FROM A_CHENS
WHERE PASSWORD IS NOT NULL;

优先级规则

次序 运算符
1 所有的比较运算
2 NOT
3 AND
4 OR

(注意:括号将跨越所有优先级规则)

--NOT AND OR的运算顺序
SELECT *
FROM A_CHENS
WHERE NAME='陈一' AND PASSWORD='chenyi';--admin' OR 'x'='x
--SQL注入攻击
SELECT *
FROM A_CHENS
WHERE NAME='陈一' OR ('X'='X' AND PASSWORD='chenyi');
--  = WHERE NAME='陈一' OR 'X'='X' AND PASSWORD='chenyi';

二十、对查询数据的排序

知识点

  • 使用ORDER BY子句将记录排序
    ASC:升序,缺省
    DESC:降序
  • ORDER BY子句出现在SELECT语句的最后
  • 使用列的别名排序

案例一:普通升降序

--对查询后的数据进行排序,使用ORDER BY子句
SELECT *
FROM A_CJJ_4
WHERE CHENGJI>80
ORDER BY CHENGJI;--显示的时候默认的按照指定的字段升序排列
SELECT *
FROM A_CJJ_4
ORDER BY CHENGJI;
--用指定的字段显示的指定升序排序
SELECT *
FROM A_CJJ_4
ORDER BY CHENGJI ASC;
--------------------------------------------
--用指定的字段显示的指定降序排序
SELECT *
FROM A_CJJ_4
ORDER BY CHENGJI DESC;
---------------------------------------------

案例二:按照多个字段进行排序

--可以按照多个字段进行排序
--此处表示的是,先让CHENGJI按升序排序,PINGSHIFEG不管顺序,
--若CHENGJI有相同的,PINGSHIFEN再按升序排序
SELECT *
FROM A_CJJ_4
ORDER BY CHENGJI,PINGSHIFEN;

案例三:使用字段的别名来进行排序

--使用字段的别名来进行排序
SELECT XINGMING,KEMU,(CHENGJI*0.6+PINGSHIFEN*0.4)"总分"
FROM A_CJJ_4
ORDER BY "总分"

总结

在本章的一开始创建了最简单的表,对表有了一个基本的认识。对Sql语句也做了简单介绍,讲述了Sql的分类和Sql*Plus的基本特点,用一些例子描述了最简单的Select查询语句的基本用法,并在此基础上进行了语句扩充,增加了Where子句以便能够执行带有限制条件的查询,增加了Order By子句以便对查询出的数据进行排序显示。


如若侵权,请及时与我联系。
此篇文章仅供学习参考,禁止转载!

Oracle简单SQL语句(详细!!!)相关推荐

  1. Oracle数据库sql语句练习【emp和dept的连表查询由浅入深】

    Oracle SQL语句练习题 一.表的介绍 Oracle中有几个原始的表,我们可以以其中的三个表为例,来学习一下Oracle中SQL语句的使用.先看下这几个表的结构: 雇员表(emp) 假设该表中的 ...

  2. Oracle 动态SQL语句

    Oracle 动态SQL语句     EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQLpackage包.  它解析并马上执行动态的SQL语句或非运行时创建的PL/SQL块 ...

  3. Mysql学习笔记(基础)基础sql语句详细记录

    数据库学习(基础) // 个人网课学习记录,如果有违规等问题,请联系我删除~ mysql下载安装( 解压版安装配置 下载版安装配置 ) 需求分析:使用cmd命令来创建一个数据库,并对数据库中得一张分类 ...

  4. oracle大于条件,oracle中sql语句中的in的条件数量大于1000有问题

    oracle中sql语句中的in的条件数量大于1000有问题 oracle中sql语句中select * from t_Test t where  t.Id in(1,2,3......)/*数量不能 ...

  5. oracle 生成 sql语句,Oracle使用SQL语句生成日历的实现方法

    Oracle使用SQL语句可以实现日历的功能,下面就为您详细介绍Oracle使用SQL语句生成日历的实现方法,希望对您能有所帮助. 1 要构造某年某月的日历,必须先知道这个月的开始时间,结束时间及天数 ...

  6. oracle命中率sql语句

    1 BUFFER命中率 也就是通常所说高速缓存的命中率,这个指标是指通过内存得到访问的数据和所有访问的数据之间的一个比例. 正常指标范围:     Buffer命中率正常的指标为:90%-100%,但 ...

  7. oracle+生成+sql语句,Oracle使用SQL语句生成日历的实现方法

    Oracle使用SQL语句可以实现日历的功能,下面就为您详细介绍Oracle使用SQL语句生成日历的实现方法,希望对您能有所帮助. 1 要构造某年某月的日历,必须先知道这个月的开始时间,结束时间及天数 ...

  8. oracle与sql语句

    oracle与sql语句 数据库基础 Oracle数据库安装及访问 Oracle相关操作 创建表空间与用户 创建表 Oracle数据类型 创建表 修改表 DML语句 INSERT语句 UPDATE语句 ...

  9. 软件创新实验室:MySQL数据库与简单SQL语句使用

    文章目录 前言 简介 特点 SQL DDL:操作数据库.表 DML:增删改表中数据 DQL:查询表中的记录 后记 拓展 范式 第一范式 1NF 第二范式 2NF 第三范式 3NF B+树 节点结构 插 ...

  10. oracle常用SQL语句(汇总版)

    原文地址:https://www.cnblogs.com/xrhou12326/p/4094737.html Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象 一.数据控制语 ...

最新文章

  1. LeetCode-字符串-反转字符串中的单词 II
  2. c++socket多个客户端通过不同端口与一个服务端通信_手写RPC,深入底层理解整个RPC通信...
  3. C语言试题四十一之请编写一个函数,用来删除字符串中的所有空格。
  4. C#LeetCode刷题之#551-学生出勤纪录 I​​​​​​​(Student Attendance Record I)
  5. activiti动态增加节点_支持动态系统用户,JumpServer 堡垒机 V1.5.7 发布
  6. 企业级 CI/CD 工具部署 Serverless 应用的落地实践
  7. 【转】SqlLite .Net 4.0 System.IO.FileLoadException”类型的未经处理的异常出现在XXX
  8. 抽奖随机算法的技术探讨与C#实现
  9. vs2017+配置工程的编译路径(输出目录和中间目录)
  10. 代码管理学:命名要准确
  11. 短信平台接口怎么选择?看这一篇就够了
  12. Eclipse+Java+Swing实现学校教材管理系统
  13. [入门向]标准测试用例模板
  14. 数据库:园林软件(综合类题库)
  15. 打印表格留标题怎么设置_表格怎么样设置打印出来有标题
  16. JAVA设计模式之桥接模式
  17. spark.reducer.maxReqsInFlight和spark.reducer.maxBlocksInFlightPerAddress
  18. AssertionError: Invalid device id
  19. altium designer 绘制pcb时如何检查漏线
  20. 召回率(Recall)

热门文章

  1. JavaScript打开新窗口的方法
  2. Microsoft Edge 浏览器如何打开Axure RP文件
  3. ViewStub详解
  4. 将OpenWRT安装到 X86 电脑硬盘中
  5. 2021《考研数学接力题典1800》勘误表(附学霸高分笔记)
  6. 一个实用的小工具——键盘映射KeyTweak
  7. 开始学习鸟哥的Linux私房菜-基础篇(第五章)
  8. 项目现场如何通过安防网络设备的EHOME协议,把设备接入EasyCVR平台上进行互联网直播及分发?
  9. HTML/CSS面试题(收集)
  10. fastjson笔记