[first|afterColName] 数据库约束 5种完整性约束 1、NOT NULL:非空约束,指定某列不能为空。...Sname, Spass) REFERENCES 主表名(Fname, Fpass) ); 2、级联删除(定义当删除主表记录时,从表记录也会随之级联删除/从表记录的外键设置为null) CREATE...创建索引: 1、自动 当在表上定义主键约束、唯一约束、外键约束时,系统自动创建对应的索引。...2、手动 CREATE INDEX 索引名 ON 表名(name, pass); 删除索引: 1、自动 数据表被删除时,该表上的索引自动被删除。...出现在from语句后当成数据表; 出现在where条件后作为过滤条件的值; 子查询要用括号括起来; 把子查询当成数据表时,可以为该子查询起别名。
6.1、主键约束 主键约束的特点有:非空、唯一、被引用 当表的某一列被指定为主键后,该列就不能为空,不能有重复值出现。 1....主键自增长 因为主键列的特点是:必须唯一,不能为空,所以我们通常会指定主键类为整型,然后设置其自动增长,这样可以保证在插入数据时主键列的唯一和非空特性。...; ü 子查询和父查询可以针对不同张表; ü 子查询与父查询在传统参数时,数量要相同 ü 父查询的条件要与子查询的结果,在参数数量、类型、含义上要相同 查询部门名为‘SALES’的员工信息(多表查询...父查询用=//>=/<=来比较 多行子查询:子查询会返回多个结果,例如20,30,父查询用in/any/all来比较 查询部门名为‘ACCOUNTING’或‘SALES’的员工信息(多行子查询,使用...to 新表名 注意:修改表时,不会影响表中原有的数据 三、JDBC基础 1、什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,简单来说,就是用Java
,而且禁止使用临时表 --2.数据表的存储引擎只能为InnoDB /* 3.外键列和参照列必须具有相似的数据类型。...必须保证子表列没有指定NOT NULL) 3.RESTRICT:拒绝对父表的删除或更新操作 4.NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同 --例子 CREATE...,而且禁止使用临时表 --2.数据表的存储引擎只能为InnoDB /* 3.外键列和参照列必须具有相似的数据类型。...--或者tb_name alias_name 赋予别名 --table_subquery 可以作为子查询使用在FROM子句中,这样的子查询必须为其赋予别名 --内连接,显示左表及右表符合连接条件的记录...B(在没有指定WHERE条件的情况下) 如果数据表A的某条记录符合WHERE条件,但是在数据表B不存在符合连接条件的记录,将生成一个所有列为空的额外的B行 */ --左外连接,显示左表的全部记录及右表符合连接条件的记录
自动增长的,每条数据,自动在上一个记录数上加1(默认) 通常设置主键,且必须是整数类型 可以自定义设置主键自增的起始值和步长 2.4.4 null 和 not null null ,如果不填写值,默认就是...null not null,如果不填写值就会报错 2.4.5 业务中每个表必须存在的5个字段 字段名 说明 id 主键 version 乐观锁 is_delete 逻辑删除 gmt_create 创建时间...count(*),效率第 -- 推荐使用count(1),或者 count(主键列) -- 强调:使用count(非主键列),如果当前列值允许为空,统计时遇到值为空的记录时,不会计数 select count...值跟任何数运算结果都是null,而我们有时候又需要对null进行计算; -- 语法: ifnull(数据列,如果为null的默认值),这个时mysql特有的,oracle没有,它里面是nvl() -...-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 --> maxWait=60000 #JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;] #注意
FROM test; -- 结论:如不指定Where则删除该表的所有列数据,自增当前值依然从原来基础上进行,会记录日志. -- 删除表数据(truncate) TRUNCATE TABLE test.../* 自连接 数据表与自身进行连接 需求:从一个包含栏目ID , 栏目名称和父栏目ID的表中 查询父栏目名称和其他子栏目名称 */ -- 创建一个表 CREATE TABLE `category...,子栏目名称) -- 核心思想:把一张表看成两张一模一样的表,然后将这两张表连接查询(自连接) SELECT a.categoryName AS '父栏目',b.categoryName AS '子栏目...-- count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。即不统计字段为null 的记录。...-- count(*) 包括了所有的列,相当于行数,在统计结果的时候,包含字段为null 的记录; -- count(1) 用1代表代码行,在统计结果的时候,包含字段为null 的记录 。
: com.mysql.cj.jdbc.Driver 否则运行测试用例的时候会有 WARN 信息 2、连接地址url MySQL5.7版本的url: jdbc:mysql://localhost...ID 批量删除) * * @param idList 主键ID列表(不能为 null 以及 empty) */ int deleteBatchIds(@Param(...@TableName 在使用MyBatis-Plus实现基本的CRUD时,我们无需指定要操作的表,只需在Mapper接口继承BaseMapper时,设置了泛型(User),由BaseMapper的泛型决定...@TableId MyBatis-Plus在实现CRUD时,会默认将id作为主键列,并在插入数据时,默认基于雪花算法的策略生成id,若实体类和表中表示主键的不是id,而是其他字段,例如uid,MyBatis-Plus...中仍旧能看到此条数据记录 使用场景:可以进行数据恢复 在数据库表中首先添加字段表示逻辑删除 测试删除功能,真正执行的是修改,当再次查询时,被逻辑删除的数据默认不会被查询 UPDATE t_user
-126 42829 不能为一个UPDATE语句指定ORDER BY语句 -127 42905 在子选择中DISTINCT只能指定一次 -128 42601 SQL谓词中NULL使用不当 -129 54004...可改变主健列值的更新语句不能在同一时刻用于更新多行 -535 21502 当从自我引用表中删除数据或者更新主健列时,不能指定WHERE CURRENT OF。...BYDEFAULT属性的ROWID列 -542 42831 可以为空的列不允许作为主健的一部分包含在内 -543 23511 因为该表是指定了SET NULL删除规则的参照约束的父表而且检查约束不允许...42613 指定语句时相互排斥的(例如,不能分区一个分段的表空间) -629 42834 因为该外健不能包含空值,所以SET NULL无效 -630 56089 不能为1型索引指定WHERE NOT NULL...表的记录长度超过了页面的大小 -671 53040 不能更改指定的表空间的缓冲池,因为这将改变表空间的页面大小 -672 55035 在命名的表上不允许DROP -676 53041 只有4KB的缓冲池可被用于一个索引
当应用程序尝试执行数据库操作(例如查询、插入、更新或删除)时,如果发生任何数据访问错误,Spring会抛出这个异常。...具体场景可能包括: 数据库连接失败 SQL语法错误 数据类型不匹配 违反数据库约束 例如,在一个Spring Boot应用程序中,尝试通过JDBC模板查询数据库时,可能会遇到这个异常。...数据库连接问题:数据库服务器不可用或配置错误。 数据类型不匹配:Java对象和数据库表的字段类型不一致。 违反约束条件:如违反唯一约束或外键约束。...,而数据库表的id列不允许null值,会导致DataIntegrityViolationException。...五、注意事项 在编写代码时,请注意以下事项: 数据类型匹配:确保Java对象的字段类型与数据库表的列类型匹配。 SQL语法检查:在执行SQL语句之前,仔细检查语法错误。
: 行为 说明 NO ACTION 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。...(与 RESTRICT 一致) 默认行为 RESTRICT 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有则不允许删除/更新。...(与 NO ACTION 一致) 默认行为 CASCADE 当在父表中删除/更新对应记录时,首先检查该记录是否有对应外键,如果有,则 也删除/更新外键在子表中的记录。...SET NULL 当在父表中删除对应记录时,首先检查该记录是否有对应外键,如果有则设置子表 中该外键值为null(这就要求该外键允许取null)。...SET DEFAULT 父表有变更时,子表将外键列设置成一个默认的值 (Innodb不支持) 外键约束条件修改代码: ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN
1.1.6 单行处理函数 ifnull(可能为null的数据被当作什么处理):属于单行处理函数分组。 1.1.7 结果集的去重 distinct 关键字去除重复记录(只能出现在所有字段的最前面)。...1.2.1 简单连接 连接查询实际是通过表与表之间相互关联的列进行数据的查询,对于关系数据库来说,连接是查询最主要的特征。...in (select * isbn from brrowrecord where reader_id='201801'); 1.3.2 带有比较运算符的子查询 指父查询与子查询之间用比较运算符连接...where reader_id="201801"); 1.3.4 带有EXISTS谓语的子查询 EXISTS谓语的子查询不返回任何数据,是一个布尔值(true或false)逻辑判断。...## 删除所有记录 delete from test where pid==123; #删除id为123的这条记录。
在修改列允许Null时,可能会涉及到已存在的数据。如果列属性从不允许Null变为允许Null,可能需要处理现有数据以确保数据的一致性和完整性。...外键用于关联其他表的主键或唯一键 案例: 对学生表进行数据插入: 注:当我们想删除父表时,则需要先删除 子表,再删除 父表。...指定外界约束时,要求父表这一列,得是主键或者 unique,范例: 4.3 查询(DQL) SELECT 字段列表 FROM 表名列表 WHERE 条件列表 GROUP BY 分组字段列表 HAVIJNG...左外连接 (LEFT JOIN) 左连接返回左表中的所有记录以及右表中匹配的记录。...子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询 单行子查询:返回一行记录的子查询 多行子查询:返回多行记录的子查询 -- 错误范例 select name from employees
一对多 一种常见的表关系,在这种关系中,父表的每一条记录可以与子表中的多条记录相关联。 多对多 多对多关系通常需要一个中间表来映射两张表的关系。 4....FROM 表1,表2 where 表1.列名 = 表2.列名; 6.2 左连接(LEFT JOIN) 左连接(也叫左外连接)返回左表中的所有记录,以及右表中匹配的记录。...如果右表中没有匹配的记录,结果中的右表字段将为NULL。 SELECT 列1, 列2, ......FROM 表1 LEFT JOIN 表2 ON 表1.列名 = 表2.列名; 6.3 右连接(RIGHT JOIN) 右连接(也叫右外连接)与左连接类似,不同之处在于它返回右表中的所有记录,以及左表中匹配的记录...如果左表中没有匹配的记录,结果中的左表字段将为NULL。 SELECT 列1, 列2, ...
数字类型不匹配:如果通过ODBC或JDBC提供了无效的双精度数,则会出现SQLCODE-104错误。 每个字段值必须将显示传递到逻辑模式转换。...试图将子查询指定为字段值将导致SQLCODE -144错误。 插入操作 Privileges 要将一行或多行数据插入到表中,您必须拥有该表的表级特权或列级特权。...可以使用%CHECKPRIV来确定是否具有适当的列级特权。 快速插入 当使用JDBC在表中插入行时 IRIS默认情况下会自动执行高效的Fast Insert操作。...快速插入必须在表上执行。 不能在可更新视图上执行。 当表具有以下任何特征时,不执行快速插入: 该表使用嵌入式(嵌套)存储结构(%SerialObject)。 该表是一个链接的表。 该表是子表。...(3)在事务期间应用表锁,不执行记录锁。
,将错误代码格式化成标准的JDBC错误代码。...JDBC中执行SQL语句可以使用Statement接口以及其子接口PreparedStatement接口,下面分别使用不同接口来举例简单说明其用法: 5.1.Statement接口方法创建表: /**...void rollback() 撤销对数据库执行的添加、删除或者修改记录等操作,并释放此Connection对象当前持有的所有数据库锁。...是Statement的子接口。 创建PreparedStatement对象时需传入一个SQL语句,该SQL语句已预编译并存储在PreparedStatement对象中。...为实现最大的可移植性,应按从左到右的顺序读取每一行中的结果集列,并且每一列只能读取一次。 getter方法用列名检索时传入的列名称不区分大小写。 当多个列具有相同的名称时,将返回第一个匹配列的值。
,不能满足海量数据的高效率读写 不节省空间。...添加一列 alter table 表名 add 列名 数据类型 修改列名称 类型 alter table 表名 change 列名 新列别 新数据类型 删除列 alter table 表名 drop...值不能为null 创建表时添加约束 create table 表名( 字段 类型 not null ); 创建表完后,添加非空约束 alter table 表名 modify 字段...类型 not null 删除字段的非空约束 alter table 表名 modify 字段类型 唯一约束:unique,值不能重复 注意 唯一约束可以有null值,但是只能有一条记录为...null 在创建表时,条件唯一约束 create table 表名( 字段 类型 unique ); 删除唯一约束 alter table 表名 drop index 字段 在表创建完后
删除列 alter table 表名 drop 列名; 4....删除数据: * 语法: delete from 表名 where 条件; -- 删除具体某一行数据 注意: 如果不加条件,则删除表中所有记录; 如果要删除所有记录: 1.delete from 表名;...有多少条记录就会执行多少次删除操作,效率低; 2.truncate table 表名; --推荐使用,效率更高;先删除表,然后再创建一张一模一样的表。...null值; 解决方案: 选择不包含非空的列进行计算; ifnull函数。...三大范式: 第一范式(1NF):每一列都是不可分割的院子数据项(只要能表能出来,都符合第一范式); 第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于码(在1NF基础上消除非主属性对主码的函数部分依赖
1.关于表 表示数据库存储数据的基本单位。一个表可以包含若干个字段或者是记录。表的操作包括创建表、修改表、删除表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性约束的过程。...表名 ADD PRIMARY KEY (字段名) 2.3使用外键: 外键用来在两个数据表之间建立连接,它可以是一列,也可以是多列; 语法: 在创建表的时候添加 字段1 数据类型 [完整性约束...,一定是父表的主键列 2.关联的父表如果为联合主键是,先关联联合主键中的第一个字段 3.关联父表时,被关联的外键的数据类型要和父表主键的数据类型一致,否则关联失败 4.关联父表时,父表和子表的存储引擎必须为...5.要避免书写错误 6.如果两个表之间有外键关联,如果我们想要删除父表,必须先解除外键的关系,或者先删除掉子表, 否则无法删除父表 2.4使用非空约束 非空约束指字段的值不能为空 语法: 在创建表时...: drop table 表1,表2,表N… [IF EXISTS]:不加这个,如果我们要删除的表不存在就会报错,加上呢,不存在也会执行删除操作,不会返回错误信息 注意:如果我们要删除的表是另一个设置了外键的表的父表
jdbc:子协议:子名称 协议:JDBC URL中的协议总是jdbc 子协议:子协议用于标识一个数据库驱动程序 子名称:一种标识数据库的方法。...有一个指针指向数据表的第一条记录的前面。...JDBC API小结 两种思想 面向接口编程的思想 ORM思想(object relational mapping) 一个数据表对应一个java类 表中的一条记录对应java类的一个对象...为确保数据库中数据的一致性,数据的操纵应当是离散的成组的逻辑单元:当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应全部视为错误,所有从起始点以后的操作应全部回退到开始状态...void commitAndCloseQuietly(Connection conn): 用来提交连接,然后关闭连接,并且在关闭连接时不抛出SQL异常。
1.关于表 表示数据库存储数据的基本单位。一个表可以包含若干个字段或者是记录。表的操作包括创建表、修改表、删除表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性约束的过程。...2.3使用外键: 外键用来在两个数据表之间建立连接,它可以是一列,也可以是多列; 语法: 在创建表的时候添加 字段1 数据类型 [完整性约束], 字段2 数据类型 [完整性约束], 字段N...注意; 1.关联的父表列,一定是父表的主键列 2.关联的父表如果为联合主键是,先关联联合主键中的第一个字段 3.关联父表时,被关联的外键的数据类型要和父表主键的数据类型一致,否则关联失败 4.关联父表时...5.要避免书写错误 6.如果两个表之间有外键关联,如果我们想要删除父表,必须先解除外键的关系,或者先删除掉子表, 否则无法删除父表 2.4使用非空约束 非空约束指字段的值不能为空 语法: 在创建表时...3.9 删除数据表; 语法 : drop table 表1,表2,表N… [IF EXISTS]:不加这个,如果我们要删除的表不存在就会报错,加上呢,不存在也会执行删除操作,不会返回错误信息 注意
领取专属 10元无门槛券
手把手带您无忧上云