一、ORACLE常用数据类型(其他类型不太常用)
(1)字符类型 1、char 定长,最大2000字符。例如:char(10) ‘小明’ 前四个字符放‘小明’后添加6个空格补全。 2、varchar2(20) 变长,最大4000字符。例如:varchar(10) ‘小明’ oracle分配四个字符,这样可心节省空间。 3、clob(character large objiect)字符型大对象最大4G (2)数字类型 number范围-10的38次方到10的38次方,可以表示整数,也可以表示小数。 1、number(5)表示一个五位整数范围-99999到99999 2、number(5,2)表示一个小数有5位效数,2位小数,范围-999.99到999.99 (3)日期类型 1、data 包含年月日和时分秒。 2、timestamp 它与date的区别是不仅可以保存日期。时间,还能保存小数秒。 (4)图片类型 blob 二进制数据可以存放图片/声音。
二、建表
(1)创建学生表和班级表用上所有类型
SQL> create table student(
2 xh number(4),
3 xm varchar2(20),
4 sex char(2),
5 birthday date,
6 sal number(7,2)
7 );
Table created
SQL> create table class(
2 classid number(2),
3 cname varchar2(20)
4 );
Table created
(2)表修改。 1、添加字段。为学生表添加classid
SQL> alter table student add (classid number(2));
Table altered
2、修改字段的长度。修改学生表xm长度为30
SQL> alter table student modify (xm varchar2(30));
Table altered
3、修改字段的类型或名字(不能有数据)。修改学生表xm类型为char(30)
SQL> alter table student modify(xm char(30));
Table altered
SQL> alter table student rename column xm to mc;
Table altered
4、删除一个字段。删除学生表sal字段。
SQL> alter table student drop column sal;
Table altered
5、修改表名。修改student为stu。
SQL> rename student to stu;
Table renamed
6、删除表。删除stu表。
SQL> drop table stu;
Table dropped
三、表基本查询(使用scott用户)。
1、查看表结构。
SQL> desc emp;
Name Type Nullable Default Comments
-------- ------------ -------- ------- --------
EMPNO NUMBER(4)
ENAME VARCHAR2(10) Y
JOB VARCHAR2(9) Y
MGR NUMBER(4) Y
HIREDATE DATE Y
SAL NUMBER(7,2) Y
COMM NUMBER(7,2) Y
DEPTNO NUMBER(2) Y
2、查询每个雇员的年工资。
SQL> select ename "姓名",sal*12 "年工资" from emp;
姓名 年工资
---------- ----------
SMITH 21600
ALLEN 19200
WARD 15000
JONES 35700
MARTIN 15000
BLAKE 34200
CLARK 29400
SCOTT 36000
KING 60000
TURNER 18000
ADAMS 13200
JAMES 11400
FORD 36000
MILLER 15600
14 rows selected
注:用nvl将null转化为0
SQL> select ename "姓名",sal*12+nvl(comm,0)*12 "年工资" from emp;
姓名 年工资
---------- ----------
SMITH 21600
ALLEN 22800
WARD 21000
JONES 35700
MARTIN 31800
BLAKE 34200
CLARK 29400
SCOTT 36000
KING 60000
TURNER 18000
ADAMS 13200
JAMES 11400
FORD 36000
MILLER 16014.72
14 rows selected
3、如何显示第三个字符为大写O的所有员工的姓名和工资。
SQL> select ename,sal from emp where ename like '__O%';
ENAME SAL
---------- ---------
SCOTT 3000.00
注:%表示任意0到多个字符,_表示任意单个字符。
4、显示每个部门的平均工资和最高工资。
SQL> select avg(sal) "平均工资",max(sal) "最高工资",deptno "部门编号" from emp group by deptno;
平均工资 最高工资 部门编号
---------- ---------- --------
1566.66666 2850 30
2375 3000 20
2916.66666 5000 10
5、显示每个部门的每种岗位的平均工资和最低工资。
SQL> select avg(sal) "平均工资",min(sal) "最低工资",deptno,job from emp group by deptno,job order by deptno;
平均工资 最低工资 DEPTNO JOB
---------- ---------- ------ ---------
1300 1300 10 CLERK
2450 2450 10 MANAGER
5000 5000 10 PRESIDENT
3000 3000 20 ANALYST
1450 1100 20 CLERK
2975 2975 20 MANAGER
950 950 30 CLERK
2850 2850 30 MANAGER
1400 1250 30 SALESMAN
6、显示平均工资低于2000的部门号和他的平均工资。
SQL> select deptno,avg(sal) "平均工资" from emp group by deptno having avg(sal)<2000;
DEPTNO 平均工资
------ ----------
30 1566.66666
7、显示和SMITH同一部门的所有员工。
SQL> select ename from emp where deptno=(select deptno from emp where ename='SMITH');
ENAME
----------
SMITH
JONES
SCOTT
ADAMS
FORD
8、查询和部门10的工作相同的雇员的名字、岗位、工资、部门号
SQL> select ename,job,sal,deptno from emp where job in (select job from emp where deptno=10);
EN