oracle 1
ORACLE笔记01
############################################################
[oracle@oracle ~]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 03-4月 -2019 15:39:31
Copyright (c) 1991, 2009, Oracle. All rights reserved.
启动/db/app/oracle/product/11.2.0//bin/tnslsnr: 请稍候...
TNSLSNR for Linux: Version 11.2.0.1.0 - Production
系统参数文件为/db/app/oracle/product/11.2.0/network/admin/listener.ora
写入/db/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for Linux: Version 11.2.0.1.0 - Production
启动日期 03-4月 -2019 15:39:33
正常运行时间 0 天 0 小时 0 分 0 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 /db/app/oracle/product/11.2.0/network/admin/listener.ora
监听程序日志文件 /db/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
监听程序不支持服务
命令执行成功
[oracle@oracle ~]$ sqlplus "/as sysdba"^C
[oracle@oracle ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期三 4月 3 15:39:49 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
已连接到空闲例程。
SQL> SQL>
SQL>
SQL>
SQL> conn as sysdba
请输入用户名: arcl
输入口令:
已连接到空闲例程。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 1586708480 bytes
Fixed Size 2213736 bytes
Variable Size 922749080 bytes
Database Buffers 654311424 bytes
Redo Buffers 7434240 bytes
数据库装载完毕。
数据库已经打开。
SQL>
############################################################
1, 术语及其它们的定义;
表table : 由行和列组成的二维结构;
行 row : 每一行给出了一个供应商的全部信息(记录);
列 column : 每一列表示供应商的一种特性(属性);
值 value : 行和列的交汇处,
约定:
表 table = 实体 entity = 关系 relation
行 row = 记录 record
列 column = 属性 attribute
ORACLE服务器SERVER = ORACLE 系统 = ORACLE数据库管理系;
没有阴影的内容是用户要输入的; 提示符: 2是SQL语句的行号,由SQL*Plus自动产生。
SP2-0171: 帮助系统不可用。
SQL> SELECT *
2 FROM supplier;
SELECT *
*
第 1 行出现错误:
ORA-01034: ORACLE not available
进程 ID: 0
会话 ID: 0 序列号: 0
2,查询语句的两个关键字:SELECT 和 FROM;
一个完整的SQL命令叫语句statement, 每个关键字和后面跟着的选项叫做子句clause 。
语法: SELECT * |{[DISTINCT] 列表……}
FROM 表名;
列表的格式为:列表|表达式[别名] :
SELECT * FROM 表名;从表名所指定的表中选择所有的列;
SELECT DISTINCT 列表… FROM 表名;从表名所指定的表中选出所指定的列,但不显示重复的列(记录);
,3,SQL*Plus默认的列标题显示结果如下:
(1) 字符和日期型数据为左对齐。
(2) 数字型数据为右对齐。
4,运算符的优先级;
(1) 先乘除后加减。
(2) 在表达式中,同一优先级的运算符计算次序是从左到右。
(3) 如果使用了括号,括号中的运算优先;
(4) 如果有多重括号嵌套,内层括号中的运算优先。
5,使用别名:
方法:只需在列名和别名之间放AS或空格就可以了。
如果别名中包含了特殊字符,就要用双引号把别名括起来。
如果字符、数字或表达式(文本字符串)是日期型或字符型,就必须将它们用单引号括起来;
6,连接运算符(||)
用于把一个或多个列和字符串连接起来。
7,运算符DISTINCT,distinct去掉重复的行。
DISTINCT可以作用于多列,此时显示的结果为妹一种列组合只显示一行。
8,限制所选择的数据行(选择操作SELECTION)
使用WHERE子句来限制那些行(记录)要显示,WHERE子句跟在FROM子句之后。
(1) WHERE是关键字,其后跟限制条件。
(2) 条件是由列名、字符串、算数表达式、常量和比较运算符组成的。
(3) 可以使用比较运算符operator 来构造条件。格式如下:
表达式 operator 表达式
常用的比较运算符: > < = >= <= <> 或!=
(4) 还有BETWEEN AND、 IN 和 LINK 3个比较运算符。
9,BETWEEN AND运算符
用于测试某些值是否在指定的数值范围之内,该运算符不但可以用于数字型数据,还可以用于字符型和日期型数据,但这两种类型的数据必须用单引号括起来。
SELECT empno,ename,sal,hiredate FROM emp WHERE hiredate BETWEEN ’01-JAN-81’ AND ’31-MAY-82’;
可以在BETWEEN之前加上NOT,用于测试某些值是否不在BETWEEN和AND指定的数值范围之内。
SELECT empno,ename,sal,hiredate FROM emp WHERE hiredate NOT BETWEEN ’01-JAN-81’ AND ’31-MAY-82’;
P28continue
10,在SQL语句中使用字符串和日期
注意:在WHERE 子句中的字符串是区分大小写的。 在WHERE 子句中字符串和日期型数据要用单引号括起来,但数字型不用。
SELECT empno, ename, job,sal FROM emp WHERE job=’SALESMAN’;
11,使用IN 比较运算符
SELECT empno, ename, sal, job FROM emp WHERE job IN (‘SALESMAN’,’CLERK’,’MANAGER’);
IN 用来测试某些值是否在列表中出现。在上面的sql语句中,只要某一个记录的JOB列的值等于IN列表中(即括号中)的任何一个,该数据行就会显示出来。
另:还可以在IN 之前加否定词NOT。NOT IN 用来测试某些值是否不在列表中出现。
SELECT empno,ename,sal,job FROM emp WHERE job NOT IN (‘ANALYST’,’PRESIDENT’);
12,使用LIKE运算符
SELECT empno,ename,sal,job FROM emp WHERE job LIKE ‘SAL%’;
LIKE运算符进行通配符(wildcard)查询。
LIKE运算符可以使用以下两个通配符 “%”和“_” 。其中,
“%” 代表0个或多个字符。
“_” 代表一个且只能是一个字符。
SELECT empno, ename, sal, job FROM emp WHERE job LIKE ‘S_L_S%’; ----SALESMAN
SELECT empno,ename,sal,hiredate FROM emp WHERE hiredate LIKE ‘%81’;
13,转义操作符
要查询的字符串中含有”_”或“%”时,可以使用转义escape关键字来实现。
SELECT * FROM dept_temp WHERE dname LIKE ‘IT\_%’ escape ‘\’;
即在查询语句中,定义的”\”为转义符,即在“\”之后的“_”字符已不是通配符了,而是它本来的含义,即下划线。
除了”\”, 也可以使用任何感兴趣的字符作为转义符。
14,ORDER BY 子句(排序操作)
利用ORDER BY 子句对查询的结果进行排序。您可以对数字型、日期型和字符型数据进行排序。默认情况下,数字型和日期型数据是从小到大排序;字符型数据是按ASCII码的次序排序;DESC(descending order)为降序排序;
Order by 由小到大
SELECT empno,ename,sal FROM emp WHERE sal >= 1500 ORDER BY sal DESC;
15,在ORDER BY 子句中使用别名和表达式;
SELECT empno AS “Employee Number”, ename name,(500+sal)*12 “Annal Salary” FROM emp ORDER BY “Annual Salary” DESC;
P35contune
16,扩充后的查询语句的格式;
格式: SELECT *|{[DISTINCT] 列表, ….}
FROM 表名
[WHERE 条件]
[ORDER BY {列名|别名|表达式, …}[ASC|DESC]];
注:其中,条件由列名、文本字符串、算数表达式、常量和比较运算符5个部分组成。 需要注意的是ORDER BY子句一定要放在SQL语句的最后。
Oracle笔记02
第2章 常用的SQL*Plus命令和环境变量
1, DESC [RIBE]命令
用来查询表的结构。
语法: DESC 表名;
2, SET LINE[SIZE]{80|n} 命令
n为自然数,80为默认值。
该命令是讲显示屏的显示输出置为n个字符宽,80个字符为此命令的默认显示宽度。
3, L命令和n text命令
可以使用L(LIST)命令来显示刚刚输入的SQL语句。
4,”/” RUN 命令
“/”RUN命令用来重新运行SQL缓冲区中的SQL语句。
5, n(设置当前行)命令和A[PPEND](附加)命令
p44continue