mysql操作命令梳理(2)-alter(update、insert)
在mysql运维操作中会经常使用到alter这个修改表的命令,alter tables允许修改一个现有表的结构,比如增加或删除列、创造或消去索引、改变现有列的类型、或重新命名列或表本身,也能改变表的注释和表的类型。
下面就针对alter修改命令的使用做一梳理:
在mysql运维操作中会经常使用到alter这个修改表的命令,alter tables允许修改一个现有表的结构,比如增加或删除列、创造或消去索引、改变现有列的类型、或重新命名列或表本身,也能改变表的注释和表的类型。
下面就针对alter修改命令的使用做一梳理:
1)删除列
alter table 表名 DROP 列名; # 或者 alter table 表名 drop column 列名;
##################################################
drop database 库名; # 删除库
drop table 表名; # 删除表
delete from 表名; # 清空表中所有数据,但这张表没有删除,保留的是空表。
delete from 表名 where ...; # 删除表中字段
##################################################
2)增加列
alter table 表名 ADD 列名 列的属性(如INT NOT NULL COMMENT '注释说明')
3)修改列的类型信息。 [ alter table 表名 CHANGE 列名 新列名 新列属性; ]
alter table 表名 CHANGE 列名 新列名(这里可以用和原来列同名即可) BIGINT NOT NULL COMMENT '注释说明'
4)重命名列
alter table 表名 CHANGE 列名 新列名 BIGINT NOT NULL COMMENT '注释说明'
5)重命名表
alter table 表名 RENAME 表新名
6)删除表中主键
alter table 表名 drop primary key
##################################################
如若删除带自增属性的主键,那么要先删除自增长,再删除主键
Alter table haha change id id int(10); # 删除自增长
Alter table haha drop primary key; # 删除主建
##################################################
7)添加主键
alter table 表名 ADD CONSTRAINT PK_表名 PRIMARY KEY(列名1,列名2)
##################################################
Alter table haha add primary key(id); # 将haha表的id列添加主键
Alter table haha change id id int(10) not null auto_increment; # 自增长属性
##################################################
sql中constraint前缀的用意(PK、UK、DF、CK、FK)
-- 主键
constraint PK_字段 primary key(字段),
--唯一约束
constraint UK_字段 unique key(字段),
-- 默认约束
constrint DF_字段 default('默认值') for 字段,
--检查约束
constraint CK_字段 check(约束。如:len(字段)>1),
-- 主外键关系
constraint FK_主表_从表 foreign(外键字段) references 主表(主表主键字段)
8)添加/创建索引
alter table 表名 add index 索引名 列名; # 普通索引
ALTER TABLE 表名 ADD UNIQUE index 索引名 (列名1,列名2); # 联合索引
ALTER TABLE 表名 ADD PRIMARY index KEY 索引名 列名; # 主键索引
####################################################
SHOW INDEX FROM 表名字; # 查询索引
删除索引可以使用ALTER TABLE或DROP INDEX语句来实现。DROP INDEX可以在ALTER TABLE内部作为一条语句处理
DROP index 索引名 ON 表名字 列名; # 删除普通索引
ALTER TABLE 表名 DROP INDEX 索引名 列名; # 删除普通索引
ALTER TABLE 表名 DROP UNIQUE 索引名 (列名1,列名2); # 删除联合索引
ALTER TABLE 表名 DROP PRIMARY KEY 索引名 列名; # 删除主键索引
####################################################
9)添加唯一限制条件索引
alter table 表名 add unique emp_name2(cardnumber); # empname 类型 为String 字符串类型
10)创建联合唯一索引
alter table 表名 ADD UNIQUE INDEX 索引名 (列名1,列名2);
alter ignore table 表名 add unique index(user_id,user_name); # 它会删除重复的记录(别怕,会保留一条),然后建立唯一索引,高效而且人性化.(慎用)
11)修改字段属性
alter table 表名 modify column 字段名 类型
alter table 表名 modify column 字段1 类型,字段2 类型
例如:将class表的name列属性改成varchar(100)
alter table class modify column name varchar(100);
或者:
alter table 表名 change 列名 列名 varchar(100);
alter table class change name name varchar(100);
#####################################################
上面提到了使用alter命令修改表名,修改列名;那么修改字段值,就需要使用update命令,如下:
mysql> select * from huanqiu.haha;
+----+-----------+
| id | name |
+----+-----------+
| 1 | wangshibo |
| 11 | ouou |
| 19 | hahahahha |
+----+-----------+
3 rows in set (0.00 sec) mysql> update huanqiu.haha set name="wangshikui" where id=11;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from huanqiu.haha;
+----+------------+
| id | name |
+----+------------+
| 1 | wangshibo |
| 11 | wangshikui |
| 19 | hahahahha |
+----+------------+
3 rows in set (0.01 sec)
修改root登陆密码:
mysql> update mysql.user set password=password("654321") where host='192.168.1.101' and user="root";
######################################################
update 表名 set 列名="新的字段值" [where 限制条件1 and 限制条件1];
update 表名 set 列名1="新的字段值",列名2="新的字段值" [where 限制条件1 and 限制条件1] [ORDER BY ...] [LIMIT row_count];
insert into 表名 values(所有字段的插入值);
insert into 表名(指定字段) values(指定字段);
insert into 表名 values(所有字段的插入值),(所有字段的插入值),(所有字段的插入值); # 批量插入
mysql> select * from huanqiu.haha;
+----+------------+
| id | name |
+----+------------+
| 11 | wangshikui |
+----+------------+
1 row in set (0.00 sec) mysql> insert into huanqiu.haha values(1,"wangshibo"),(2,"wangshikui"),(3,"wangjuan"),(4,"wangman");
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0 mysql> select * from huanqiu.haha;
+----+------------+
| id | name |
+----+------------+
| 1 | wangshibo |
| 2 | wangshikui |
| 3 | wangjuan |
| 4 | wangman |
| 11 | wangshikui |
+----+------------+
############################################################
mysql中有条件的插入语句(即insert into ..... where)
之前有过这样的面试题:意思是当满足了条件就执行插入语句。 咋一看有点懵,之前从来都没有考虑过满足条件才插入的情况,一直用的mysql插入语句是:
insert into table_name(column...) values(value...) 下面对insert into 插入语句的使用做个小结:
第一种情况插入指定字段
insert into table_name(column1,column2) values(value1,value2); 第二种情况插入所有字段:前提条件是字段顺序必须与表中字段顺序一致
insert into table_name values(value1,value2); 第三种情况批量插入数据
insert into table_name values(value1,value2),(value1,value2);
也可以指定插入批量数据
insert into table_name(column1,column2) values(value1,value2),(value1,value2); 第四种情况就是当满足了指定条件时才插入数据
insert into (column1,column2) select value1,value2 from table_name where ...
也就是后面select子句中查询出来的列作为前面的值插入到表中,但是这个列的个数要和前面的字段个数一致。select子句就可以随便写了。
例如:
insert into kevin(kevinno,dname,loc) select 11,kevin.dname,kevin.loc from kevin where kevinno=22; ##############################################################################################################################
##############################################################################################################################
##############################################################################################################################
有个问题:如何向同一张表中使用"insert into .... where"条件插入数据 ( 采用临时表插入的方法 ) 方法如下:
1)先新建一张临时表,临时表的结构和原表结果要一样(使用命令"show create table 原表名\G;" 查看原表的create创建命令,直接复制用来创建临时表)
2)参照上面第四种方法,先从原表将数据导入到临时表,再从临时表中将数据插入到原表中,然后再删除临时表。
3)如果在insert into插入数据过程中,有主键或唯一键,就去掉这些字段进行插入。 示例如下:
_maintenance_execplan表中只有2020年、2019年的数据,没有2018年的数据,如下:
mysql> select * from _maintenance_execplan where syscode = 'caiwu';
+------+------+---------+------+-----+-----+----------+-----+-----+----------+-----+-----+----------+-----+-----+-----+-----------+
| id | sid | syscode | year | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | alertDays |
+------+------+---------+------+-----+-----+----------+-----+-----+----------+-----+-----+----------+-----+-----+-----+-----------+
| 820 | 1235 | caiwu | 2019 | | | 20190327 | | | 20190617 | | | 20190911 | | | | 14 |
| 821 | 1236 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 822 | 1231 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 823 | 1236 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 824 | 1237 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 825 | 1238 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 826 | 1239 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 827 | 1240 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 828 | 1241 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 829 | 1242 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 830 | 1243 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 831 | 1244 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 1846 | 1245 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1847 | 1246 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1848 | 1247 | caiwu | 2020 | | | 20200318 | | | | | | 20200923 | | | | 14 |
| 1849 | 1248 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1850 | 1249 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1851 | 1250 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1852 | 1251 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1853 | 1252 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1854 | 1253 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1855 | 1254 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1856 | 1255 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1857 | 1256 | caiwu | 2020 | | | | | | | | | | | | | 14 |
+------+------+---------+------+-----+-----+----------+-----+-----+----------+-----+-----+----------+-----+-----+-----+-----------+
24 rows in set (0.00 sec) 现在需要向_maintenance_execplan表内syscode=caiwu的字段加入2018年份的内容(2018年的字段和2019、2020一样)。操作如下: 1)创建临时表_maintenance_execplan_bak_tmp (根据"show create table _maintenance_execplan"的结果进行创建)
mysql> show create table _maintenance_execplan;
+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| _maintenance_execplan | CREATE TABLE `_maintenance_execplan` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sid` int(11) NOT NULL,
`syscode` varchar(3) NOT NULL,
`year` varchar(4) NOT NULL,
`Jan` varchar(8) NOT NULL,
`Feb` varchar(8) NOT NULL,
`Mar` varchar(8) NOT NULL,
`Apr` varchar(8) NOT NULL,
`May` varchar(8) NOT NULL,
`Jun` varchar(8) NOT NULL,
`Jul` varchar(8) NOT NULL,
`Aug` varchar(8) NOT NULL,
`Sep` varchar(8) NOT NULL,
`Oct` varchar(8) NOT NULL,
`Nov` varchar(8) NOT NULL,
`Dec` varchar(8) NOT NULL,
`alertDays` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `_maintenance_execplan_sid_year_90d31782_uniq` (`sid`,`year`)
) ENGINE=InnoDB AUTO_INCREMENT=2285 DEFAULT CHARSET=utf8 |
+-----------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec) 如上查看原表_maintenance_execplan的create创建语句,将里面的AUTO_INCREMENT改为1!!
这里注意下:
AUTO_INCREMENT是mysql唯一扩展的完整性约束,当为数据库表中插入新纪录时,字段上的值会自动生成唯一的ID,再具体设置AUTO_INCREMENT约束时,
一个表中只能有一个字段使用该约束,并且该字段的数据类型必须为整数类型。还有,我们习惯上将表中的一个列同时设置为AUTO_INCREMENT和主键。
默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1。 那么就依据上面的查询结果,直接复制语句创建临时表 (注意AUTO_INCREMENT=1)
mysql> CREATE TABLE `_maintenance_execplan_bak_tmp` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sid` int(11) NOT NULL,
`syscode` varchar(3) NOT NULL,
`year` varchar(4) NOT NULL,
`Jan` varchar(8) NOT NULL,
`Feb` varchar(8) NOT NULL,
`Mar` varchar(8) NOT NULL,
`Apr` varchar(8) NOT NULL,
`May` varchar(8) NOT NULL,
`Jun` varchar(8) NOT NULL,
`Jul` varchar(8) NOT NULL,
`Aug` varchar(8) NOT NULL,
`Sep` varchar(8) NOT NULL,
`Oct` varchar(8) NOT NULL,
`Nov` varchar(8) NOT NULL,
`Dec` varchar(8) NOT NULL,
`alertDays` int(11) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `_maintenance_execplan_sid_year_90d31782_uniq` (`sid`,`year`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 2)将原表的2020年份的字段导入到临时表中。临时表中的内容即为2018年份的字段
mysql> insert into _maintenance_execplan_bak_tmp select * from _maintenance_execplan where syscode = 'caiwu' and year = 2020; 3) 将临时表中的2020年份改成2018。临时表中的内容即为2018年份的字段
mysql> update _maintenance_execplan_bak_tmp set year=2018; 4) 接在再把临时表的内容插入到原表中 (只需要插入几个键就可以了,自增键"id"不用插入。唯一键"sid"和"year"只要两个中有一个值不一样就可以了!比如1046-2020,和1046-2018)
mysql> insert into _maintenance_execplan(sid,syscode,year,alertDays) select sid,syscode,year,alertDays from _maintenance_execplan_bak_tmp where syscode = 'caiwu' and year = 2018; 5)查看插入后的原表内容,发现已经有个2018年份的内容了
mysql> select * from _maintenance_execplan where syscode = 'caiwu';
+------+------+---------+------+-----+-----+----------+-----+-----+----------+-----+-----+----------+-----+-----+-----+-----------+
| id | sid | syscode | year | Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec | alertDays |
+------+------+---------+------+-----+-----+----------+-----+-----+----------+-----+-----+----------+-----+-----+-----+-----------+
| 820 | 1235 | caiwu | 2019 | | | 20190327 | | | 20190617 | | | 20190911 | | | | 14 |
| 821 | 1236 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 822 | 1231 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 823 | 1236 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 824 | 1237 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 825 | 1238 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 826 | 1239 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 827 | 1240 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 828 | 1241 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 829 | 1242 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 830 | 1243 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 831 | 1244 | caiwu | 2019 | | | | | | | | | | | | | 14 |
| 1846 | 1245 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1847 | 1246 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1848 | 1247 | caiwu | 2020 | | | 20200318 | | | | | | 20200923 | | | | 14 |
| 1849 | 1248 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1850 | 1249 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1851 | 1250 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1852 | 1251 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1853 | 1252 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1854 | 1253 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1855 | 1254 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1856 | 1255 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1857 | 1256 | caiwu | 2020 | | | | | | | | | | | | | 14 |
| 1858 | 1245 | caiwu | 2018 | | | | | | | | | | | | | 14 |
| 1859 | 1246 | caiwu | 2018 | | | | | | | | | | | | | 14 |
| 1860 | 1247 | caiwu | 2018 | | | | | | | | | | | | | 14 |
| 1861 | 1248 | caiwu | 2018 | | | | | | | | | | | | | 14 |
| 1862 | 1249 | caiwu | 2018 | | | | | | | | | | | | | 14 |
| 1863 | 1250 | caiwu | 2018 | | | | | | | | | | | | | 14 |
| 1864 | 1251 | caiwu | 2018 | | | | | | | | | | | | | 14 |
| 1865 | 1252 | caiwu | 2018 | | | | | | | | | | | | | 14 |
| 1866 | 1253 | caiwu | 2018 | | | | | | | | | | | | | 14 |
| 1867 | 1254 | caiwu | 2018 | | | | | | | | | | | | | 14 |
| 1868 | 1255 | caiwu | 2018 | | | | | | | | | | | | | 14 |
| 1869 | 1256 | caiwu | 2018 | | | | | | | | | | | | | 14 |
+------+------+---------+------+-----+-----+----------+-----+-----+----------+-----+-----+----------+-----+-----+-----+-----------+
36 rows in set (0.00 sec) 6)默认插入原表的2018年份的数据都默认是null的,可以进行update更新字段操作
mysql> update _maintenance_execplan set Mar="20180327" where syscode="caiwu" and id="1860";
mysql> update _maintenance_execplan set Sep="20180915" where syscode="caiwu" and id="1860"; 7) 最后再删除临时表
mysql> drop table _maintenance_execplan_bak_tmp; ###########################################################################################################################
如下,修改Dec字段的数据,发现一直报错说SQL语法错误。最后在Dec两边加上``才解决
mysql> update _maintenance_execplan set Dec="20181214" where syscode = 'caiwu' and id="1861";
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Dec="20181214" where syscode = 'lcs' and id="2271"' at line 1 mysql> update _maintenance_execplan set `Dec`="20181214" where syscode = 'caiwu' and id="1861";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
#######################################################
创建表时指定AUTO_INCREMENT自增值的初始值:
mysql> CREATE TABLE 表名 (ID INT(5) PRIMARY KEY AUTO_INCREMENT)AUTO_INCREMENT=100;
通过ALTER TABLE 修改初始值(但要大于表中的AUTO_INCREMENT自增值,否则设置无效):
mysql>ATLER TABLE 表名 AUTO_INCREMENT=100;
如果自增序列的最大值被删除了,则在插入新记录时,该值被重用。
就是说如果表中原本有AUTO_INCREMENT属性值连续为78、100的值,但100这个数据被删除了,下此再添加数据的时候自增值为101,100被重用了。
即使在你将整个表中的所有数据delete清空后,之前的自增序列最大值还是会被重用。
解决办法是使用下面命令:
ATLER TABLE 表名 AUTO_INCREMENT=0; # 重新设置自增初始值
#######################################################
设置AUTO_INCREMENT_INCREMENT以及AUTO_INCREMENT_offset用户变量值(重启MySQL之后,这些修改会恢复为初始值1):
mysql>SET auto_increment_increment=10; # 自增量每次增加的值改为10,
mysql>SET auto_increment_offset=2; # 第一次加载数值时的偏移值的个位值
mysql>SHOW VARIABLES LIKE 'AUTO_INC%'; # 查看修改后变量的值 mysql>SHOW TABLE STATUS FROM NAME_DB; # 显示数据库NAME_DB中所有表的信息 mysql>SHOW CREATE TABLE NAME_TBL; # 显示表NAME_TBL创建时的信息 mysql>SHOW VARIABLES LIKE 'AUTO_INC%'; # 显示MySQL的AUTO_INC开头的用户会话变量(SHOW GLOBAL VARIABLES)
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
+--------------------------+-------+
2 rows in set (0.00 sec)
mysql操作命令梳理(2)-alter(update、insert)的更多相关文章
- mysql操作命令梳理(3)-pager
在mysql日常操作中,妙用pager设置显示方式,可以大大提高工作效率.比如select出来的结果集超过几个屏幕,那么前面的结果一晃而过无法看到,这时候使用pager可以设置调用os的more或者l ...
- mysql操作命令梳理(4)-grant授权和revoke回收权限
在mysql维护工作中,做好权限管理是一个很重要的环节.下面对mysql权限操作进行梳理: mysql的权限命令是grant,权限撤销的命令时revoke:grant授权格式:grant 权限列表 o ...
- MySQL操作命令梳理(2)
一.表操作 在mysql运维操作中会经常使用到alter这个修改表的命令,alter tables允许修改一个现有表的结构,比如增加或删除列.创造或消去索引.改变现有列的类型.或重新命名列或表本身,也 ...
- mysql操作命令梳理-grant授权和revoke回收权限
在mysql维护工作中,做好权限管理是一个很重要的环节.下面对mysql权限操作进行梳理: mysql的权限命令是grant,权限撤销的命令时revoke:grant授权格式:grant 权限列表 o ...
- mysql操作命令梳理(1)-索引
1.创建索引索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引.以下命令语句分别展示了如何创建主键索引(PRIMARY KE ...
- mysql操作命令梳理(5)-执行sql语句查询即mysql状态说明
在日常mysql运维中,经常要查询当前mysql下正在执行的sql语句及其他在跑的mysql相关线程,这就用到mysql processlist这个命令了.mysql> show process ...
- mysql操作命令梳理(4)-中文乱码问题
在平时的mysql运维操作中,经常会碰到插入中文字段后出现乱码的情况,产生中文乱码的原因一般有:1)mysql的编码格式不对,是latin1编码.强烈推荐将mysql下的编码格式都改为utf8,因为它 ...
- MySQL操作命令梳理(1)
一.索引 1.创建索引 索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引.以下命令语句分别展示了如何创建主键索引(PRIM ...
- 【转】MySQL 当记录不存在时insert,当记录存在时update
MySQL当记录不存在时insert,当记录存在时更新:网上基本有三种解决方法 第一种: 示例一:insert多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语句 ...
随机推荐
- 浅谈C#依赖注入
什么是依赖注入?不管是js中的一些前端框架还是,java,C#,php等中的一些后端开发框架中,都会涉及这个看着逼格略高的词语:依赖注入,越是看着好像很厉害的东西越是会让许多人学习产生恐惧,好像很厉害 ...
- C++基础学习一(基础之基础)
开篇:做了这么多年的软件,第一次使用博客的方式记录学习过程,之前都是笔记本(都有一摞了),因为之前一直从事的都是.NET的开发工作,对C++知之甚少,但一直想了解C++这门鼻祖级的语言,现在终于下定决 ...
- MySQL 并行复制演进及 MySQL 8.0 中基于 WriteSet 的优化
MySQL 8.0 可以说是MySQL发展历史上里程碑式的一个版本,包括了多个重大更新,目前 Generally Available 版本已经已经发布,正式版本即将发布,在此将介绍8.0版本中引入的一 ...
- JUnit单元测试入门
什么是单元测试 写了个类,要给别人用,会不会有bug?怎么办?测试一下. 用main方法测试好不好?不好! 不能一起运行! 大多数情况下需要人为的观察输出确定是否正确 为什么要进行单元测试 重用测试, ...
- 启动OpenVPN失败
启动OpenVPN失败 文:铁乐与猫 [root@yunwei_OpenVPN openvpn]# systemctl status openvpn ● openvpn.service - LSB: ...
- win10系统如何关掉系统自动更新
越来越多的电脑使用者都在使用Windows10系统,尽管系统是一代代更新的,但难免有槽点,Windows10系统也不例外,最大的槽点就是“自动更新”的功能.当然,“自动更新”的功能也是相当有用处的. ...
- Django 项目连接数据库Mysql要安装mysqlclient驱动出错 : Failed building wheel for mysqlclient:
1,如果直接用 CMD命令:pip install mysqlclient ,会安装出错. 2,解决问题,参考了这个博友的帖子:https://blog.csdn.net/qq_29784441/ar ...
- hadoop系列 第三坑: Task process exit with nonzero status of 137
跑MR的时候抛出异常: java.lang.Throwable: Child Error at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.j ...
- PHP开发小技巧③—实现多维数组转化为一维数组
在平常的项目开发中我们多会用到让多维数组转化为一维数组的情况,但是很多Programmer不会将其进行转化,也有些没有想到很好的算法然后经过乱起八糟的运算方式将其勉强转化好,但是所写的程序代码冗余非常 ...
- Arduino IDE for ESP8266教程(四)网页控制灯 简单页面
修改ssid和passwd,将程序烧写到8266上,等待串口返回连接成功的消息,连接成功之后可以看到返回有一个ip地址,使用浏览器方位这个ip地址就可以看到这个消息: 连接路由器后,返回IP地址 19 ...