Oracle琐碎笔记2

备注:以下所有操作均在sqlplus中执行.

开始前输入:
spool c:jiyi.txt;
结束后输入:
spool off;
就会记忆操作的所有记录
save c:sql.sql;
保存sql脚本
可以使用@c:sql.sql加载脚本文件
--注释
host cls  (window dos下的清屏命令)
--设置行宽
set linesize 120
--设置列宽
col sal for 9999
--设置某列名是八位字符
col ename for a8 
命令行中输入反斜线/ 代表执行上一条sql命令
设置pagesize
set pagesize 20
修改输入命令:
 

oracle 列别名:
select empno as "编号",ename "姓名",sal 月薪 from emp;
带有双引号的别名可以带特殊字符(比如空格),没有双引号的则不可以.

空值问题
select ename,sql*12,sql*12+comm 年收入(年薪+奖金) from emp;
sql中,如果一个表达式含有null(空),则整个表达式为null
oracle中null!=null
解决方案:
select ename,sql*12,sql*12+nvl(comm,0) from emp;

此外在oracle中如果想查出字段为null的记录不能使用
列名=null
需要使用:  列名 is null
取消重复记录
select distinct 列名1,列名2  from emp
sql语言大小写不敏感
sql可以写在一行或者多行
关键字不能被缩写也不能分行
各子句一般要分行写
使用缩进提高语句的可读性.

算术运算符
乘除的优先级高于加减
优先级相同时,按照从左到右运算
可以使用括号改变优先级.

连接符(dual表是oracle提供的一个测试表):
oracle中一般使用单引号进行拼接
select concat('HELLO',' World!!') from dual;
select 'Hello'||'world' from dual;
select username||'的LoginId是:'||loginid from sys_users
select 3+2 from dual
select sysdata from dual

查询表结构
desc 表名(sqlplus命令)
*********************************************

解锁和修改密码:
首先管理员登陆:
sys/密码 as sysdba
或者 / as sysdba
创建临时表空间
create temporary tablespace user_temp
tempfile 'd:文件目录名文件名.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
创建表空间
create tablespace user_data
logging
datafile 'd:文件目录名文件名.dbf'
size 50m
autoextend on
next 50m maxsize 20480m
extent management local;
显示当前用户:
show user
新建用户:
create user 用户名 account indetified by 密码
分配权限
grant connect,resource,dba to 用户名
解锁:
alter user 用户名 account unlock
改密码:
alter user 用户名 identified by 新密码

sqlplus中使用ed会将操作写入file afiedt.buf文件中
Oracle中对字符串大小写敏感
对日期格式敏感
ps:两者需加双引号
select sysdate from dual
查询系统参数(为了查日期格式)
select * from v$nls_parameters
修改日期格式
alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"
比较运算:
= > >= < <= <>
between and  包含边界(需注意的是and前的值必须小于后者)
in()  like  is null
//转义字符 escape
select * from user where username like '%\_%'
逻辑运算
and  or  not
优先级
 

order by 排序
默认升序asc,by后面可以跟:列名,表达式,别名,序号
select * from user order by username  desc nulls last //降序 空值最后
多列降序排序的时候desc只作用与离其最近的一列,如想多列都降序则需同时加上

原文地址:https://www.cnblogs.com/LT0314/p/3821677.html