查询:
在MySQL中,select的基本语法形式:
select 属性列表 from 表名和视图 [ where 条件表达式 ] [ group by 属性名 [having 条件表达式 ] ] [ order by 属性名 [asc|desc ] ]
看看具体的用例:
首先看看表的结构:
mysql > desc user ; + -- --------+-----------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | + -- --------+-----------------+------+-----+---------+----------------+ | id | int ( 4 ) unsigned | NO | PRI | NULL | auto_increment | | account | varchar ( 10 ) | NO | | NULL | | | password | varchar ( 10 ) | NO | | NULL | | + -- --------+-----------------+------+-----+---------+----------------+
最简单的查找,查找出全部,*匹配所有数据,user就是表名:
mysql > select * from user ; + -- --+------------+----------+ | id | account | password | + -- --+------------+----------+ | 1 | xujianguo | xjg | | 2 | wenjian | cwj | | 3 | xiongsheng | hxs | + -- --+------------+----------+
加入条件后的查询:
mysql > select * from user -> where id > 1 -> order by id desc ; + -- --+------------+----------+ | id | account | password | + -- --+------------+----------+ | 3 | xiongsheng | hxs | | 2 | wenjian | cwj | + -- --+------------+----------+
带in关键字的查询:
用in关键字可以判断某个字段的值是否在指定的集合中。
mysql > select * from user -> where id in ( 1 , 3 ); + -- --+------------+----------+ | id | account | password | + -- --+------------+----------+ | 1 | xujianguo | xjg | | 3 | xiongsheng | hxs | + -- --+------------+----------+ 2 rows in set ( 0.02 sec)
带between and的范围查询:
between and关键字可以判断某个字段的值是否在指定的范围内。
mysql > select * from user -> where id between 2 and 3 ; + -- --+------------+----------+ | id | account | password | + -- --+------------+----------+ | 2 | wenjian | cwj | | 3 | xiongsheng | hxs | + -- --+------------+----------+
带like的字符匹配查询:
like关键字可以匹配字符串。
mysql > select * from user -> where account like ' wen% ' ; + -- --+---------+----------+ | id | account | password | + -- --+---------+----------+ | 2 | wenjian | cwj | + -- --+---------+----------+
分组查询:
group by关键字与group_concat函数一起使用,进行分组显示。
mysql > select * from user ; + -- --+------------+----------+ | id | account | password | + -- --+------------+----------+ | 1 | xujianguo | xjg | | 2 | wenjian | cwj | | 3 | xiongsheng | hxs | | 4 | zheng | cwj | + -- --+------------+----------+ mysql > select password, group_concat(account) from user -> group by password; + -- --------+-----------------------+ | password | group_concat(account) | + -- --------+-----------------------+ | cwj | wenjian,zheng | | hxs | xiongsheng | | xjg | xujianguo | + -- --------+-----------------------+
使用count()函数查询:
mysql > select count ( * ) from user ; + -- --------+ | count ( * ) | + -- --------+ | 4 | + -- --------+
使用max()函数查询:
mysql > select max (id) from user ; + -- -------+ | max (id) | + -- -------+ | 4 | + -- -------+
连接查询:
将两个或者两个以上的表按照某个条件连接起来。
mysql > select user .id, account, usermessage.message -> from user , usermessage -> where user .id = usermessage.id; + -- --+------------+----------+ | id | account | message | + -- --+------------+----------+ | 1 | xujianguo | hello | | 2 | wenjian | love you | | 3 | xiongsheng | yes | | 4 | zheng | no no no | + -- --+------------+----------+
子查询:
也就是说查询语句里面嵌套着另外一个查询语句。
mysql > select * from user -> where id in ( select id from usermessage where id in ( 1 , 2 )) -> ; + -- --+-----------+----------+ | id | account | password | + -- --+-----------+----------+ | 1 | xujianguo | xjg | | 2 | wenjian | cwj | + -- --+-----------+----------+
插入:
在MySQL中,可以通过不指定具体字段名为表插入记录,其基本语句形式:
insert into 表名 values (值1, 值2......)
mysql > insert into usermessage values ( 5 , ' no problem ' ); Query OK, 1 row affected ( 0.09 sec)
这里就隐含了对应的值对应插入的规则。
当然也可以指定插入,其基本的语句格式:
insert into 表名(属性1, 属性2......) values (值1, 值2......)
mysql > insert into usermessage(message, id) values ("enen", 6 ); Query OK, 1 row affected ( 0.09 sec)
更新:
在MySQL中,update语句的基本语法形式:
update 表名 set 属性名1 = 值1, 属性名2 = 值2...... where 条件表达式;
mysql > update usermessage -> set message = ' nimei ' -> where id = 2 ; Query OK, 1 row affected ( 0.11 sec)
删除:
在MySQL中,delete语句的基本语法形式为:
delete from 表名 [ where 条件表达式 ] ;
mysql > delete from usermessage where id = 5 ; Query OK, 1 row affected ( 0.10 sec)