-- 获取当前系统的时间 SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') FROM dual;
--日期转化为字符串 SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') AS NOWTIME FROM DUAL; -- 获取时间的年 SELECT TO_CHAR(SYSDATE,'yyyy') AS NOWYEAR FROM DUAL; -- 获取时间的月 SELECT TO_CHAR(SYSDATE,'mm') AS NOWMONTH FROM DUAL; -- 获取时间的日 SELECT TO_CHAR(SYSDATE,'dd') AS NOWDAY FROM DUAL; -- 获取时间的时 SELECT TO_CHAR(SYSDATE,'hh24') AS NOWHOUR FROM DUAL; -- 获取时间的分 SELECT TO_CHAR(SYSDATE,'mi') AS NOWMINUTE FROM DUAL; --获取时间的秒 SELECT TO_CHAR(SYSDATE,'ss') AS NOWSECOND FROM DUAL;
-- 插入特定格式日期 to_date('2020-02-20','yyyy-mm-dd');
创建表
1 2 3 4 5 6 7 8 9 10 11 12
createtable tableName( -- 用户id id number nut nullprimary key, -- 用户名 userName char(6) notnull, -- 用户性别 sex varchar2(3), -- 用户生日 birthday date ); -- 对表 tableName 插入对应的值 insertinto tableNmae values(1,'aidou','男',to_date('2020-02-20','yyyy-mm-dd'));
createtable 表名( name varchar2(10) notnull, id number(10), sex varchar2(10), age number(5) default18 ); -- 对 xx表 的字段添加默认约束 altertable 表名 modify 字段 default'默认条件'
查询表中的约束
1 2 3 4
-- 查询整张表的约束: select*from user_constraints where table_name ='要查询表的表名' -- 单一字段的约束查询: select constraint_name from user_cons_columns where table_name ='要查询表表名'and column_name ='要查询列的字段名';
模糊查询
1 2 3 4
like betweenand in isnull|isnotnull
like 一般与通配符连用(%查询内容%) 任意多个字符,包含 0 个字符.
1 2 3 4
-- scott表中查询 -- 案例一: 查询员工名中包含字符A的员工信息 SELECT*FROM EMP WHERE ENAME LIKE'%A%';
通配符 _ 的使用:(下划线占位,位置后放要查询包含的字符)
1 2
-- 查询 emp 表中ename 中第一个字符包含A,第三个字符包含 L的人员和工资 SELECT ENAME,SAL FROM EMP WHERE ENAME LIKE'A_L%'AND SAL>200;
查询员工命中第二个字符为 _ 的员工名(转义字符的使用)
1 2 3 4
SELECT ENAME FROM EMP WHERE ENAME LIKE'_\_%'
-- ESCAPE 的用法 SELECT ENAME FROM EMP WHERE ENAME LIKE'_$_%'ESCAPE'$';
between and 优点:
提高语句可读性
临界值包含且不能颠倒
1 2 3 4
-- 查询员工姓名,员工工资在 1500 ~ 5000的人员信息 SELECT ENAME,SAL FROM EMP WHERE SAL>=1500AND SAL <=5000; -- between and 简介优化语句 SELECT ENAME,SAL FROM EMP WHERE SAL BETWEEN1500AND5000;
关键字 in
含义: 判断某字段的值是否属于 in 列表中的某一项
特点: 使用 in 提高语句简洁度
in 列表的值类型必须一致(不支持通配符使用)
1 2 3 4
--查询员工姓名,以及员工工资在 1600 2450 3000 的人员信息 SELECT ENAME,SAL FROM EMP WHERE SAL =1600OR SAL =2450OR SAL =3000; -- in 语句优化 SELECT ENAME,SAL FROM EMP WHERE SAL IN('1600','2450','3000');
IS NULL 的使用:
1 2
-- 查询 emp 表中comm 为 null 的人员信息 SELECT ENAME,COMM FROM EMP WHERE COMM ISNULL;
-- 类似于 SWITCH CASE -- ORACLE : -- CASE 要判断的字段或表达式 -- WHEN 常量1 THEN 要显示的值 1或语句1; -- WHEN 常量2 THEN 要显示的值 2或语句2 -- ELSE 要显示的值 N 或语句 N; -- END -- 查询 员工的工资,要求: /* 部门号 = ,显示的工资为1.1 倍 部门号 = ,显示的工资为1.2 倍 部门号 = ,显示的工资为1.3 倍 其他部门,显示的工资为原工资 */ SELECT*FROM EMP; SELECT SAL 原始工资,EMPNO,CASE EMPNO WHEN7369THEN SAL*1.1 WHEN7521THEN SAL*1.2 WHEN7654THEN SAL*1.3 ELSE SAL ENDAS FROM EMP; --case 函数的使用二: 类似于 多重 if /* case when 条件1 then 要显示的值 1 或语句 1 when 条件2 then 要显示的值 1 或语句 2 else 要显示的值 n 或 语句 m end */ ```` ```sql -- 案例 /* 如果工资 > 1300,显示 A 级别 如果工资 > 1500,显示 B 级别 如果工资 > 1900,显示 C 级别 否则 ,显示 D 级别 */
SELECT ENAME,SAL,CASE WHEN SAL >1300THEN'A' WHEN SAL >1600THEN'B' WHEN SAL >3000THEN'C' ELSE'D' ENDAS 工资级别 FROM EMP;
-- 查询员工工号,姓名,工资,以及工资提高20%后的结果(NEW SALARY) SELECT ENAME,EMPNO,SAL *1.2 "NEW SALARY" FROM EMP;