这是 Go 提供的操作 SQL/SQL-Like 数据库的通用接口,但 Go 标准库并没有提供具体数据库的实现,需要结合第三方的驱动来使用该接口。本书使用的是 mysql 的驱动:github.com/go-sql-driver/mysql。 注:该包有一个子包:driver,它定义了一些接口供数据库驱动实现,一般业务代码中使用 database/sql 包即可,尽量避免使用 driver 这个子
目标 面向逻辑库与逻辑表书写的SQL,并不能够直接在真实的数据库中执行,SQL改写用于将逻辑SQL改写为在真实数据库中可以正确执行的SQL。 它包括正确性改写和优化改写两部分,所以 SQL 改写的测试都是基于这些改写方向进行校验的。 测试 SQL 改写测试用例位于 sharding-core/sharding-core-rewrite 下的 test 中。SQL 改写的测试主要依赖如下几个部分:
数据准备 SQL 解析无需真实的测试环境,开发者只需定义好待测试的 SQL,以及解析后的断言数据即可: SQL数据 在集成测试的部分提到过sql-case-id,其对应的SQL,可以在不同模块共享。开发者只需要在shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/${SQ
主要内容:1. SQL创建表,删除表,SQL DELETE表SQL表是按行和列组织的数据集合。在DBMS中,表称为关系,行称为元组。 表是一种简单的数据存储形式。表也被视为关系的方便表示。 下面来看看一个表: 的示例: EMP_ID EMP_NAME CITY PHONE_NO 1 Kristen Washington 7289201223 2 Anna Franklin 9378282882 3 Jackson Bristol 9264783838 4
主要内容:使用 PHP 从 MySQL 中获取数据,AngularJS 实例,ASP.NET 中执行 SQL 获取数据,AngularJS 实例,服务端代码,跨域 HTTP 请求,1. PHP 和 MySql 代码实例,2. PHP 和 MS Access 代码实例,3. ASP.NET VB 和 MS Access 代码实例,4. ASP.NET VB Razor 和 SQL Lite 代码实例在前面章节中的代码也可以用于读取数据库中的数据。 使用 PHP 从 MySQL 中获取数据 Angu
主要内容:AUTO_INCREMENT 约束,获取 AUTO_INCREMENT 的值,对现有序列重新编号,从特定值开始增长序列是一组有顺序的整数,例如 1、2、3、4 ......。序列在数据库中经常被使用,因为很多程序都要求表中的每一行都包含唯一值,序列提供了一种生成唯一值的简单方法。 本节将介绍如何在 MySQL 中使用序列。 AUTO_INCREMENT 约束 MySQL 中使用序列的最简单方法是为某一列添加 AUTO_INCREMENT 约束。AUTO_INCREMENT 会在新记录插
主要内容:语法,示例SQL HAVING 子句通常与 GROUP BY 子句一起使用,用来过滤 GROUP BY 子句返回的分组结果集。 GROUP BY 子句通常和聚合函数(COUNT()、SUM()、AVG()、MIN()、MAX() 等)一起使用来对结果进行分组,而 WHERE 子句不能和聚合函数一起使用,所以 SQL 又提供了 HAVING 子句,以弥补了 WHERE 子句的不足。 WHERE 子句在分组操作
主要内容:语法,示例SQL AS 关键字用于为表或字段起一个临时的别名。别名是临时的,它仅在当前 SQL 语句中奏效,数据库中的实际表名和字段名不会更改。 SELECT 命令的结果集中将显示别名,而不是原始名。 通常在下列情况中使用别名: 有两个名字重复的表,需要为其中一个表起一个别名加以区分,比如 SELF JOIN。 两个表中有重复的字段名,起别名加以区分。 表名/字段名较长,或者可读性差。 语法 表别名的基本语
主要内容:语法,示例SQL UNION 子句/运算符用于合并两个或者多个 SELECT 语句的结果集。 默认地,UNION 运算符会过滤掉两个结果集中重复的记录,只保留其中一条,也就是对两个结果集进行并集操作;此外,UNION 还会按照默认规则对结果集进行排序。 如果您希望保留原始结果,请使用 UNION ALL。UNION ALL 只是对结果集进行简单粗暴的合并,不会过滤重复的记录,也不会进行排序。 语法 UNIO
主要内容:语法,示例,不同的连接类型Join 是“连接”的意思,顾名思义,SQL JOIN 子句用于将两个或者多个表联合起来进行查询。 联合表时需要在每个表中选择一个字段,并对这些字段的值进行比较,值相同的两条记录将合并为一条。联合表的本质就是将不同表的记录合并起来,形成一张新表。当然,这张新表只是临时的,它仅存在于本次查询期间。 数据库中的表可以通过键将彼此联合起来,一个典型的例子是,将一个表的主键和另一个表的外键进行匹配。在表中
主要内容:示例,删除约束SQL CHECK 约束(检查性约束)用来限制字段的取值范围。您可以在 CHECK 约束中添加限制条件,只有满足这些条件的值才允许进入该字段。 您可以为一个字段或者多个字段定义 CHECK 约束。 示例 创建一个名为 website 的新表,该表包含七个字段,我们为 age 字段添加 CHECK 约束,要求网站年龄不大于 25 岁。代码如下: 其它一些常见用法: 规定体重必须大于 0 并且小于 1
主要内容:示例,删除 UNIQUE 约束SQL UNIQUE 约束也称“唯一约束”,设置了 UNIQUE 约束的字段,每条记录的值都必须是唯一的,因此 UNIQUE 约束可以防止两条记录在某个字段上出现重复值。例如在 CUSTOMERS 表中,要防止两个或者多个顾客出现相同的姓名。 UNIQUE 可以约束表的一个字段,也可以约束多个字段。此外,设置了 UNIQUE 约束的字段可以出现 NULL 值。 UNIQUE 和 PRIMARY K
主要内容:示例,删除默认约束SQL DEFAULT 约束用于给字段指定一个默认值,当使用 INSERT INTO 语句向表中插入数据时,如果没有为该字段提供具体的值,那么就使用这个默认值。 示例 下面的 SQL 语句将创建一个名为 website 的新表,该表包含五个字段,其中 uv 和 country 字段拥有 DEFAULT 约束,默认值分别为 10.0 和空字符串 。如果 INSERT INTO 语句不为 uv 和 c
主要内容:语法,示例在 SQL 中,关键字 NULL 用来表示缺失的值,也即空值,或者没有值。NULL 值不等同于零值,也不等同于包含空格的字段,理解这一点非常重要。 表的字段默认允许存放 NULL 值,这意味着,您在插入记录或者更新记录时,可以不为该字段指定值,此时该字段将存储 NULL 值。 在查询结果中,空值将显示为空白或者 NULL,如下所示: sir_name name marks TYAGI SEEMA
主要内容:语法,示例SQL DISTINCT 关键字需要和 SELECT 语句一起使用,用来删除结果集中所有重复的记录,仅保留唯一的一条记录。 数据表中有时候会有重复的记录,如果您只需要其中一条,就可以使用 DISTINCT 关键字。 关于 UNIQUE 关键字 UNIQUE 和 DISTINCT 的效果是等价的,都用来消除结果集中的重复记录,但是 UNIQUE 是一种老式的语法,Oracle 数据库曾经使用过。 后