日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL_由创建表引出

發布時間:2025/3/21 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL_由创建表引出 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

***********************************************聲明***********************************************************************?

原創作品,出自 “深藍的blog” 博客,歡迎轉載,轉載時請務必注明出處,否則追究版權法律責任。

深藍的blog:http://blog.csdn.net/huangyanlong/article/details/39933069

****************************************************************************************************************************

SQL_由創建表引出

目標:
1、hyl用戶下創建表cool;
2、將scott用戶下emp表數據抽取到hyl用戶下的cool表內;
3、更改cool表內數據,把scott的emp按hyl用戶下的cool表進行更改。

操作:
SQL> create table cool ("1" number(4),"2" varchar2(10),"3" varchar2(9),"4" number(4),"5" date,"6" number(7,2),"7" number(7,2),"8" number(2));
Table created
--創建表

SQL> select * from cool;
??? 1 2????????? 3???????????? 4 5?????????????????? 6???????? 7?? 8
----- ---------- --------- ----- ----------- --------- --------- ---

SQL> desc cool
Name Type???????? Nullable Default Comments
---- ------------ -------- ------- --------
1??? NUMBER(4)??? Y????????????????????????
2??? VARCHAR2(10) Y????????????????????????
3??? VARCHAR2(9)? Y????????????????????????
4??? NUMBER(4)??? Y????????????????????????
5??? DATE???????? Y????????????????????????
6??? NUMBER(7,2)? Y????????????????????????
7??? NUMBER(7,2)? Y????????????????????????
8??? NUMBER(2)??? Y?

使用查詢語句,計劃抽取的數據,例如以下:
SQL> select t.empno as "1",t.ename as "2",t.job as "3",t.mgr as "4",t.hiredate as "5",t.sal as "6",t.comm as "7",t.deptno as "8" from scott.emp t;
??? 1 2????????? 3???????????? 4 5?????????????????? 6???????? 7?? 8
----- ---------- --------- ----- ----------- --------- --------- ---
?7369 SMITH????? CLERK????? 7902 1980/12/17???? 800.00??????????? 20
?7499 ALLEN????? SALESMAN?? 7698 1981/2/20???? 1600.00??? 300.00? 30
?7521 WARD?????? SALESMAN?? 7698 1981/2/22???? 1250.00??? 500.00? 30
?7566 JONES????? MANAGER??? 7839 1981/4/2????? 2975.00??????????? 20
?7654 MARTIN???? SALESMAN?? 7698 1981/9/28???? 1250.00?? 1400.00? 30
?7698 BLAKE????? MANAGER??? 7839 1981/5/1????? 2850.00??????????? 30
?7782 CLARK????? MANAGER??? 7839 1981/6/9????? 2450.00??????????? 10
?7788 SCOTT????? ANALYST??? 7566 1987/4/19???? 3000.00??????????? 20
?7839 KING?????? PRESIDENT?????? 1981/11/17??? 5000.00??????????? 10
?7844 TURNER???? SALESMAN?? 7698 1981/9/8????? 1500.00????? 0.00? 30
?7876 ADAMS????? CLERK????? 7788 1987/5/23???? 1100.00??????????? 20
?7900 JAMES????? CLERK????? 7698 1981/12/3????? 950.00??????????? 30
?7902 FORD?????? ANALYST??? 7566 1981/12/3???? 3000.00??????????? 20
?7934 MILLER???? CLERK????? 7782 1982/1/23???? 1300.00??????????? 10
14 rows selected

SQL> insert into cool("1","2","3","4","5","6","7","8") select t.empno as "1",t.ename as "2",t.job as "3",t.mgr as "4",t.hiredate as "5",t.sal as "6",t.comm as "7",t.deptno as "8" from scott.emp t;
--將數據按序號字段。由emp表抽取到cool表內
14 rows inserted

SQL> commit;
Commit complete

SQL> select * from cool;
??? 1 2????????? 3???????????? 4 5?????????????????? 6???????? 7?? 8
----- ---------- --------- ----- ----------- --------- --------- ---
?7369 SMITH????? CLERK????? 7902 1980/12/17???? 800.00??????????? 20
?7499 ALLEN????? SALESMAN?? 7698 1981/2/20???? 1600.00??? 300.00? 30
?7521 WARD?????? SALESMAN?? 7698 1981/2/22???? 1250.00??? 500.00? 30
?7566 JONES????? MANAGER??? 7839 1981/4/2????? 2975.00??????????? 20
?7654 MARTIN???? SALESMAN?? 7698 1981/9/28???? 1250.00?? 1400.00? 30
?7698 BLAKE????? MANAGER??? 7839 1981/5/1????? 2850.00??????????? 30
?7782 CLARK????? MANAGER??? 7839 1981/6/9????? 2450.00??????????? 10
?7788 SCOTT????? ANALYST??? 7566 1987/4/19???? 3000.00??????????? 20
?7839 KING?????? PRESIDENT?????? 1981/11/17??? 5000.00??????????? 10
?7844 TURNER???? SALESMAN?? 7698 1981/9/8????? 1500.00????? 0.00? 30
?7876 ADAMS????? CLERK????? 7788 1987/5/23???? 1100.00??????????? 20
?7900 JAMES????? CLERK????? 7698 1981/12/3????? 950.00??????????? 30
?7902 FORD?????? ANALYST??? 7566 1981/12/3???? 3000.00??????????? 20
?7934 MILLER???? CLERK????? 7782 1982/1/23???? 1300.00??????????? 10
14 rows selected

小結:
A表數據抽取到B表
SQL>insert into select B表(”B表列1”,”B表列2”,”B表列3”) select? t.”A表列1” as “B表列1”。”t.A表列2” as “B表列2”。”t.A表列3” as “B表列3” fromA表 t;


--hyl用戶下,例如以下所看到的:
SQL> update cool set "3"='DBA' where "8"=30;
6 rows updated

SQL> commit;
Commit complete

SQL> select * from cool;
??? 1 2????????? 3???????????? 4 5?????????????????? 6???????? 7?? 8
----- ---------- --------- ----- ----------- --------- --------- ---
?7369 SMITH????? CLERK????? 7902 1980/12/17???? 800.00??????????? 20
?7499 ALLEN????? DBA??????? 7698 1981/2/20???? 1600.00??? 300.00? 30
?7521 WARD?????? DBA??????? 7698 1981/2/22???? 1250.00??? 500.00? 30
?7566 JONES????? MANAGER??? 7839 1981/4/2????? 2975.00??????????? 20
?7654 MARTIN???? DBA??????? 7698 1981/9/28???? 1250.00?? 1400.00? 30
?7698 BLAKE????? DBA??????? 7839 1981/5/1????? 2850.00??????????? 30
?7782 CLARK????? MANAGER??? 7839 1981/6/9????? 2450.00??????????? 10
?7788 SCOTT????? ANALYST??? 7566 1987/4/19???? 3000.00??????????? 20
?7839 KING?????? PRESIDENT?????? 1981/11/17??? 5000.00??????????? 10
?7844 TURNER???? DBA??????? 7698 1981/9/8????? 1500.00????? 0.00? 30
?7876 ADAMS????? CLERK????? 7788 1987/5/23???? 1100.00??????????? 20
?7900 JAMES????? DBA??????? 7698 1981/12/3????? 950.00??????????? 30
?7902 FORD?????? ANALYST??? 7566 1981/12/3???? 3000.00??????????? 20
?7934 MILLER???? CLERK????? 7782 1982/1/23???? 1300.00??????????? 10
14 rows selected

--scott用戶下,運行操作,例如以下:
SQL> update emp t set (job)=(select "3" from hyl.cool p where t.empno=p."1");
--對hyl的cool表進行更新
14 rows updated

補充:通過另外一個用戶的表向本用戶下表插入數據時,應具有訪問該表的權限
如該例,需使用sys用戶向scott用戶賦予查詢hyl表的權限
SQL> grant select on hyl.cool to scott;
Grant succeeded.
補充完成

SQL> select * from emp;
--能夠看到,此時scott用戶下的emp表數據job列已經更新為同hyl用戶下的cool表同樣了
EMPNO ENAME????? JOB???????? MGR HIREDATE????????? SAL????? COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
?7369 SMITH????? CLERK????? 7902 1980/12/17???? 800.00?????????????? 20
?7499 ALLEN????? DBA??????? 7698 1981/2/20???? 1600.00??? 300.00???? 30
?7521 WARD?????? DBA??????? 7698 1981/2/22???? 1250.00??? 500.00???? 30
?7566 JONES????? MANAGER??? 7839 1981/4/2????? 2975.00?????????????? 20
?7654 MARTIN???? DBA??????? 7698 1981/9/28???? 1250.00?? 1400.00???? 30
?7698 BLAKE????? DBA??????? 7839 1981/5/1????? 2850.00?????????????? 30
?7782 CLARK????? MANAGER??? 7839 1981/6/9????? 2450.00?????????????? 10
?7788 SCOTT????? ANALYST??? 7566 1987/4/19???? 3000.00?????????????? 20
?7839 KING?????? PRESIDENT?????? 1981/11/17??? 5000.00?????????????? 10
?7844 TURNER???? DBA??????? 7698 1981/9/8????? 1500.00????? 0.00???? 30
?7876 ADAMS????? CLERK????? 7788 1987/5/23???? 1100.00?????????????? 20
?7900 JAMES????? DBA??????? 7698 1981/12/3????? 950.00?????????????? 30
?7902 FORD?????? ANALYST??? 7566 1981/12/3???? 3000.00?????????????? 20
?7934 MILLER???? CLERK????? 7782 1982/1/23???? 1300.00?????????????? 10
14 rows selected

SQL> commit;
Commit complete

小結:
把一個A表的某列更改為還有一個B表的列值,使用某一列進行關聯。


SQL> update A表 t set(列)=(select 列 from B表 p where t.列=p.列)。
例:SQL> update emp t set (job)=(select "3" from hyl.cool p where t.empno=p."1");

***********************************************聲明***********************************************************************?

原創作品,出自 “深藍的blog” 博客。歡迎轉載。轉載時請務必注明出處,否則追究版權法律責任。

深藍的blog:http://blog.csdn.net/huangyanlong/article/details/39933069

****************************************************************************************************************************

總結

以上是生活随笔為你收集整理的SQL_由创建表引出的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。