MySQL 插入、更新、删除、查询数据语句操作

例子都是基于此表

create table test (
id int primary key auto_increment,
name varchar(20),
sex varchar(6),
age int
)charset utf8;
mysql> desc test;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | YES  |     | NULL    |                |
| sex   | varchar(6)  | YES  |     | NULL    |                |
| age   | int(11)     | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)

一、插入语句

插入的方式分为:完整插入、插入记录的一部分、插入多条记录等。

1、完整插入

语法:

insert [into] <表名> values (字段1值,字段2值……字段n值);

例如:

mysql> insert into test values (1,'张三','男',20);
Query OK, 1 row affected (0.00 sec)

查看插入的结果

mysql> select * from test;
+----+--------+------+------+
| id | name   | sex  | age  |
+----+--------+------+------+
|  1 | 张三   | 男   |   20 |
+----+--------+------+------+
1 row in set (0.00 sec)

2、插入部分记录

insert [into] <表名> (字段1,字段2,……) values (字段1值,字段2值……) 

例如:

mysql> insert into test (id,name,age) values (5,'李四',23);
Query OK, 1 row affected (0.00 sec)

查看插入后的结果:

mysql> select * from test;
+----+--------+------+------+
| id | name   | sex  | age  |
+----+--------+------+------+
|  1 | 张三   | 男   |   20 |
|  5 | 李四   | NULL |   23 |
+----+--------+------+------+
2 rows in set (0.00 sec)

3、插入多条记录

可以分为部分字段插入多条记录或者完整插入多条记录。

insert into test values 
(3,'小明','男',22), 
(8,'小花','女',20), 
(7,'小美','女',21)
;
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

查看结果:

mysql> select * from test;
+----+--------+------+------+
| id | name   | sex  | age  |
+----+--------+------+------+
|  1 | 张三   | 男   |   20 |
|  3 | 小明   | 男   |   22 |
|  5 | 李四   | NULL |   23 |
|  7 | 小美   | 女   |   21 |
|  8 | 小花   | 女   |   20 |
+----+--------+------+------+
5 rows in set (0.00 sec)

二、更新语句

基本语法

update <表名> set 
字段名1=字段名1值,
字段名2=字段名2值,
…………
where <条件表达式>
;

注:如果没有where子句,则表示修改表中指定字段所有的值。

例如:

mysql> update test set  sex='男',age=30 where id=5;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

查看修改后的结果:

mysql> select * from test;
+----+--------+------+------+
| id | name   | sex  | age  |
+----+--------+------+------+
|  1 | 张三   | 男   |   20 |
|  3 | 小明   | 男   |   22 |
|  5 | 李四   | 男   |   30 |
|  7 | 小美   | 女   |   21 |
|  8 | 小花   | 女   |   20 |
+----+--------+------+------+
5 rows in set (0.00 sec)

三、删除数据

基础语法:

delete from <表名> where <条件表达式>;

注:若没有where子句,则会删除表中所有的记录。

在删记录前,先查看表中的记录。

mysql> select * from test;
+----+--------+------+------+
| id | name   | sex  | age  |
+----+--------+------+------+
|  1 | 张三   | 男   |   20 |
|  3 | 小明   | 男   |   22 |
|  5 | 李四   | 男   |   30 |
|  7 | 小美   | 女   |   21 |
|  8 | 小花   | 女   |   20 |
+----+--------+------+------+
5 rows in set (0.00 sec)

例如,删除id为3和id为7的记录

mysql> delete from test where id=3 or id=7;
Query OK, 2 rows affected (0.00 sec)

删除后查看结果:

mysql> select * from test;
+----+--------+------+------+
| id | name   | sex  | age  |
+----+--------+------+------+
|  1 | 张三   | 男   |   20 |
|  5 | 李四   | 男   |   30 |
|  8 | 小花   | 女   |   20 |
+----+--------+------+------+
3 rows in set (0.00 sec)

四、查询语句

查询语句是经常使用的到,功能也非常强大。例如查询表中指定列(字段)、使用聚合函数进行查询、连接查询、子查询、正则表达式查询等。

基本语法:

select {* | <字段名列表>} from <表名>
[where <条件表达式>]
[group by 字段名列表]
[having <条件表达式>]
[order by 字段名列表 [ASC | DESC]] 
[limit [<offset>,] 行数]
;

*:代表所有字段。

group by 字段名列表:指定分组字段名,可以是多个或一个,用逗号分隔。

having <条件表达式>:与where子句类似,但是having子句需要和group by子句联合使用,having支持聚合函数,而where子句不支持聚合函数。

order by 字段名列表:指定字段名进行分组,可以是一个或多个字段,用逗号分隔,默认是ASC升序,DESC降序。

limit 子句:指定显示的行数,也可以指定偏移行数如3-7。

基于下面这个表,进行简单的操作。

mysql> select * from test;
+----+--------+------+------+
| id | name   | sex  | age  |
+----+--------+------+------+
|  1 | 张三   | 男   |   20 |
|  2 | 刘一   | 男   |   27 |
|  3 | 刘花   | 女   |   23 |
|  4 | 小明   | 男   |   29 |
|  5 | 李四   | 男   |   30 |
|  8 | 小花   | 女   |   20 |
| 10 | 小西   | 女   |   24 |
| 18 | 王五   | 男   |   32 |
+----+--------+------+------+
8 rows in set (0.00 sec)

1、只查看id,name信息并且年龄大于24岁;

mysql> select id,name from test where age>24;
+----+--------+
| id | name   |
+----+--------+
|  2 | 刘一   |
|  4 | 小明   |
|  5 | 李四   |
| 18 | 王五   |
+----+--------+
4 rows in set (0.00 sec)

2、按sex进行分组;

mysql> select sex from test group by sex;
+------+
| sex  |
+------+
| 女   |
| 男   |
+------+
2 rows in set (0.00 sec)

3、显示年龄大于平均数的信息;

mysql> select * from test  where age>(select avg(age) from test);
+----+--------+------+------+
| id | name   | sex  | age  |
+----+--------+------+------+
|  2 | 刘一   | 男   |   27 |
|  4 | 小明   | 男   |   29 |
|  5 | 李四   | 男   |   30 |
| 18 | 王五   | 男   |   32 |
+----+--------+------+------+
4 rows in set (0.00 sec)

#查看平均年龄
mysql> select avg(age) from test;
+----------+
| avg(age) |
+----------+
|  25.6250 |
+----------+
1 row in set (0.00 sec)

4、根据年龄从低到高输出。

mysql> select * from test order by age;
+----+--------+------+------+
| id | name   | sex  | age  |
+----+--------+------+------+
|  1 | 张三   | 男   |   20 |
|  8 | 小花   | 女   |   20 |
|  3 | 刘花   | 女   |   23 |
| 10 | 小西   | 女   |   24 |
|  2 | 刘一   | 男   |   27 |
|  4 | 小明   | 男   |   29 |
|  5 | 李四   | 男   |   30 |
| 18 | 王五   | 男   |   32 |
+----+--------+------+------+
8 rows in set (0.00 sec)

5、显示最大的年龄的所有信息;

mysql> select * from test where age=(select max(age) from test);
+----+--------+------+------+
| id | name   | sex  | age  |
+----+--------+------+------+
| 18 | 王五   | 男   |   32 |
+----+--------+------+------+
1 row in set (0.00 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值