查询:
在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)