***********************************************声明*********************************************************************** 

原创作品,出自 “深蓝的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_由创建表引出相关推荐

  1. MySQL 学习笔记(13)— 创建表、修改表、删除表、清空表

    1. 创建表 在 SQL 中,使用 CREATE TABLE 语句创建一个表: CREATE TABLE table_name (column1 data_type column_constraint ...

  2. mysql怎么创建表视频教程_mySQL学习入门教程——2.创建表

    二.创建表 一.创建数据表的SQL语句模型(弱类型) CREATE TABLE [IF NOT EXISTS] 表名称( 字段名1 列的类型[属性][索引], 字段名2 列的类型[属性][索引], - ...

  3. oracle与mysql创建表时的区别

    oracle创建表时,不支持在建表时同时增加字段注释.故采用以下方式: #创建表 CREATE TABLE predict_data as (id integer NOT NULL, uid varc ...

  4. mysql create table()_MySQL Create Table创建表

    表的创建命令需要: 表的名称 字段名称 定义每个字段(类型.长度等) 语法 下面是通用的SQL语法用来创建MySQL表: CREATE TABLE table_name (column_name co ...

  5. oracle表空间更改用户,ORACLE创建表空间、创建用户、更改用户默认表空间以及授权、查看权限...

    ----创建表空间---- CREATE TABLESPACE UCITDB_data LOGGING DATAFILE '/home/app/oracle/app/oracle/oradata/UC ...

  6. oracle创建用户名授权,oracle创建用户及授权创建表

    --================================ --Oracle 用户.对象权限.系统权限 --================================建立表空间和用户的 ...

  7. 创建mysql数据库,在新数据库中创建表,再尝试删除表

    创建之前,先登录数据库存 mysql -u 账号 -p密码 登录完成后,展示一下已存在的数据库 show databases; 创建数据库 create database test111; 然后展示一 ...

  8. MySQL数据库中创建表并给某个字段添加数据

    创建表并给字段插入数据使用: create table .. select 语句 之前博文完成了商品分类表(good_cates)的创建和商品分类信息的添加以及把商品表(goods)中的商品分类名称改 ...

  9. hive根据已有表创建新表_Hive基础之创建表

    1.创建基础表 在这个网页里详细记录了创建表的每个语法,下面就一一来看这些创建表的语法内容: CREATE TABLE [IF NOT EXISTS] [db_name.]table_name ``[ ...

最新文章

  1. 创建vue项目+总结使用(跨域问题+vue 创建)
  2. 数组去重与数组扁平化
  3. 《Spring Boot极简教程》附录4 Java编程简史
  4. jstack应用-查找CPU飚高的原因
  5. linux安装多路径报错,Linux操作系统配置多路径通用教程(适用于(RHEL,CentOS,SuSE等)...
  6. react回调函数_React中的回调中自动绑定ES6类函数
  7. Python_mlab_3D作图/gif
  8. 将activity设置成dialog样式如何设置窗口大小
  9. c #include如何找到文件_UNIX系统上程序员需要掌握的C编程环境的基础知识
  10. php 学习编译扩展
  11. Intel CPU命名规则
  12. 吴恩达深度学习教程及资料
  13. java保留字详解_java复习基础知识——java保留字
  14. 【项目源码】JavaWeb网上购书系统
  15. 数据可视化技术:python数据可视化工具库汇总(共21个)
  16. 用计算机画图教案评价,电脑画图教案
  17. My Sixth-First - 解数独 - By Nicolas
  18. 如何使用python刷博客浏览量---第一种方法
  19. 我的世界职业系统rpg服务器,我的世界1.8.X-1.10.X服务器七彩之风RPG混合生存群组服小游戏空岛海岛粘液丧尸世界职业...
  20. Android Studio editText去掉下划线的办法

热门文章

  1. springboot+mybatis测试时遇到java.lang.NullPointerException
  2. ssm_maven idea分模块开发
  3. halcon知识:图标对象如何存盘和读入
  4. ubuntu下安装java和tomcat安装
  5. 从S3获取数据在html表示,AWS Lambda从DynamoDB加载内容,以S3格式显示在HTML中(示例代码)...
  6. php的mpdf开发实例,mpdf自动分页加页码的方法
  7. Mybatis学习之配置优化
  8. php56wmysql_centos6.5下使用yum完美搭建LNMP环境(php5.6)【Fizzday整理】
  9. python转csv_python如何将列表存储为csv文件
  10. Spring框架关于事务处理的API和使用步骤