转自:https://blog.csdn.net/yaerfeng/article/details/7231093 在MySQL中,使用auto_increment类型的id字段作为表的主键,并用它作为其他表的外键,形成“主从表结构”,这是数据库设计中常见的用法.但是在具体生成id的时候,我们的操作顺序一般是:先在主表中插入记录,然后获得自动生成的id,以它为基础插入从表的记录. 这里面有个困难,就是插入主表记录后,如何获得它对应的id.通常的做法,是通过“select max(id) from
1, 简单说明. select * from tb_name where 1[不为零即可];则会显示所有记录,select * from tb_name where 0;则不显示任何记录 假设数据库中的一个字段aaa的值有1,2,3.当查询语句为 select * from tb_name where aaa & 1; 则查询结果中会显示出aaa为1和3的所有记录,而不会有aaa为2的记录. 查询过程为:每条记录中的aaa字段和1做位与运算&;结果不为0则显示,为零则不显示. 2, 一个
什么是竞态问题? 假设有一个计数器,首先当前值自增长,然后获取到自增长之后的当前值.自增长后的值有可能被有些操作用来当做唯一性标识,因此并发的操作不能允许取得相同的值. 为什么不能使用使用UPDATE语句更新计数器,然后SELECT语句获取自增长后的当前值?问题在于并发的操作有可能获取到相同的计数器值. CREATE TABLE counters ( id INT NOT NULL UNIQUE, -- 计数器ID,多个计数器可以存在一个表中, value INT -- 计数器当前值 ); --
今天在做项目过程中,查询一个表中数据时总碰到这个问题: java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date 查看数据库,发现某一字段为date类型,字段值为'0000-00-00' ;查看代码,我用的是rs.getString("字段名");于是把代码改成getDate("字段名");问题依旧! 查找资料发现:在数据库连接url后面加上ze
我们有时候在写Insert语句的时候会遇到values里面的个别列的值需要从别的表中查询获取,这时候SQL语句需要使用向表中插入多条数据的写法: INSERT INTO LoginRecordInfoes select( select Email from Users WHERE UserName='dddd'),'2017-08-03 13:47:25.977','::1','uuuuu' UNION SELECT ','test' 其中,select Email from Users WH