1.增
insert into 表名 [(参数列表)] values (值列表);
批量插入:insert into 表名 [(参数列表)] values (),(),();
注意:类型,范围,值一一对应;隐含列时,插入每列对应的值;指定列插入(只给表中的某几个字段赋值),指定列要说明(指定字段名)。
当插入的数据主键存在冲突时
更新操作:
insert into 表名 (字段列表) values (值列表) on duplicate key update 字段=新值;
替换:
replace into 表名 (字段列表) values (新的值列表)
2.删
delete from 表名 [where condition];
truncate table 表名;
delete和truncate两种方法的区别:
1)效果一样,truncate更快一些。
2)delete一条一条删,返回被删除的记录数;truncate对整个表删除,表的结构仍然存在,返回0行受影响。
3)delete不会影响auto_increment项,而truncate会影响,将会重置auto_increment项。
delete使用细节:
1)delete配合where子句,可以灵活地删除表中满足条件的记录。
2)delete语句不能删除某一列的值(可以用update置null)。
3)使用delete语句仅删除记录,不删除表本身。
3.改
update table_name set 列名=值[,列名2=值2,...] [where condition] [limit n]; limit限制满足条件的修改数量。
注意:在MySQL中不存在++/+=/--/--。
4.查
select [distinct] *|{列名1,列名2,...} from 表名 [where 条件];
几个例子:
select id,name,math+english+chinese as 'total' from student where math+english+chinese>200;注意不能使用total别名。
5.order by子句
排序(默认是升序asc)降序:desc
语法:select col1,col2,... form 表名 order by 类名 asc|desc;
eg:select id,name,math+english+chinese as total from t order by total desc;按成绩降序排列。
6.limit分页
语法:select 字段 from 表名 where 条件 limit 起始位置,记录条数
语法2:select 字段 from 表名 where 条件 limit 记录条数 offset 起始位置
eg:select * from student where math>80 limit 0,3;//显示数学成绩大于80的前三个人。
7.count聚合函数
count(列名) 返回某一列,行的总数。
select count(*)|count(列名) from 表名 where condition;
注意:count(*)会统计一共的记录数(包括null),count(列名)会排除为null的情况。
8.sum函数
sum函数会返回满足where条件的行的和。
select sum(列名){,sum(列名)...} from 表名 [where condition];
9.删除一张表t1的重复元素
1)复制表结构 create table t2 like t1;
2)把t1中的数据复制到t2中 insert into t2 select distinct* from t1;
3)删除原来的表 drop table t1;
4)修改表名 alter table t2 rename to t1;