Oracle之深入浅出(一)--基础介绍
2016-04-22 17:18
441 查看
1、准备
1.1、SQL*Plus回顾
1.1.1、配置客户端
1.安装oracle客户端。 2.在$ORACLE_HOME/network/admin/tnsnames.ora(客户端安装目录)这个文件中登记你要链接的数据库。
3.或者不配置tnsnames.ora远程连接到远程服务器,见连接数据库的第二种方法。
1.1.2、连接数据库
下面几种方式通过sqlplus窗口连接到数据库,如果不想显示登陆到数据库后的提示可以加上/nolog选项sqlplus username/password@ora11r2.
sqlplus username@ora11r2,然后输入密码。
sqlplus /nolog,然后connect username/password@ora11r2.
sqlplus /nolog,然后connect jusername@ora11r2.
exit退出。
注意:ora11r2就是你在tnsnames.ora里面配置的名称。
下面是不需要配置tnsnames.ora文件的连接方法:还有一种在plsql里面配置database那个选项的配置:192.168.1.6:1521/VP VP为远程数据库的SID,这样本地tnsnames.ora就不需要配置了
plsql连接:在plsql里面配置database那个选项的配置dbhost:1521/SID。
sqlplus连接:sqlplus username/password@//dbhost:1521/SID
1.1.3、配置sqlplus环境
在sql>命令提示符下输入help index查看所有命令,输入
help 命令查看命名详细用法,例如set命令定制环境基本命令。
值得注意的是你配置的环境当你关闭或者退出时这些设置就失效了,如何才能长久生效呢?那么先要理解sqlplus启动读取的文件顺序:启动时它默认会读取两个文件,$ORACLE_HOME/sqlplus/admin下的gloin.sql,如果找到这个文件就会读取进来,文件中命令也会执行;在读取万glogin文件后会再去读取login.sql文件,这个文件必须在sqlplus启动文件夹中或者包含在环境变量SQLPATH所指向的文件夹中,login.sql命令会覆盖glogin.sql命令,所以你可以创建一个login.sql文件,或者在上面文件中添加内容,例如:SET
LINES 3000
sqlplus中语句后面加;然后回车执行,或者/回车;
1.2、SQL基础
1.2.1、select语句执行顺序
顺序 | 关键字 | 语句 | 扩展 |
---|---|---|---|
5 | SELECT | c.customer_id,count(o.order_id) as orders_ct | |
1 | FROME | oe.customers c | |
1.1 | 或者FROME | oe.customers c | join oe.orders o on c.customer_id=o.customer_id |
2 | WHERE | c.gender=’F’ | |
3 | GROUP BY | c.customer_id | |
4 | HAVING | count(o.order_id)>4 | |
6 | ORDER BY | orders_ct,c.customer_id |
一般查询语句处理过程:
FROME子句(或者如上1.1的联接类型的FROME子句)-->WHERE子句-->GROUP BY子句-->HAVING子句-->SELECT子句-->ORDER子句
所以我们可以根据oracle逻辑处理方式来优化我们的sql语句,首先能最大成都过滤掉很大部门的条件让它先执行。
1.2.2、insert语句
格式:insert into tableName(name1,name2)values(value1,value2)
注意:如果插入表中定义的所有的值,则列的列表可以省略,否则列的列表不能省略。
查询插入:
insert into scott.bonus(ename,job,scal) select ename,job,scal*10 from scott.emp
多表插入
insert all when orders<1000 then into small_customers when orders<10000 then into big_customers else into middle from orders
1.2.3、update与delete
update格式update tableName/sql set key=value/sql where key1=value1/sql
delete格式
delete from tableName/sql where key=value/sql
1.2.4、merge语句
在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录时,就更新(Update),不存在数据时,就插入(Insert)。merge格式
MERGE INTO tableName alias1
USING table/view/sql alias2 ON condition
WHEN MATCHED THEN updateSql
WHEN NOT MACHED THEN insertSql
在alias2中Select出来的数据,每一条都跟alias1进行 ON (join condition)的比较,如果匹配,就进行更新的操作(Update),如果不匹配,就进行插入操作(Insert)。因此,严格意义上讲,在一个同时存在Insert和Update语法的Merge语句中,总共Insert/Update的记录数,就是Using语句中alias2的记录数。
例子:
MERGE INTO copy_emp c
USING employees e
ON (c.employee_id=e.employee_id)
WHEN MATCHED THEN
UPDATE SET
c.first_name=e.first_name,
c.last_name=e.last_name,
c.department_id=e.department_id
WHEN NOT MATCHED THEN
INSERT VALUES(e.employee_id,e.first_name,e.last_name,
e.email,e.phone_number,e.hire_date,e.job_id,
e.salary,e.commission_pct,e.manager_id,
e.departmetn_id);
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 基于 Red Hat 的发行版 Oracle Linux 正式发布Oracle Linux 7.1
- SQL中的三值逻辑
- 数据库链接字符串查询网站
- SQL Server 作业批量停止
- 结束SQL阻塞的进程
- 动态生成SQL Server视图作业
- Oracle Containers for J2EE远程安全漏洞(CVE-2014-0413)
- Oracle 10g R2不能使用EM的问题
- SQL Server 语句操纵数据库
- 表空间操作
- PreparedStatement中in子句的处理
- SQL(结构化查询语句)
- VMware下RedHat4.8_64位安装Oracle 10g RAC--简略脚本
- oracle sql日期比较