ORACLE学习(一)

--简单查询

语法:SELECT 要查的属性。。。。

FROM 数据来源(从哪个表来查)

--查询emp中的员工编号

SELECT EMPNO FROM EMP;

--查询多个列 多个列之间用逗号隔开

SELECT EMPNO,ENAME,SAL FROM EMP;

注释:单行注释 --注释内容

多行注释 /* 注释内容 */

注释内容

/*--SDKFSFNSFSDFSDFS/ DFSDFSDFSDF

SHFGSDJFGHSFGSD

DFGKSFJKSDF

*/

--表示所有的列

SELECT * FROM EMP;

--数据类型

数值型:number 直接写

字符类型 : char/varchar2 '字符内容'

日期型: date date'年-月-日'

SELECT 123,234,'中国河南郑州',DATE'2022-7-18'

FROM DUAL; --万能表

--别名

表别名 语法: 表 表别名

列别名 语法: 列 列别名

列 as "列别名"

列别名的标准写法: 列 as "列别名" --用的比较少

SELECT EMPNO 员工编号,ENAME 姓名,SAL as "工资" FROM EMP;

--查询emp的每个列 每个列起一个别名

SELECT EMPNO 员工编号,ENAME 姓名,SAL 工资,JOB AS "职位", MGR AS "经理",HIREDATE AS "入职日期"

FROM EMP;

SELECT ENAME AAAA,ENAME ABC123,ENAME AS "123ABC",ENAME AS "@#$",ENAME AS "AbC" FROM EMP;

别名的注意事项:

as 只能使用在列别名上 表别名不能使用

别名以数字开头 包含特殊符号 区分大小写时 需要使用标准语法

别名的构成可以使用汉字 英文字母 英文字母+汉字

--查询emp中的姓名 经理 提成 显示列的中文含义

SELECT ENAME 姓名,MGR 经理,COMM 提成 FROM EMP;

--查询dept表的所有的内容

SELECT * FROM DEPT;

--查询dept表的内容 并给每个列加上对应的中文含义

SELECT DEPTNO 部门编号,DNAME 部门名称,LOC 部门所在地 FROM DEPT;

--查询工资登记表的所有内容

SELECT * FROM SALGRADE;

--查询工资登登记表的列及对应的中文含义

SELECT GRADE 等级,LOSAL 最低工资,HISAL 最高工资 FROM SALGRADE;

SELECT * FROM EMP WHERE DEPTNO=10;

SELECT * FROM EMP WHERE SAL>3000;

与 && AND

或 || OR

非 ! NOT 取反值

AND:当前后都为true的时候执行

当前面的条件为true,判断后面的表达式

当前面的条件为false,则跳过

OR:前后要有一个为 true

当第一为false 就判断后面的条件

当第一为true 后面的则不要判断

SELECT * FROM EMP WHERE DEPTNO=20 AND SAL>2000;

SELECT * FROM EMP WHERE DEPTNO=20 OR SAL>2000;

SELECT * FROM EMPWHERE NOT(SAL>2000)

SELECT *FROM EMPWHERE SAL BETWEEN 2450 AND 3000;

4,in(值1,值2,值3......)

等价于 =值1 or =值2 or =值3...

SELECT * FROM EMP WHERE EMPNO=7788 OR EMPNO=7369 OR EMPNO=7654;

SELECT * FROM EMP WHERE EMPNO IN(7788,7369,7654);

SELECT * FROM EMP

WHERE NOT (JOB IN('MANAGER','ANALYST','SALESMAN'));

WHERE JOB NOT IN('MANAGER','ANALYST','SALESMAN');

SELECT * FROM EMP;

SELECT JOB FROM EMP;

5,算术运算符+-*/

--查询工资+500后大于2000的员工

SELECT * FROM EMP WHERE SAL+500>2000; SAL>2000-500;--推荐使用

6、空 is null/is not null

--查询没有经理的员工信息

SELECT * FROM EMP WHERE MGR IS NULL;

--查询没有提成的员工信息

SELECT * FROM EMP WHERE COMM IS NULL;

7,连接符||(--把多个字段连接成一个字段,新生成的字段是字符类型)

SELECT EMPNO,ENAME,SAL,EMPNO||'~'||ENAME||'~'||SAL FROM EMP;

--查询20部门 工作是职员的员工信息

--查询10部门提成为空的员工信息

SELECT * FROM EMP WHERE DEPTNO||JOB='20CLERK';

SELECT E.*,DEPTNO||JOB FROM EMP E WHERE DEPTNO||JOB='20CLERK';

SELECT * FROM EMP WHERE DEPTNO||COMM=10;======>deptno||comm'10'

--隐式转换(纯数字字符可以看成数字来使用,数字也可以看成字符串使用)

--案例:

SELECT 123+456,123+'456','123'+'456','123+456' FROM DUAL;

SELECT * FROM EMP WHERE DEPTNO=10 AND COMM IS NULL;

--模糊查询like、%、_

语法:

SELECT 要查询的内容 3

from 数据来源 1

where 列 like'匹配内容' 2

通配符:

% 0个或多个字符

_ 任意单个字符

--查询emp中名字以A开头的

SELECT * FROM EMP WHERE ENAME LIKE'A%';

--查询emp中名字中以A结尾的

SELECT * FROM EMP WHERE ENAME LIKE'%A';

--查询emp名字包含A

SELECT * FROM EMP WHERE ENAME LIKE'%A%';

--查询名字第二个字母是L的员工信息

--查询名字的长度是4的员工信息

--查询名字以J开头长度为5的员工信息

--查询名字以J开头S结尾的员工信息

--查询名字既不包含s也不包含A的员工信息

SELECT * FROM EMP WHERE ENAME LIKE'_L%';

SELECT * FROM EMP WHERE ENAME LIKE'____';

SELECT * FROM EMP WHERE ENAME LIKE'J____';

SELECT * FROM EMP WHERE ENAME LIKE'J%S';

SELECT * FROM EMP WHERE ENAME NOT LIKE'%S%' AND ENAME NOT LIKE'%A%';

--优先级(*/的优先级高于+-,连接符的优先级和+-一样,

当优先级一样的时候,从做往右依次计算)

SELECT 2+3||4,2||3+11 FROM DUAL;

优先级排序:

1、() 2、乘除 3、+-|| 4、比较符 5、is Null、in、like

6、between and 7、not 8、and 9、or

注:可以使用括号改变优先级,不清楚优先级情况下+括号

--转义(对单引号的转义)

1、双写

SELECsql语言:(STRUCTURED QUERY LANGUAGE)

找东西:去哪找? 找啥?

数据 数据库 存在数据库中的内容(表中的内容)

用户:scott hr

scott用户下面的表

emp 员工信息表

dept 部门信息表

salgrade 工资登记表

SELECT * FROM EMP;

EMPNO 员工编号 ENAME 姓名 JOB 职位 MGR 经理编号 HIREDATE 入职日期

SAL 工资 COMM 提成 DEPTNO 部门编号

--简单查询

语法:SELECT 要查的属性。。。。

FROM 数据来源(从哪个表来查)

--查询emp中的员工编号

SELECT EMPNO FROM EMP;

--查询多个列 多个列之间用逗号隔开

SELECT EMPNO,ENAME,SAL FROM EMP;

注释:单行注释 --注释内容

多行注释 /* 注释内容 */

注释内容

/*--SDKFSFNSFSDFSDFS/ DFSDFSDFSDF

SHFGSDJFGHSFGSD

DFGKSFJKSDF

*/

--表示所有的列

SELECT * FROM EMP;

--数据类型

数值型:number 直接写

字符类型 : char/varchar2 '字符内容'

日期型: date date'年-月-日'

SELECT 123,234,'中国河南郑州',DATE'2022-7-18'

FROM DUAL; --万能表

--别名

表别名 语法: 表 表别名

列别名 语法: 列 列别名

列 as "列别名"

列别名的标准写法: 列 as "列别名" --用的比较少

SELECT EMPNO 员工编号,ENAME 姓名,SAL as "工资" FROM EMP;

--查询emp的每个列 每个列起一个别名

SELECT EMPNO 员工编号,ENAME 姓名,SAL 工资,JOB AS "职位", MGR AS "经理",HIREDATE AS "入职日期"

FROM EMP;

SELECT ENAME AAAA,ENAME ABC123,ENAME AS "123ABC",ENAME AS "@#$",ENAME AS "AbC" FROM EMP;

别名的注意事项:

as 只能使用在列别名上 表别名不能使用

别名以数字开头 包含特殊符号 区分大小写时 需要使用标准语法

别名的构成可以使用汉字 英文字母 英文字母+汉字

--查询emp中的姓名 经理 提成 显示列的中文含义

SELECT ENAME 姓名,MGR 经理,COMM 提成 FROM EMP;

--查询dept表的所有的内容

SELECT * FROM DEPT;

--查询dept表的内容 并给每个列加上对应的中文含义

SELECT DEPTNO 部门编号,DNAME 部门名称,LOC 部门所在地 FROM DEPT;

--查询工资登记表的所有内容

SELECT * FROM SALGRADE;

--查询工资登登记表的列及对应的中文含义

SELECT GRADE 等级,LOSAL 最低工资,HISAL 最高工资 FROM SALGRADE;

SELECT * FROM EMP WHERE DEPTNO=10;

SELECT * FROM EMP WHERE SAL>3000;

与 && AND

或 || OR

非 ! NOT 取反值

AND:当前后都为true的时候执行

当前面的条件为true,判断后面的表达式

当前面的条件为false,则跳过

OR:前后要有一个为 true

当第一为false 就判断后面的条件

当第一为true 后面的则不要判断

SELECT * FROM EMP WHERE DEPTNO=20 AND SAL>2000;

SELECT * FROM EMP WHERE DEPTNO=20 OR SAL>2000;

SELECT * FROM EMPWHERE NOT(SAL>2000)

SELECT *FROM EMPWHERE SAL BETWEEN 2450 AND 3000;

4,in(值1,值2,值3......)

等价于 =值1 or =值2 or =值3...

SELECT * FROM EMP WHERE EMPNO=7788 OR EMPNO=7369 OR EMPNO=7654;

SELECT * FROM EMP WHERE EMPNO IN(7788,7369,7654);

SELECT * FROM EMP

WHERE NOT (JOB IN('MANAGER','ANALYST','SALESMAN'));

WHERE JOB NOT IN('MANAGER','ANALYST','SALESMAN');

SELECT * FROM EMP;

SELECT JOB FROM EMP;

5,算术运算符+-*/

--查询工资+500后大于2000的员工

SELECT * FROM EMP WHERE SAL+500>2000; SAL>2000-500;--推荐使用

6、空 is null/is not null

--查询没有经理的员工信息

SELECT * FROM EMP WHERE MGR IS NULL;

--查询没有提成的员工信息

SELECT * FROM EMP WHERE COMM IS NULL;

7,连接符||(--把多个字段连接成一个字段,新生成的字段是字符类型)

SELECT EMPNO,ENAME,SAL,EMPNO||'~'||ENAME||'~'||SAL FROM EMP;

--查询20部门 工作是职员的员工信息

--查询10部门提成为空的员工信息

SELECT * FROM EMP WHERE DEPTNO||JOB='20CLERK';

SELECT E.*,DEPTNO||JOB FROM EMP E WHERE DEPTNO||JOB='20CLERK';

SELECT * FROM EMP WHERE DEPTNO||COMM=10;======>deptno||comm'10'

--隐式转换(纯数字字符可以看成数字来使用,数字也可以看成字符串使用)

--案例:

SELECT 123+456,123+'456','123'+'456','123+456' FROM DUAL;

SELECT * FROM EMP WHERE DEPTNO=10 AND COMM IS NULL;

--模糊查询like、%、_

语法:

SELECT 要查询的内容 3

from 数据来源 1

where 列 like'匹配内容' 2

通配符:

% 0个或多个字符

_ 任意单个字符

--查询emp中名字以A开头的

SELECT * FROM EMP WHERE ENAME LIKE'A%';

--查询emp中名字中以A结尾的

SELECT * FROM EMP WHERE ENAME LIKE'%A';

--查询emp名字包含A

SELECT * FROM EMP WHERE ENAME LIKE'%A%';

--查询名字第二个字母是L的员工信息

--查询名字的长度是4的员工信息

--查询名字以J开头长度为5的员工信息

--查询名字以J开头S结尾的员工信息

--查询名字既不包含s也不包含A的员工信息

SELECT * FROM EMP WHERE ENAME LIKE'_L%';

SELECT * FROM EMP WHERE ENAME LIKE'____';

SELECT * FROM EMP WHERE ENAME LIKE'J____';

SELECT * FROM EMP WHERE ENAME LIKE'J%S';

SELECT * FROM EMP WHERE ENAME NOT LIKE'%S%' AND ENAME NOT LIKE'%A%';

--优先级(*/的优先级高于+-,连接符的优先级和+-一样,

当优先级一样的时候,从做往右依次计算)

SELECT 2+3||4,2||3+11 FROM DUAL;

优先级排序:

1、() 2、乘除 3、+-|| 4、比较符 5、is Null、in、like

6、between and 7、not 8、and 9、or

注:可以使用括号改变优先级,不清楚优先级情况下+括号

--转义(对单引号的转义)

1、双写

SELECT '''',' '' '' ',' " ' FROM DUAL;

2、q'{转义的内容}'

SELECT Q'{'}',Q'{"}' FROM DUAL;

--显示 A said:"B said 'let's go!'"

SELECT 'A said:"B said ''let''s go!''"' FROM DUAL;

SELECT Q'{A said:"B said 'let's go!'"}' FROM DUAL;

--转义(模糊查询的转义,对%和_的转义)

语法:列LIKE'匹配内容' escape'转义符'

注:一个转义符只能转义一个字符

SELECT * FROM A

--查询name中包含_的行

SELECT * FROM A WHERE NAME LIKE'%/_%'ESCAPE'/'; --转义符号习惯用/或\

--查询名字中包含%

SELECT * FROM A WHERE NAME LIKE'%/%%'ESCAPE'/';

--查询名字中倒数第二个是%的

SELECT * FROM A WHERE NAME LIKE'%/%_'ESCAPE'/';

--查询name以_开头,且长度为5 的

SELECT * FROM A WHERE NAME LIKE'/_____'ESCAPE'/';

--查询名字中以_%开头的行

SELECT * FROM A WHERE NAME LIKE'/_/%%'ESCAPE'/';

T '''',' '' '' ',' " ' FROM DUAL;

2、q'{转义的内容}'

SELECT Q'{'}',Q'{"}' FROM DUAL;

--显示 A said:"B said 'let's go!'"

SELECT 'A said:"B said ''let''s go!''"' FROM DUAL;

SELECT Q'{A said:"B said 'let's go!'"}' FROM DUAL;

--转义(模糊查询的转义,对%和_的转义)

语法:列LIKE'匹配内容' escape'转义符'

注:一个转义符只能转义一个字符

SELECT * FROM A

--查询name中包含_的行

SELECT * FROM A WHERE NAME LIKE'%/_%'ESCAPE'/'; --转义符号习惯用/或\

--查询名字中包含%

SELECT * FROM A WHERE NAME LIKE'%/%%'ESCAPE'/';

--查询名字中倒数第二个是%的

SELECT * FROM A WHERE NAME LIKE'%/%_'ESCAPE'/';

--查询name以_开头,且长度为5 的

SELECT * FROM A WHERE NAME LIKE'/_____'ESCAPE'/';

--查询名字中以_%开头的行

SELECT * FROM A WHERE NAME LIKE'/_/%%'ESCAPE'/';

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Oracle 是一种关系型数据库管理系统,常被用于企业级应用的开发和数据管理。学习Oracle需要掌握数据库的基本概念和SQL语言,同时需要了解Oracle的特有功能和特点。 首先,对于初学者来说,可以通过查阅Oracle官方文档和教程来了解基本的数据库理论以及Oracle的安装和配置。官方文档提供了详细的说明和指导,包括数据库的架构、对象、数据类型和索引等内容。 其次,学习SQL语言是掌握Oracle的关键。SQL是结构化查询语言,用于对数据库进行增删改查操作。可以通过在线教程、书籍或者学习网站来学习SQL的基本语法和常用命令,例如SELECT、INSERT、UPDATE和DELETE等。 除了SQL,还需要学习PL/SQLOracle的过程式语言)。PL/SQLOracle数据库的编程语言,可以用于编写存储过程、触发器和函数等。学习PL/SQL可以通过官方文档和相关教程来深入理解。 另外,参加Oracle的培训课程也是一个不错的选择。Oracle官方和一些培训机构提供了各种级别的培训课程,从入门到专业水平。培训课程可以帮助学习者系统地了解Oracle的各个方面,并提供实际操作的机会。 最后,通过实践来巩固所学的知识。可以使用Oracle提供的演示数据库,或者自己搭建测试环境来练习SQL语句的编写和数据库管理的操作。 总之,学习Oracle需要系统地学习数据库理论、SQL语言和PL/SQL编程,可以通过官方文档、教程、培训课程和实践来提高自己的水平。不断的学习和实践将帮助您掌握Oracle的技术,并在企业级应用开发和数据管理中获得更好的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟德斯鸠的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值