mysql> desc demo;
+-----------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| nick_name | char(100) | YES | | NULL | |
| gender | tinyint(2) | YES | | 1 | |
+-----------+------------+------+-----+---------+----------------+
一次插入单条数据
insert into demo values (1,"aaa",0);
使用这种格式时,字段和值要一一对应,不可缺任意一项,即使是自增的主键,也必须指定值。
一次插入多条数据
insert into demo values (1,"aaa",0),(2,"bbb",1),(3,"ccc",1);
为指定的字段插入值
insert into demo (nick_name) values ("ddd");
按照这个格式插入数据时,需要注意,如果某个字段有默认值,或者是自增的,那么这一个字段可以省略不写,默认赋值为默认值或者自增长的值。
删除所有数据(不加条件的删除)
delete from demo;
有条件的删除
delete from demo where id=1 and nick_name='aaa';
清空表数据
delete from demo; //仅删除记录,主键自增的值仍保留删除记录之前的值
truncate table demo; //删除记录的同时,将主键自增初始化为0
更新所有数据(不加条件的更新)
update demo set nick_name='xxxx',gender=-1;
有条件的更新记录
update demo set nick_name='xxx' where id=1;
在使用删除和更改数据的时候,一定要明白一点:
删除或者更改操作是否成功 和 删除或者更改影响的记录数是否为0 之间没有必然的联系。
查询一个表的所有数据
select * from demo;
查指定字段的数据
select id,nick_name from demo;
指定别名 (字段名和别名之间可以加as,也可以不加)
select id as person_id, nick_name as person_name from demo;
select id person_id, nick_name person_name from demo;
有条件的查询
select * from demo where id=12 and nick_name='aaaa';
限制返回结果的行数
select * from demo limit 10; //返回10条记录
select * from demo limit 5,10; //从记录中的第5条记录开始,返回10条记录。
分组查询
select count(*) from demo group by gender; //按照gender分组。
select count(*) from demo group by gender,nick_name; //按照gender和nick_name两个字段来分组
注意:
1、如果使用group by分组之后,select 选择的内容一般是聚合函数,比如min、max、sum、count、avg。因为如果是选择某些字段的话,只会保留分组之后,每个分组的第一条,没有意义。
2、如果是按照多个字段进行分组的话,那么只有当多条记录的这多个字段值都对应相同时,才认为是同一个分组;否则如果任意两条记录中的多个分组字段中,哪怕有一个分组字段值不同,都会认为不是一个分组。
消除结果中的重复咧
select distinct id from demo;
注意,distinct关键字只能放在