Oracle:
1,语句编写规范:
1)sql语句的所有表名,字段名全部小写,系统保留字,内置函数名,sql保留字大写。
2)连接符:or,in,and,以及=,<=,>=等前后加上一个空格。
对较为复杂的sql语句、过程、函数加上注释,说明算法、功能。
3)SQL语句的缩进风格
1. 一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进
2. where子句书写时,每个条件占一行,语句另起一行时,以保留字或者连接符开始,连接符右对齐。
多表连接时,使用表的别名来引用列。
sql 命令是大小写不敏感的。
关键字大写,其他小写
sql命令可写成一行或多行。
一个关键字不能跨多行或缩写。
子句通常位于独立行,以便编辑,并易读。
2,SQL语言分类:
数据查询语句:select。
数据操纵语句:Insert,Update,Delete。
数据定义语句:Create,Alter,Drop,Rename,Truncate。
事物控制语句:Commit,Rollback,Savepoint。
数据控制语言:Grant,Revoke。
3,SQL常用命令:
连接命令:conn[ect].例:conn userName/password, disc[onnect].(断开当前用户连接)。
解锁:使用sys/system账号执行,alter user scott account unlock;
锁:alter user scott account lock;
修改用户的密码:passw-旧密码-新密码,如果想要修改其他用户的密码,需要sys/system登录,例:alter user userName identified by passWord(密码必须字母开头)
显示当前用户:show uesr,断开与数据库的连接,同时会退出sqlplus:exit,
文件操作命令:
编辑制定的sql脚本:edit, 例:sql>edit d:\a.sql . selectfrom emp;
运行sql脚本:start,例:sql>@ d:a.sql 或 sql>staart d:\a.sql
将sqlplus屏幕上的内容输出到制定文件中去(三部分:创建,操作内容,结束):spool,例:sql>spool d:\b.sql (操作内容)sql>spool off
交互式命令:
可以替代变量,而该变量在执行时,需要用户输入:& , 例:sql>selectfrom 表名 where 字段名= ‘&随意’;
显示和设置环境变量:
概述:用来控制输出的各种格式,set show 如果希望永久保存相关设置,修改glogin.sql脚本
linesize:设置显示行的宽度,默认是80个字符;
句例:sql>show linesize sql>set linesize 120
pagesize:设置每页显示行数目,默认是14; 用法和linesize一样。
句例:sql>show pagesize ; sql>set pagesize 8
显示表结构:desc[ribe] tableName
打开显示操作响应时间的开关:sql>set timing on
清屏:sql>clear screen
监听服务命令(控制台):
lsnrctl start :启动
lsnrctl stop :停止
lsnrctl status :查看状态
4,SQL常用语句:
1)数据查询语句:
select:
查询表中的所有列:select from 表名;例: select from dept;
查询表中制定的列:select 列名1,列名2,…from 表名;例:select deptno,loc from dept;
2)定义空值:
空值是指不可用,不知道,不适用的值
空值不等于零或空格
句例:select ename,job,comm from emp;
包括空值的算法,表达式结果等于空
select ename NAME,12sal+comm from emp where ename=’KING’;
3)定义列的别名:
改变列的标题头,使用计算结果,列的别名,
如果使用特殊字符,或大小写敏感,或有空格时,需加双引号。
句例:select ename as name,sal salary from emp;
select ename “姓名”,sal12”Annual Salary” from emp;
4)连接操作:
将列或字符于其它列连结
用双竖条表示(||)
产生的结果列是一个字符表达式
句例:select ename || job as”Employees” from emp;
5)文字字符串:
文件字符串是一个包括在SELECT列表中的字符,表达式,或数字。
日期和字符型文字字符必须用单引号括起来
每返回一条记录字符被输出一次
句例:select ename || ‘ is a ‘ || job from emp wheve sal>2000;
select ename || ‘ ‘ || ‘ is a ‘ || ‘ ‘ || job as “Employee Details” from emp;
6)构造命令:select tablename from user_tables; //当前用户的表 table_name:表字段
select table_name from all_tables; //所有用户的表
select table_name from dba_ta bles; //包括系统表
select ‘delete from ‘ || table_name || ‘ where 1=0;’ || chr(10) from user_all_tables;
7)重复行:
句例:select deptno from emp;
删除重复行distinct
select distinct deptno from emp;
8)限定:
选择限定where: select ename,job,deptno from emp where job=’CLERK’;
9)运算:
比较运算符:=,>,>=,<,<=,<>(不等于)
句例:select ename,sal,comm from emp where sal >= comm;
10)其他的比较运算符:
在两值之间(包含):between…and…
句例:select ename,sal from emp where sal between 1000 and 1500;
匹配列出的值:in(list)
句例:select empno,ename,sal,mgr from emp where mgr in(7902,7566,7788);
匹配一个字符模式:like
(%)可表示零或多个字符:
句例:select ename from emp where ename like ‘S%’;
( )可表示一个字符:
句例:select ename from emp where ename like ‘_A%’;
是空值:is null
句例:select ename,comm from emp where comm is null;
11)逻辑运算符:
如果组织的条件都为真测返回真值:and
句例:select empno,ename,job,sal from emp where sal >= 1100 and job=’CLERK’;
如果组合的条件之一是真值,返回真值:or
句例:select empno,ename,job,sal from emp where sal >= 1100 or job = ‘CLERK’;
如果条件为假则返回真值:not
句例:select ename,job from emp where job not in(‘CLERK’,’MANAGER’,’ANALYST’);
12)运算的优先级:
括号将跨越所有优先级规则。
句例:select ename,job,sal from emp where job =’SALESMAN’ or job = ‘PRESIDENT’ and sal > 1500;
select ename,job,sal from emp where (job =’SALESMAN’ or job = ‘PRESIDENT’) and sal > 1500;
13)排序:
使用ORDER BY子句将记录排序:ASC:升序,缺省;DESC:降序;
ORDEER BY 子句在SELECT语句的最后
句例:select ename,job,deptno,hiredate from emp order by hiredate;
select ename,job,deptno,hiredate from emp order by hiredat desc;
使用类的别名排序:
句例:select empno,ename,sal*12 annsal from emp order by annsal;
多个列排序:
句例:select ename,depthno,sal from emp order by deptno desc,sal desc;
4,函数:
转为大写:UPPER
句例:select upper(‘aBcD’) from dual
把字符转换为小写:LOWER
句例:select lower(‘aBcD’)from dual;
select empno,ename,deptno from emp where lower(ename) = ‘blake’;
select empon,ename,deptno from emp where ename = lower(‘nlake’);
把每个单词的第一个字母大写,其他小写:
select initcap(‘aBcD’) from dual;
字符处理函数:
连接两个字符:concat
句例:select concat(‘Hello’,’World’) from dual;
选取给定位置和长度的子字符串:substr
句例:select substr(‘HelloWorld’,6) from dual;
select substr(‘HelloWorld’,-5) from dual;
计算字符串长度:length
句例:select length(‘HelloWorld’) from dual;
