.frm文件:保存了每个表的元数据,包括表结构的定义等,该文件与数据库引擎无关
.ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索引的文件。
在mybatis中进行单个增加或修改sql的写法为:
insert into camera_info( cameraId,zone1Id,zone1Name,zone2Id,zone2Name,zone3Id,zone3Name,zone4Id,zone4Name)
VALUES(
#{cameraId},#{zone1Id},#{zone1Name}, #{zone2Id},
#{zone2Name}, #{zone3Id}, #{zone3Name},
#{zone4Id}, #{zone4Name},)
ON DUPLICATE KEY UPDATE
cameraId = VALUES(cameraId),
zone1Id = VALUES(zone1Id),zone1Name = VALUES(zone1Name),
zone2Id = VALUES(zone2Id),zone2Name = VALUES(zone2Name),
zone3Id = VALUES(zone3Id),zone3Name = VALUES(zone3Name),
zone4Id = VALUES(zone4Id),zone4Name = VALUES(zone4Name)
进行批量增加或修改的sql为:
insert into camera_info(
zone1Id,zone1Name,zone2Id,zone2Name,zone3Id,zone3Name,zone4Id,zone4Name,
cameraId
)VALUES
(
#{cameraInfo.zone1Id}, #{cameraInfo.zone1Name}, #{cameraInfo.zone2Id},
#{cameraInfo.zone2Name}, #{cameraInfo.zone3Id}, #{cameraInfo.zone3Name},
#{cameraInfo.zone4Id}, #{cameraInfo.zone4Name},
#{cameraInfo.cameraId},
)
ON DUPLICATE KEY UPDATE
zone1Id = VALUES(zone1Id),zone1Name = VALUES(zone1Name),zone2Id = VALUES(zone2Id),
zone2Name = VALUES(zone2Name),zone3Id = VALUES(zone3Id),zone3Name = VALUES(zone3Name),
zone4Id = VALUES(zone4Id),zone4Name = VALUES(zone4Name),
cameraId = VALUES(cameraId)
3、设置字符集
创建数据库指定数据库的字符集
CREATEDATABASE IF NOT EXISTS mydb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
创建表时指定字符集
CREATETABLE table_name (id int unsigned) DEFAULT CHARACTER SET utf8 COLLATEutf8_general_ci;
创建字段时指定字符集
CREATETABLE table_name2 (id int,name char(10) CHARACTER SET utf8 COLLATE utf8_general_ci);
修改数据库字符集
alter database 数据库名 character set utf8;
修改表字符集
ALTER TABLE 表名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
修改列字符集
ALTER TABLE 表名 CHANGE 列名 列名 VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
4、mysql的时间格式和java的时间格式是保持一致对应的。
timestamp 可以对应 locatdatetime, date, offsetdatetime
date 对应 locatdate
time 对应 localtime, offsettime
5、插入前判断是否已有数据
在向表中插入数据的时候,经常遇到这样的情况:
1)、首先判断数据是否存在;
2)、如果不存在,则插入;
3)、如果存在,则更新。
replace into table(id, update_time) values(1, now());
注意:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据
另一个语句,也有同样的功能
如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新;如果插入的行数据与现有表中记录的唯一索引或者主键不重复,则执行新纪录插入操作。
INSERT INTO daily_hit_counter(day, slot, cnt) VALUES (‘2018-11-20’, 1, 2) ON DUPLICATE KEY UPDATE cnt = cnt + 1;
其中PRIMARY KEY (day, slot)
六、mysql免安装版的安装及配置
去官网下载zip包,解压,在解压的文件夹中创建my.ini配置文件;
cmd中进入D:mysql5.6.11\bin
mysqld --initialize-insecure --user=mysql命令,回车(成功的话,data目录下面就自动生成无密码的root用户,data目录如下)
mysqld install MySQL02 --defaults-file=“G:\mysql02\my.ini”
然后输入net start MySQL02,回车,启动mysql服务
输入mysql -uroot -p, 回车
启动会跳过输入密码检查的mysqld。
在命令行中输入 mysqld --skip-grant-tables