首页
学习
活动
专区
圈层
工具
发布

SQL标准:SQL92、SQL99

SQL有两个主要的标准,分别是 (1)SQL92:92年提出的标准规范,SQL92的形式更简单,但是写的SQL语句会比较长,可读性差。也被叫做SQL-2标准。...需要注意的是,ORACLE中支持SQL99的全外连接;但是在MySQL中是不支持全外连接的,可以通过使用左外连接,右外连接,结合UNION来实现全外连接的功能 而在SQL92中,外联接使用(+),(+)...所在位置代表了从表所在的位置,现在用SQL92可以将上面SQL修改一下: -- 左外连接 SELECT * FROM 表A, 表B ON 表A.key = 表B.key(+); -- 右外连接 SELECT...* FROM 表A, 表B ON 表A.key(+) = 表B.key; -- 全外连接 SQL92中好像没有全外连接,具体有时间再查看一下文档 ORACLE 对SQL92的此种表外连接有比较好的支持...,MySQL不支持 两表内连接 SQL99中的各种写法如下: 1、笛卡尔积(交叉连接) -- 以下三种情况都会出现笛卡尔积 SELECT * FROM 表A CROSS JOIN 表B; SELECT

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java项目实践,JDBC连接oracle数据库的十大技巧

    Java数据库连接(JDBC)API是一系列能够让Java编程人员访问数据库的接口,各个开发商的接口并不完全相同。...7、使用Oracle locator方法插入、更新大对象(LOB)   Oracle的PreparedStatement类不完全支持BLOB和CLOB等大对象的处理,尤其是Thin驱动程序不支持利用PreparedStatement...对象的setObject()和setBinaryStream()方法设置BLOB的值,也不支持利用setCharacterStream()方法设置CLOB的值。...8、使用SQL92语法调用存储过程   在调用存储过程时,我们可以使用SQL92或Oracle PL/SQL,由于使用Oracle PL/SQL并没有什么实际的好处,而且会给以后维护你的应用程序的开发人员带来麻烦...,因此,我建议在调用存储过程时使用SQL92。

    1.3K20

    JavaWeb(四)JDBC操作Oracle

    推荐使用 :Class.forName("com.mysql.jdbc.Driver"); 加载Driver类时完成驱动注册,使得程序不依赖MySQL的API ***** 不要引入 与数据库相关 具体...API JDBC URL jdbc:mysql://localhost:3306/day13 这里 jdbc: 是JDBC连接协议 这里 mysql:// 是mysql数据库连接协议,JDBC子协议...()  返回Statement对象,操作SQL后 产生ResultSet 默认执行next 向前滚动,不支持在滚动中对数据进行修改 (只读不执行滚动) Connection 接口还提供 createStatement...ResultSet.CONCUR_UPDATABLE 支持修改 常见三种组合 ResultSet.TYPE_FORWARD_ONLY 和 ResultSet.CONCUR_READ_ONLY  (默认) 只读不支持向回滚动...private static ResultSet rs;// public static void main(String[] args) { init();//调用链接的方法

    1.7K40

    Mysql Proxy盘点

    TDDL并非独立的中间件,只能算作中间层,是以Jar包方式提供给应用调用。...CDS是一款基于客户端开发的分库分表中间件产品,实现了JDBC标准API,支持分库分表,读写分离和数据运维等诸多功能;提供高性能,高并发和高可靠的海量数据路由存取服务,业务系统可近乎零成本进行介入,目前支持...MySQL, Oracle和SQL Server。...与SQL92标准的兼容度达90%以上; 支持读写分离和数据节点高可用; 支持数据节点在线扩缩容、在线更改表分布; 提供完善的数据库管理工具、Web和命令行工具; 数据节点支持Oracle和MySQL;...5)、Maxscale MaxScale是mariadb研发的,目前版本不支持分库分表 6)、dble 爱可生的,官方网址:https://opensource.actionsky.com/ 7)、Oceanus

    2.2K30

    MySQL基础-多表查询

    ,则连接条件中左边的表也称为 主表 ,右边的表称为 从表 如果是右外连接,则连接条件中右边的表也称为 主表 ,左边的表称为 从表 SQL92:创建内连接 SELECT last_name, department_name...在 SQL92 中采用(+)代表从表所在的位置。...即左或右外连接中,(+) 表示哪个是从表,Oracle 对 SQL92 支持较好,而 MySQL 则不支持 SQL92 的外连接 而且在 SQL92 中,只有左外连接和右外连接,没有满(或全)外连接 #...使用FULL JOIN 或 FULL OUTER JOIN来实现 需要注意的是,MySQL不支持FULL JOIN,但是可以用 LEFT JOIN UNION RIGHT join代替 三、UNION的使用...SQL92 中的等值连接 它会帮你自动查询两张连接表中 所有相同的字段 ,然后进行 等值连接 在SQL92标准中: SELECT employee_id,last_name,department_name

    3.4K20

    mysql多表查询 浅谈mysql中等值连接与非等值连接、自连接与非自连接、内连接与外连接问题(一)

    corresponds to your MySQL server version for the right syntax to use near ')' at line 3 [SQL] #满外连接: MySQl不支持...内连接: 合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行 外连接: 两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的 行 ,这种连接称为左(或右...如果是右外连接,则连接条件中右边的表也称为 主表 ,左边的表称为 从表 。 SQL92:使用(+)创建连接 在 SQL92 中采用(+)代表从表所在的位置。即左或右外连接中,(+) 表示哪个是从表。...Oracle 对 SQL92 支持较好,而 MySQL 则不支持 SQL92 的外连接。...department_name FROM employees ,departments WHERE employees.department_id(+) = departments.department_id; 而且在 SQL92

    3.9K20

    【DB宝26】在Oracle 19c中创建容器数据库(3)--手动创建CDB

    您可以使用新子句SEED FILE_NAME_CONVERT重命名种子可插拔数据库的数据文件,同时从根容器执行复制操作。该子句会创建种子可插拔数据库及该数据库自己的数据文件。...种子数据文件会从根数据文件复制到另一个位置。种子数据文件可用作创建未来PDB的模板。如果省略此子句,Oracle Managed Files会决定种子文件的名称和位置。...OLAP API 18.0.0.0.0 VALID OLS Oracle Label Security...此时会创建根容器和种子可插拔数据库。您可以使用另一个子句SEED FILE_NAME_CONVERT指定种子文件的位置。如果省略此子句,OMF会决定种子文件的名称和位置。...FILE_NAME_CONVERT指定复制到目标种子目录的根数据文件的源目录。 在本例中,/oracle/dbs和/oracle/seed目录必须存在。

    5K20

    【MySQL】JDBC编程

    ---- 数据库编程的必备条件 编程语言,如Java,C、C++、Python等 数据库,如Oracle,MySQL,SQL Server等 数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包...同样的,要基于Java操作Oracle数据库则需要Oracle的数据库驱动包ojdbc。 在实际开发中,SQL很少是手动输入的,绝大多数SQL都是通过代码,自动执行的。...这个API中有一些随机数,scanner,集合类。数据库(MySQL)也会提供一组API,通过这组API就可以操作数据库,完成各种增删改查的操作。...创建数据源DataSourece 第一步,创建DataSource对象,用来描述数据库位置。...每次调用next,光标往下一行走,当光标指向某一行的时候,就可以通过getXXX来获取到当前这行里的数据。

    1.7K30

    matinal:高质量内存数据库技术选型推荐(一)

    SQL标准支持不全 在它的官方网站上,具体列举了不支持哪些SQL92标准。我个人感觉比较不爽的是不支持外键约束。...假如你不喜欢面向过程的C API风格,可以另外找个C++的包装库。想重新发明轮子的同学,也可以自己包装一个。...一般的数据库打开操作需要调用sqlite3_open()函数,并且标记一个显式本地事务的起始点(BEGIN TRANSACTION)来保证以独占的方式得到文件的内容....文件保存将执行一个提交(COMMIT)同时标记另一个显式本地事务起始点. 这种事务处理的作用就是保证对于应用程序数据文件的更新是原子的、持久的、独立的和一致的....连接方式支持 支持ODBC 默认不支持,必须通过第三方的ODBC驱动 支持JDBC 默认不支持,必须通过第三方的JDBC驱动 支持内存访问 通过c接口(专用API) 支持网络访问 不支持

    2.4K10

    jdbc驱动加载机制

    这里主要是因为最近使用jdbc连接数据库时,发现相比之前一般的连接过程,现在竟然不用加载驱动也可以了。这里研究记录下。 JDBC JDBC是一个连接数据库的Java API,包含了相关的接口和类。...但是,他不提供针对具体数据库(MySQL、MS、Oracle)的实际操作,而只是提供了接口,以及调用框架。...和具体数据库的直接交互由对应的驱动程序完成,比如mysql的mysql-connector、oracle的ojdbc、MS的sqljdbc等。 也就是说它实际上是一种规范。...…1的位置是在DriverManager类加载是执行的静态初始化块,这里会调用loadInitialDrivers方法。...再看loadInitialDrivers方法里面标记…2的位置,这里调用的 ServiceLoader.load(Driver.class); 就会加载所有在META-INF/services/java.sql.Driver

    2.8K20

    Spring StoredProcedure调用ORACLE存储过程或函数

    ,调用存储过程不要 sp.setFunction(true); //设置返回参数名(将来通过此名称获取输出的返回结果),返回参数需在IN参数前定义 //返回类型Types.ARRAY,自定义类型名称(自定义...oracle的TYPE必须在package之上定义,可以在schema层次定义,package内不支持,参见下段“无效的名称模式”) //sp.declareParameter(new SqlOutParameter...报错后oracle会自动更新此session中的包状态,所以再次执行则会成功,如前文代码所示。...", line 192 ORA-06512: 在 line 1 ; nested exception is java.sql.SQLException: ORA-04068: 已丢弃程序包 的当前状态...当package中使用了自定义array类型时,jdbc调用会出现”无效的名称模式”错误提示。

    1.6K30

    Java小技能:Java Data Base Connectivity

    引言 JDBC是一种用来在Java程序中执行SQL的API,它为java连接数据库提供了一组接口和类,可以为多种关系数据库提供统一访问。...预备知识 1.1 JDBC JDBC有一组应用程序的API,用来开发java连接数据库的应用程序;jdbc驱动api提供给数据库厂商,数据库厂商负责实现底层的编码。...:JDBC Api ->driver; 2.1 准备连接数据库的相关数据 获得当前数据库连接的用户名和密码 获得数据库服务器的地址(ip) 获得数据库连接的端口号: oracle默认的是1521,mysql....jar 2.2 书写jdbc程序步骤 加载oracle驱动:导入oracle数据库的驱动oracle.jdbc.OracleDriver或者oracle.jdbc.driver.OracleDriver...=null){rconnclose();} prepareCall(String sql); 用于调用存储过程 conn.setAutoCommit(false); 设置当前jdbc的事物处理为手动

    66420
    领券