常用易忘sql
常用易忘sql
ORACLE預設是根據ROWID來排序的啊,ROWID是資料庫唯一標識不能更改的,
所以你想在資料庫更改順序是不可能。只能透過索引對欄位排序,之後使用索引,
這樣效果其實一樣的。
關於表空間:
1 檢視錶空間:
select *from v$tablespace;
2 建立臨時表空間
create temporay tablespace temp1 tempfile
'/home/oracle/app/oradata/orcl/temp1.dbf' size 20M;
3 建立資料表空間
create tablespace data datafile '/home/oracle/app/oradata/orcl/data.dbf'
size 20M;
4 建立oudo表空間
create undo tablespace undo_dud datafile '/home/oracle/app/oradata/oral/undo_dud.dbf'
size 20M;
5 更改undo表空間屬性
alter system set undo_talespace=undo;
關於表屬性:
1 表的後面增加一個屬性
alter table emp add (ename varchar2(10) not null);
2 在固定屬性後面新增一個屬性
alter table emp add (job varchar2(9) not null) afer ename; (不行)
3 檢視錶在哪個表空間下
select table_name, tablespace_name from user_tables where table_name='EMP';
(這裡EMP一定要大寫)
4 更改列屬性
alter table emp modify job varchar2(5);
5 檢視錶的屬性
desc emp;
6 清空表
truncate table ‘emp’;
6 檢視錶的行數
select count(column_id) from user_tab_columns where tabel_name = 'emp';
7 修改關係表的名字
alter table emp rename to ddemp;
8 修改表屬性名字
alter table emp rename column empno to id;
9 刪除行屬性
alter table emp drop column empno;
查詢語句:
1 找出有獎金的員工的不同工作
select distinct job from emp where comm is not null and comm>0;
2 找出部門10中既不是經理也不是普通員工,而且工資大於2000的員工
select *from emp where deptno=10 and job not in ('manager', 'clerk') and sal>2000;
3 顯示僱員名字,根據其服務年限,將最老的僱員排在最前面
select ename from emp order by hiredate;
4 查詢工資與獎金的總共total
select sal, comm, nvl2(comm, sal+comm, sal) total from emp;
5 查詢在相同deptno的人的平均工資的最高
select max(avg(sal)) from emp group by deptno;
6 算出部門30中得到最多獎金的員工的姓名
select ename from emp where comm = (select max(comm) from emp where deptno=30);
7 算出每個職位員工數的和最低工資
select job,min(sal), count(*) from emp group by deptno;
8
select deptno, job, avg(sal)
from emp
where hiredate>=to_date('1981-05-01', 'yyyy-mm-dd')
group by deptno, job
having avg(sal)>1200
order by deptno, job;
9 統計各個部門下平均工資大於500的部門
select deptno, avg(sal) from emp group by deptno having avg(sal)>500;
10 將第一個字母變成大寫
select initcap('hello world') from dual;
SQL 中的 TRIM 函式是用來移除掉一個字串中的字頭或字尾。最常見的用途是移除字首或字尾的空白。這個函式在不同的資料庫中有不同的名稱:
MySQL: TRIM(),RTRIM(),LTRIM()
Oracle: RTRIM(),LTRIM()
SQL Server: RTRIM(),LTRIM()
11 算出每個職位的員工數和最低工資
select job, min(sal), count(*) from emp group by job;
12 得到工資大於自己部門平均工資的員工的資訊
select *from emp e1, (select depno, avg(sal) as avgsal from emp group by deptno)e2
where e1.deptno=e2.deptno and e1.sal>e2.avgsal;
13 分組統計每個部門下,每種職位的平均獎金 (也要算沒得獎金的人) 和總工資 (包括獎金)
select deptno, job, avg(nvl(comm, 0)), sum(sal+nvl(comm, 0)) from emp group deptno, job;
14算出每個部門,每個職位的平均工資和平均獎金, 如果平均獎金大於300,顯示。。
按部門編號降序,平均工資降序排列
SELECT EMPNO, ENAME, SAL,
CASE DEPTNO
WHEN 10 THEN '10'
WHEN 20 THEN '20'
WHEN 30 THEN '30'
ELSE 'ELSE'
END DEPTNO
FROM EMP;
ORACLE預設是根據ROWID來排序的啊,ROWID是資料庫唯一標識不能更改的,
所以你想在資料庫更改順序是不可能。只能透過索引對欄位排序,之後使用索引,
這樣效果其實一樣的。
關於表空間:
1 檢視錶空間:
select *from v$tablespace;
2 建立臨時表空間
create temporay tablespace temp1 tempfile
'/home/oracle/app/oradata/orcl/temp1.dbf' size 20M;
3 建立資料表空間
create tablespace data datafile '/home/oracle/app/oradata/orcl/data.dbf'
size 20M;
4 建立oudo表空間
create undo tablespace undo_dud datafile '/home/oracle/app/oradata/oral/undo_dud.dbf'
size 20M;
5 更改undo表空間屬性
alter system set undo_talespace=undo;
關於表屬性:
1 表的後面增加一個屬性
alter table emp add (ename varchar2(10) not null);
2 在固定屬性後面新增一個屬性
alter table emp add (job varchar2(9) not null) afer ename; (不行)
3 檢視錶在哪個表空間下
select table_name, tablespace_name from user_tables where table_name='EMP';
(這裡EMP一定要大寫)
4 更改列屬性
alter table emp modify job varchar2(5);
5 檢視錶的屬性
desc emp;
6 清空表
truncate table ‘emp’;
6 檢視錶的行數
select count(column_id) from user_tab_columns where tabel_name = 'emp';
7 修改關係表的名字
alter table emp rename to ddemp;
8 修改表屬性名字
alter table emp rename column empno to id;
9 刪除行屬性
alter table emp drop column empno;
查詢語句:
1 找出有獎金的員工的不同工作
select distinct job from emp where comm is not null and comm>0;
2 找出部門10中既不是經理也不是普通員工,而且工資大於2000的員工
select *from emp where deptno=10 and job not in ('manager', 'clerk') and sal>2000;
3 顯示僱員名字,根據其服務年限,將最老的僱員排在最前面
select ename from emp order by hiredate;
4 查詢工資與獎金的總共total
select sal, comm, nvl2(comm, sal+comm, sal) total from emp;
5 查詢在相同deptno的人的平均工資的最高
select max(avg(sal)) from emp group by deptno;
6 算出部門30中得到最多獎金的員工的姓名
select ename from emp where comm = (select max(comm) from emp where deptno=30);
7 算出每個職位員工數的和最低工資
select job,min(sal), count(*) from emp group by deptno;
8
select deptno, job, avg(sal)
from emp
where hiredate>=to_date('1981-05-01', 'yyyy-mm-dd')
group by deptno, job
having avg(sal)>1200
order by deptno, job;
9 統計各個部門下平均工資大於500的部門
select deptno, avg(sal) from emp group by deptno having avg(sal)>500;
10 將第一個字母變成大寫
select initcap('hello world') from dual;
SQL 中的 TRIM 函式是用來移除掉一個字串中的字頭或字尾。最常見的用途是移除字首或字尾的空白。這個函式在不同的資料庫中有不同的名稱:
MySQL: TRIM(),RTRIM(),LTRIM()
Oracle: RTRIM(),LTRIM()
SQL Server: RTRIM(),LTRIM()
11 算出每個職位的員工數和最低工資
select job, min(sal), count(*) from emp group by job;
12 得到工資大於自己部門平均工資的員工的資訊
select *from emp e1, (select depno, avg(sal) as avgsal from emp group by deptno)e2
where e1.deptno=e2.deptno and e1.sal>e2.avgsal;
13 分組統計每個部門下,每種職位的平均獎金 (也要算沒得獎金的人) 和總工資 (包括獎金)
select deptno, job, avg(nvl(comm, 0)), sum(sal+nvl(comm, 0)) from emp group deptno, job;
14算出每個部門,每個職位的平均工資和平均獎金, 如果平均獎金大於300,顯示。。
按部門編號降序,平均工資降序排列
SELECT EMPNO, ENAME, SAL,
CASE DEPTNO
WHEN 10 THEN '10'
WHEN 20 THEN '20'
WHEN 30 THEN '30'
ELSE 'ELSE'
END DEPTNO
FROM EMP;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29500582/viewspace-1329700/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux常用易忘命令收集Linux
- SQL備忘SQL
- lldb常用操作備忘LLDB
- Git 常用命令備忘Git
- 常用工具備忘錄
- Git常用命令備忘Git
- PHP入門易忘知識點彙總PHP
- 常用sqlSQL
- Docker 常用命令備忘錄Docker
- Oracle DataGuard 常用命令備忘Oracle
- linux 常用命令備忘Linux
- vi常用命令備忘錄
- Android基礎第四天易忘部分Android
- 面試題常用易錯總結面試題
- 常用sql 操作SQL
- 常用的sqlSQL
- MySQL常用SQLMySql
- Oracle 常用SQLOracleSQL
- DBA常用SQLSQL
- 工作常用SQLSQL
- mysql 常用sqlMySql
- JS常用正規表示式備忘錄JS
- 網路常用密碼忘記破解方法密碼
- ExtJs4常用配置方法備忘JS
- React 全家桶實現一個簡易備忘錄React
- 易被遺忘的C/C++要點總結C++
- Android基礎第一天易忘部分Android
- Android基礎第十一天易忘部分Android
- Android基礎第五天易忘部分Android
- 【譯】JS常用正規表示式備忘錄JS
- Webstorm常用快捷鍵備忘(Webstorm入門指南)WebORM
- 備忘:npm 和 yarn 的常用源設定NPMYarn
- Android基礎第八天易忘部分(Activity)Android
- 常用SQL_2SQL
- ORACLE 常用的SQLOracleSQL
- 常用監控SQLSQL
- 常用的sql列表SQL
- GreenPlum DBA常用SQLSQL