一、SQL语句的书写规则:
(1)不区分大小写
(2)可以单行来书写,也可以书写多行,建议分多行书写,增强代码的可读性
(3)关键字不可以缩写、分开以及跨行书写
(4)关键字最好是用大写,其它语法元素小写
(5)Tab和缩进的使用可以提高程序的可读性
二、选择列
(1)选择所有列:
SELECT * FROM 表名;
(2)选择指定列:
SELECT 列名1,列名2,列名3... FROM 表名;
三、算术运算符
+ - * /
注意:null值不与任意值计算,均返回null,不是0,不是''
解决方法:nvl(列名,0):如果该列的值为null,取值为0;否则取自身的值
四、列别名
(1)语法:
①列名 别名
或者
②列名 as 别名
(2)以下三种情况列别名两侧需要添加双引号
①列别名中包含有空格
②列别名中要求区分大小写
③列别名中包含有特殊字符
五、连接操作符||
原义字符串:使用单引号' '括起来,在数据的每一行出现
消除重复行:DISTINCT
六、显示表的结构
以下令命令需要在SQL*Plus中使用:
DESC[RIBE] 表明;
七、SQL语句和SQL*Plus命令的区别
1.在SQL window中只能执行sql语句
2.在commadn window既能执行sql语句,也可以执行SQL*Plus命令
八、练习
--选择dept表里面所有列,其中*代表所有列 SELECT * FROM dept; SELECT deptno,dname,loc FROM dept;--以上两行代码效果一样 --但后者效率更高,因为*不知道表中的所有列是什么,需要分析表结构,查找的过程效率较低 --选择dept表中部门编号和部门名称 SELECT deptno,dname FROM dept; --查询员工的员工编号,员工姓名,入职日期,包括转正日期(假设试用期5个月) SELECT empno,ename,hiredate,(hiredate + 5*2) FROM emp; --查询员工的员工编号,员工姓名,入职日期,包括转正日期(假设试用期5个月),年薪(使用其工资为转正工资的80%,加上奖金) SELECT empno,ename,hiredate,(hiredate + 5*30),sal,comm,sal*5+sal*1.25*7+comm FROM emp;--当comm为null的时候,与任何数相加得到的都是以null SELECT empno,ename,hiredate,(hiredate + 5*30),sal,nvl(comm,0),sal*5+sal*1.25*7+nvl(comm,0) FROM emp;--使用nvl函数 --别名 SELECT empno 员工编号, ename 员工姓名, hiredate 入职日期, (hiredate + 5 * 30) as 转正日期,--as可以加,也可以不加 sal as 工资, nvl(comm, 0) as 奖金, sal * 5 + sal * 1.25 * 7 + nvl(comm, 0) as 年薪 FROM emp; SELECT empno,sal,sal + 500 "new salary" FROM emp;--1.列别名中包含有空格,需要添加双引号 SELECT empno,sal,sal + 500 "NewSalary" FROM emp;--2.英文列别名默认全部大写,添加双引号可以区分大小写 SELECT empno,sal,sal + 500 "@new" FROM emp;--3.列别名中包含有特殊字符,需要添加双引号 --连接操作符 --1.查询员工信息,并显示“xxx的工资为:xxx” SELECT ename,sal,ename||'的工资为:'||sal FROM emp; --2.查询有员工的部门有哪些? SELECT distinct deptno FROM emp;--distinct消除重复行 --3.查询公司有多少部门及岗位? SELECT distinct deptno,job FROM emp;