文章目录
前言一、Sql语句基础二、Oracle中的主要的数据类型三、Sql语句分类四、SQL语句的书写规则注意
五、运算符的优先级六、空值的使用知识点空值的运算表达式
七、文本字符串的使用八、输出结果中列标题的默认显示1、Sql*plus的默认显示2、iSql*plus的默认显示
九、Oracle中简单的创建表案例:新建表
十、Oracle简单的删除表案例:删除表
十一、Oracle中对表的简单查询操作案例一:查询表的数据案例二:查询表的结构
十二、从表中查询部分字段案例:查询部分字段
十三、对表中数据进行简单运算案例:数据进行简单运算
十四、定义字段的别名知识点案例:起别名
十五、字符串的连结操作符使用知识点案例一:简单合并运算案例二:字符数据运用及空值的运算
十六、对表中数据进行修改十七、 对日期型数据进行加减运算案例一案例二
十八、去除重复行知识点案例一:去除单列重复数据案例二:去除多列重复数据
十九、限定所选择查询记录知识点案例一:注意单引号案例二:字符型数据案例三:日期型数据案例四:在查询条件中使用比较运算符案例五:逻辑运算符
二十、对查询数据的排序知识点案例一:普通升降序案例二:按照多个字段进行排序案例三:使用字段的别名来进行排序
总结
前言
此篇文章是我在B站学习时所做的笔记,主要对Oracle数据库部分SQL语句做了简单的介绍,文中的数据库为已建好的数据库,为方便演示用的。此篇文章仅供学习参考,禁止转载!
提示:以下是本篇文章正文内容,下面案例可供参考
一、Sql语句基础
SQL被称为结构化查询语句SQL是操作和检索关系型数据库的标准语言使用SQL语句,程序员和数据库管理员可以完成如下的任务:
二、Oracle中的主要的数据类型
三、Sql语句分类
四、SQL语句的书写规则
在Oracle数据库中,Sql语句大小写不敏感Sql语句可单行或多行书写在Sql语句中,关键字不能跨多行或缩写为了提高可读性,一般关键字大写,其他小写子句通常位于独立行,便于编辑,提高可读性空格和缩进使程序易读
注意
SQL语句是不区分大小写的,包括登录的用户名,密码都是不区分大小写的,且要注意输入的符号要英文半角格式。
SeLEcT * FrOm A_CHENS;
--等价于
SELECT * FROM A_CHENS;
五、运算符的优先级
乘法和除法的优先级高于加法和减法同级运算的顺序是从左到右表达式中使用括号可强行改变优先级的运算顺序
六、空值的使用
知识点
空值是指不可用、未分配的值空值不等于零或空格任意类型都可以支持空值
空值的运算表达式
包括空值的任何算术表达式都等于空包括空值的连接表达式等于与空字符串连接,也就是原来的字符串
七、文本字符串的使用
文本字符串是一个包括在SELECT查询列表中的字符,表达式,或数字日期和字符型文本字符串必须用单引号扩起来(例如:十五、案例二)每返回一条记录文本字符串被显示一次
八、输出结果中列标题的默认显示
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)
);
注意:
每个字段后面必须加分号。表里边就是一个一个的字段。
步骤一:点击选择“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窗口中输入需运算的语句,选中所有语句,点击左上角齿轮运行,即可得结果。
十四、定义字段的别名
知识点
改变列的标题头用于表示计算结果的含义作为列的别名如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都需加双引号
注意:如果字符型写小写不加双引号,会强制输出大写表名,若需保持大小写或小写,则需加双引号。
案例:起别名
--可以给查询字段起别名,有不同的方式,可以不用"",也可以不用"",可以用As(as),也可以不用As
SELECT CHENGJI "ChengJi",CHENGJI*2 两倍成绩,XUENIAN "学年",XINGMING as 姓名,KEMU As 科目,PINGSHIFEN psf
FROM A_CJJ_4;
步骤:在SQL Window窗口中输入命名语句,选中所有语句,点击左上角齿轮运行,即可得结果。
十五、字符串的连结操作符使用
知识点
将列或字符与其它列连结用双竖线表示(||)产生的结果列是另一个字符表达式
案例一:简单合并运算
用 || 可以将两列或多列查询结果合并到一起
--用||可以将两列或多列查询结果合并到一起
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,返回TRUEOR ||如果组合的条件之一是TRUE,返回TRUENOT !如果下面的条件是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所有的比较运算2NOT3AND4OR
(注意:括号将跨越所有优先级规则)
--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子句以便对查询出的数据进行排序显示。
如若侵权,请及时与我联系。 此篇文章仅供学习参考,禁止转载!