创建表
**CREATE TABLE[scheam.]table**
**(column datatype[, column datatype[, …]]);**
schema: 表示对象的所有者,即模式的名称。如果用户在自己的模式中创建表,则可以不指定所有者名称
table:表示表的名称
column:表示列的名称
dataType:表示该列的数据累心及其宽度
删除表
**TRUNCATE TABLE<表名字>;**
查询(SELECT)
SELECT DISTINCT stuname,stuAge FROM stuInfo
DISTINCT 子句筛选结果集中内容全部相同的行,仅保留一行
查询(使用别名)
select stuName as “姓 名”,stuAge as “年 龄”,stuID as 身份证号
FROM stuInfo
如别名中含有特殊字符(如空格)的列标题,则使用双引号括起来
利用现有的表创建新表
CREATE TABLE 新表名
AS
SELECT * FROM 旧表名 //表结构及其所有记录完全复制
·
CREATE TABLE 新表名
AS
SELECT * FROM 旧表名 WHERE 1=2 //复制表结构但不复制记录
集合操作符
值 | 作用 |
---|---|
union | 联合 |
union all | 联合所有 |
intersect | 交集 |
minus | 减集 |
1.union
SELECT empno FROM employee
UNION
SELECT rempno FROM reireEmp
ORDER BY empno;
作用:返回employee和retireEmp 所有不重复的列值,并且如果使用ORDER BY 子句时,必须放在最后一个SELECT后面
2.union all
作用:合并两个查询选定的所有行,包括重复的行
3.intersect
SELECT empno FROM employee
INTERSECT
SELECT rempno FROM retireEmp;
作用:只返回两个查询所有的行,包括重复的行
4.minus
select empno FROM employee
MINUS
SELECT rempno FROM retireEmp
作用:第一个查询结果中排出第二个查询中出现的行
连接操作符
连接操作符(||)用于将两个或多个字符串合并一个字符串,或者将一个字符串与一个数值合并在一起
SELECT job||'_'|| ename FROM enployee;
SQL函数
转换函数
函数 | 功能 | 实例 | 结果 |
---|---|---|---|
TO_CHAR | 装换为字符串类型 | TO_CHAR(1234.5,’$9999.9’) | $1234.5 |
TO_DATE | 装换为日期类型 | TO_DATE(‘1980-01-01’,‘yyyy-mm-dd’) | 01-1 月-80 |
TO_NUMBER | 转换为数值类型 | TO_NUMBER(‘1234.5’) | 1234.5 |
其他函数
函数 | 功能 |
---|---|
NVL(exp1,exp2) | 如果exp1的值为null,则返回exp2的值,否则返货exp1的值 |
NVL2(exp1,exp2,exp3) | 如果exp1的值为null,则返回exp3的值,否则返货exp2的值 |
DECODE(value,if1,then1,if2,then2,…,else) | 如果value的值为if1,则返回then2值,如果value的值为if2,则返回then2值 。。。。否则返回else的值 |
分析函数
语法
函数名([参数]) OVER ([分区子句] [排序子句])
1.ROW_NUMBER
返回一个唯一的值,当遇到相同数据是,排名按照记录集中记录的顺序依次递增
2.DENSE_RANK
返回一个唯一的值,当遇到相同数据时,所有相同数据的排名都是一样的
3.RANK
返回一个唯一的值,当遇到相同的数据时,所有相同的数据排名是一样,同时会在最后一条相同记录和下一条不同记录的排名空出排名
关键代码
SELECT ename,deptno,sal
RANK() OVER(PARTITION BY deptno ORDER BY sal DESC) "RANK",
DENSE_RANK() OVER(PARTITION BY deptno ORDER BY sal DESC) "DENSE_RANK",
ROW_NUMBER() OVER(PARTITION BY deptno ORDER BY sal DESC) "ROW_NUMBER"
FROM employee
输出结果比较
ename | deptno | sal | rank | dense_rank | row_number |
---|---|---|---|---|---|
king | 10 | 5000 | 1 | 1 | 1 |
clark | 10 | 2450 | 2 | 2 | 2 |
aaaa | 10 | 1300 | 3 | 3 | 3 |
bbb | 20 | 3000 | 1 | 1 | 1 |
ccc | 20 | 3000 | 1 | 1 | 2 |
ddd | 20 | 2975 | 3 | 2 | 3 |
eee | 20 | 1100 | 4 | 3 | 4 |
fff | 20 | 800 | 5 | 4 | 5 |
ggg | 30 | 2850 | 1 | 1 | 1 |
hhh | 30 | 1600 | 2 | 2 | 2 |
iii | 30 | 1500 | 3 | 3 | 3 |
ggg | 30 | 1250 | 4 | 4 | 4 |
kkk | 30 | 1250 | 4 | 4 | 5 |
lll | 30 | 950 | 6 | 5 | 6 |