先创建一张表:create table users(
-> id smallint unsigned primary key auto_increment,
-> username varchar(20) not null,
-> password varchar(20) not null,
-> age tinyint unsigned not null default 10,
-> sex boolean
-> );
1.插入记录:insert users values(null|default,'Tom','123',25,1);
Values里面依次是每一个字段的值。Id字段因为是自增,所以用null或default即可使其为1,2,3...
(可以用select * from users查看表的记录)如果值的数目少,那么这样insert会提示错误。
Values里面除了使用直接赋值,还可以使用表达式:insert users values(default,'Moot','123',3*7-12,2);
Default还可以这样:insert users values(default,'Moot','123',default,2); //如果有默认值则使用默认值
还可以同时插入多条记录:(记录之间用逗号分隔)
insert users values(default,'Float','123',default,2),(null,'Ross',md5('123'),default,0);
其中md5()表示里面字符串的哈希值。
************
插入一条记录,可用于子查询:insert users set username='Ben',password='456';
因为age有default,sex可以为空,所以只写这两个字段。
************
插入查找的结果:insert [into] tbl_name [(col_name,...)] select...
2.单表记录更新:update [Low_priority] [ignore] table_reference set col_name1={expr1|default} [,col_name2={expr2|default}]... [where where_condition]
例如:update users set age = age+5; //将原来的age都设置为原数据+5
update users set age=age-id,sex=0; //将原来的age改为age-id值,sex全部设置为0
update users set age=age+10 where id%2=0; //将id为偶数的记录 age全部加10
3.单表删除记录:delete from tbl_name [where where_condition]
delete from users where id=6; //删除id是6的记录 如果现在插入一条记录,id是已有最大id号+1
4.查找记录:select select_expr [,select_expr...]
[
From table_references
[where where_condition] //限定查询条件
[group by{col_name|position} [asc|desc],...]
[having where_condition]
[order by {col_name|expr|position}[asc|desc],...] //对查询结果排序
[limit {[offset,] row_count|row_count offset offset}] //限制记录返回的数量
]
示例:select id,username from users; //查询id,username这两列的数据,字段顺序可以调换
select users.id,users.username from users; //点语法查询某张表的字段
查询表达式可以使用[as] alias_name为其赋别名,别名可用于group by,order by 或 having子句。
select id as userId,username as uname from users; //将id别名为userId,username别名为uname
(使用别名的时候,加上as关键词!)
************
[group by{col_name|position} [asc|desc],...]可以对查询结果进行分组,asc是升序,desc是降序
示例:select sex from users group by sex; //以sex为根据进行分组
select password from users group by 1; //以第一个查询的记录为依据进行分组
************
[having where_condition] //分组条件
示例:select sex,age from users group by 1 having age>24; //查询符合条件的age>24的第一条记录
select sex from users group by 1 having count(id)>=2; //查询符合条件的 id数>=2的第一条记录
**************
[order by {col_name|expr|position}[asc|desc],...] //对查询结果排序
示例:select * from users order by id desc; //查询所有记录,并按id降序排列
select * from users order by age,id desc; //查询所有记录,先按age升序排列,再按id降序排列
*************
[limit {[offset,] row_count|row_count offset offset}] //限制记录返回的数量
示例:select * from users limit 2; //返回从第一条记录开始的 共2条记录
select * from users limit 2,3; //返回从第(2+1)条记录开始的 共3条记录 select查询记录是从0开始计数的
select * from users order by id desc limit 2,3; //先按id降序排列,再从第3条开始,共3条记录
5.插入查询后的记录:
新建一个表test: create table test(
-> id tinyint unsigned primary key auto_increment,
-> dd varchar(20)
-> );
insert test(dd) select username from users where age>=20;
向test表的username字段中插入:查询username从users表 条件age>=20 的记录
一直在http://www.imooc.com/ 学习,感觉不错。