Oracle SQL基础练习【二】(emp,dept)
2016-09-23 00:00
423 查看
一 创建表并插入数据
雇员表emp如下:
部门表emp如下:
二 操作表
1 基础查询
2 添加 主键
3 IS NOT NULL 和 BETWEEN AND
4 oracle对字符串的大小写敏感
5 LIKE,ASC,DESC
6 大小写
7 oracle中字符串截取从0和1开始都是一样的
8 小插曲1
创建表
表如下:
插入数据
基本操作
9 小插曲2
VARCHAR2(50)必须指明长度
表如下:
查询操作:
上下对比
修改字段数据类型
注意:
日期格式数据转换:TO_DATE(),TO_CHAR()
char,varchar,varchar2区别:
char长度固定,varchar只半字和全角字符2字处理,varchar2对所有都2字节处理
CREATE TABLE emp ( empno NUMBER, ename VARCHAR2(20), job VARCHAR2(20), mgr NUMBER, hiredate DATE, sal FLOAT, commn FLOAT, deptno NUMBER ); INSERT INTO emp ( empno, ename, job, mgr, hiredate, sal, commn, deptno ) VALUES ( 1601, 'zhangsan', 'saler', 10, to_date('2013-2-28 15:42:56','yyyy-mm-dd hh24:mi:ss'), 2000.1, 1000.3, 100 );
雇员表emp如下:
CREATE TABLE dept ( deptno NUMBER, dname VARCHAR2(30), loc VARCHAR2(50) );
部门表emp如下:
二 操作表
1 基础查询
SELECT*FROM emp; SELECT empno eno FROM emp; SELECT DISTINCT job FROM emp; SELECT job FROM emp; SELECT 'NO:'||empno||',Name:'||ename|| ',Job:'||job FROM emp;
2 添加 主键
ALTER TABLE emp ADD PRIMARY KEY(empno); ALTER TABLE dept ADD PRIMARY KEY(deptno);
3 IS NOT NULL 和 BETWEEN AND
SELECT * FROM emp WHERE commn IS NOT NULL; SELECT * FROM emp WHERE sal > 1500 AND commn IS NOT NULL; SELECT * FROM emp WHERE sal <= 1500 AND commn IS NULL; SELECT * FROM emp WHERE NOT(sal > 1500 AND commn IS NOT NULL); SELECT * FROM emp WHERE hiredate BETWEEN '11-01-01' AND '11-12-31'; SELECT * FROM emp WHERE empno NOT IN(1601,1603);
4 oracle对字符串的大小写敏感
SELECT * FROM emp WHERE ename = 'Liulu'; SELECT * FROM emp WHERE ename = 'liulu';
5 LIKE,ASC,DESC
SELECT * FROM emp WHERE hiredate LIKE '%11%'; SELECT * FROM emp WHERE hiredate LIKE '_1%'; SELECT * FROM emp WHERE empno <> 1603; SELECT * FROM emp WHERE empno != 1603; SELECT * FROM emp ORDER BY sal ASC; SELECT * FROM emp ORDER BY sal DESC; SELECT * FROM emp ORDER BY sal DESC, empno ASC;
6 大小写
SELECT UPPER('jone') FROM dual; SELECT LOWER('JONE') FROM dual; SELECT INITCAP(ename) FROM emp; UPDATE emp SET ename = INITCAP(ename); UPDATE emp SET ename = 'stu_'||ename; UPDATE emp SET ename = CONCAT('tu_',ename);
7 oracle中字符串截取从0和1开始都是一样的
SELECT SUBSTR('ABCDEFG',0,4), LENGTH('CANDIDE'), REPLACE('JACK and JUE','J','BL') FROM dual; SELECT SUBSTR('ABCDEFG',1,4), LENGTH('CANDIDE'), REPLACE('JACK and JUE','J','BL') FROM dual;
8 小插曲1
创建表
CREATE TABLE table_1 ( deptno NUMBER, empno NUMBER ); CREATE TABLE table_2 ( empno NUMBER, goods_name VARCHAR2(40) );
表如下:
插入数据
INSERT INTO table_1(deptno,empno) VALUES(1,001); INSERT INTO table_1(deptno,empno) VALUES(1,002); INSERT INTO table_1(deptno,empno) VALUES(2,003); INSERT INTO table_1(deptno,empno) VALUES(3,004); INSERT INTO table_1(deptno,empno) VALUES(3,005); INSERT INTO table_2(empno,goods_name) VALUES(001,'A'); INSERT INTO table_2(empno,goods_name) VALUES(002,'D'); INSERT INTO table_2(empno,goods_name) VALUES(001,'B'); INSERT INTO table_2(empno,goods_name) VALUES(001,'C'); INSERT INTO table_2(empno,goods_name) VALUES(003,'A'); INSERT INTO table_2(empno,goods_name) VALUES(004,'C'); INSERT INTO table_2(empno,goods_name) VALUES(005,'D'); INSERT INTO table_2(empno,goods_name) VALUES(004,'W');
基本操作
SELECT deptno,goods_name FROM table_1 t1 JOIN table_2 t2 ON t1.empno = t2.empno ORDER BY t1.deptno; SELECT deptno,CO 4000 UNT(*) as goods FROM table_1 t1 JOIN table_2 t2 ON t1.empno = t2.empno GROUP BY deptno; SELECT deptno,COUNT(*) as goods FROM table_1 t1,table_2 t2 WHERE t1.empno = t2.empno GROUP BY deptno;
9 小插曲2
VARCHAR2(50)必须指明长度
CREATE TABLE store ( storeno NUMBER ,start_date VARCHAR2(50) ,store_name VARCHAR2(50) ,over_date VARCHAR2(50) ); ALTER TABLE store MODIFY (storeno VARCHAR2(50)); INSERT INTO store( storeno ,start_date ,store_name ,over_date) VALUES( 'C001' ,'2015/1/1' ,'7-11' ,'2099/12/31' ); INSERT INTO store( storeno ,start_date ,store_name ,over_date) VALUES( 'C001' ,'2016/10/1' ,'8-13' ,'2099/12/31' ); INSERT INTO store( storeno ,start_date ,store_name ,over_date) VALUES( 'C003' ,'2015/1/1' ,'JingGong' ,'2099/12/31' );
表如下:
查询操作:
SELECT s1.storeno,s1.store_name FROM store s1, (SELECT storeno,MAX(start_date) AS start_date FROM store WHERE start_date <= TO_DATE('2016011','YYYYMMDD') AND over_date >= TO_DATE('2016011','YYYYMMDD') GROUP BY storeno) s2 WHERE s1.storeno = s2.storeno AND s1.start_date = s2.start_date;
上下对比
SELECT s1.storeno,s1.store_name FROM store s1, (SELECT storeno,MAX(start_date) AS start_date FROM store WHERE start_date <= '20160101' AND over_date >= '20160101' GROUP BY storeno) s2 WHERE s1.storeno = s2.storeno AND s1.start_date = s2.start_date;
修改字段数据类型
ALTER TABLE store MODIFY(start_date DATE); ALTER TABLE store MODIFY(over_date DATE);
注意:
日期格式数据转换:TO_DATE(),TO_CHAR()
char,varchar,varchar2区别:
char长度固定,varchar只半字和全角字符2字处理,varchar2对所有都2字节处理
相关文章推荐
- Oracle 中 误删 emp,dept ,恢复 emp 和 dept表的sql脚本.
- Oracle 数据库基础学习 (七) SQL语句综合练习
- Oracle自带表(EMP)SQL语句练习
- 学习SAP HANA SQL 语句(创建 EMP,DEPT,BONUS 和 SALGRADE测试表)--像学Oracle一样学习SAP HANA
- oracle基础知识及sql练习
- oracle基础知识,oracle sql练习
- 有关Oracle 的查询语句的几个小练习(针对ORCL数据库的emp,dept,salgrade等数据表)
- Oracle 数据库基础学习 (八) PL/SQL综合练习
- oracle sql基础练习随笔
- Oracle_sql 基础_查询练习
- oracle基础知识,oracle sql练习
- Oracle SQL基础练习(一)(学生表-课程表-选课表)
- 韩顺平 oracle 视频 emp dept salgrade 表 sql 数据
- sql语句两个练习 emp dept 复杂查询
- sql :emp ,dept表经典练习
- mysql数据库练习sql语句用到的emp与dept表结构和数据
- Oracle PL/SQL语言基础
- Oracle PL/SQL语言入门基础
- ORACLE基础SQL,常用语句大集合
- Oracle PL/SQL语言基础 (2)