mysql日常操作
update
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count]
MySQL replace [into] 用法
用户在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新...
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。
MySQL replace into 有三种形式:
1. replace into tbl_name(col_name, ...) values(...) 2. replace into tbl_name(col_name, ...) select ... 3. replace into tbl_name set col_name=value, ...
REPLACE的运行与INSERT很相像。只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。
1.replace into<br />replace into table (id,name) values('1','aa'),('2','bb')<br />此语句的作用是向表table中插入两条记录。如果主键id为1或2不存在<br />就相当于<br />insert into table (id,name) values('1','aa'),('2','bb')<br />如果存在相同的值则不会插入数据
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
这里我先truncate table upimg 先清空了表,然后,把UID改成了 alter table upimg add unique uidlist(`uid`) ; 然后就可以正常用replace into去替换了;
此处附加一个:改表的sql alter;
1:删除列
ALTER TABLE 【表名字】 DROP 【列名称】
2:增加列
ALTER TABLE 【表名字】 ADD 【列名称】 INT NOT NULL COMMENT '注释说明'
3:修改列的类型信息
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
7:添加主键
ALTER TABLE sj_resource_charges ADD CONSTRAINT PK_SJ_RESOURCE_CHARGES PRIMARY KEY (resid,resfromid)
8:添加索引
ALTER TABLE sj_resource_charges add index INDEX_NAME (name);
9: 添加唯一限制条件索引
ALTER TABLE sj_resource_charges add unique emp_name2(cardnumber); 删除 也是 alter table T1 drop index emp_name2;
10: 删除索引
alter table tablename drop index emp_name;
11:添加外键
mysql> alter table amount add constraint foreign key amountseller(seller) references seller(`id`) on update cascade;
2016-03-03 14:57 晚上回去继续,把用户管理那块做完就好,么么哒豪哥;
delete from 表名;
truncate table 表名;
不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。
效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。
delete的效果有点像将mysql表中所有记录一条一条删除到删完,
而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。
case
mysql数据库中CASE WHEN语句。
case when语句,用于计算条件列表并返回多个可能结果表达式之一。
- SELECT
- sum(CASE when score<60 then 1 else 0 end) AS '不及格',
- sum(CASE when score>=60 and score<70 then 1 else 0 end) AS '差',
- sum(CASE when score>=70 and score<80 then 1 else 0 end) AS '中',
- sum(CASE when score>=80 and score<90 then 1 else 0 end) AS '良',
- sum(CASE when score>=90 and score<=100 then 1 else 0 end) AS '优'
- from student;
mysql> select user,avg(id) from test group by user;
+------+----------+
| user | avg(id) |
+------+----------+
| f | 290.0000 |
| h | 160.0000 |
| m | 240.0000 |
+------+----------+
链接 多条sql的结果集,主意,要是数据类型相同,数据列数相同
SELECT * FROM A UNION SELECT * FROM B; 这里会屏蔽重复的项;
SELECT * FROM A UNION ALL SELECT * FROM B; 区别是显示所有项;
LEFT JOIN 和 RIGHT JOIN
LEFT: 会拿出左表中的所有匹配项,即使右表木有;

浙公网安备 33010602011771号