上一节中已经创建了数据库和表,但是数据为空,这一节将介绍数据库的增、删、改、查
一、表简单操作——增、删、改、查
1.1 查看数据
查询所有列
select * from 表名;
例:
mysql> select * from personinfo;
指定查找哪些列
mysql> select 列1,列2 from 表名;
例:
mysql> select name,age from personinfo;
1.2 增加数据
增加整列数据
insert into 表名 values (...)
例:
insert into personinfo values(0, 'xiaowang', 18, '男',172,'成都','高新区合作路1111号','510131198605136412');
mysql> select * from personinfo;
+----+----------+------+--------+--------+--------+---------------------------+--------------------+
| id | name | age | gender | height | city | addr | personId |
+----+----------+------+--------+--------+--------+---------------------------+--------------------+
| 1 | xiaowang | 18 | 男 | 172.00 | 成都 | 高新区合作路1111号 | 510131198605136412 |
+----+----------+------+--------+--------+--------+---------------------------+--------------------+
1 row in set (0.01 sec)
增加部分列:
#insert into 表名 (列1,列2) values(值1,值2)
insert into personinfo (id,name,age,gender,height,personId) values(null, 'xiaozhang', 20, '男',172,'510131198605136412');
mysql> select * from personinfo;
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
| id | name | age | gender | height | city | addr | personId |
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
| 1 | xiaowang | 18 | 男 | 172.00 | 成都 | 高新区合作路1111号 | 510131198605136412 |
| 2 | xiaozhang | 20 | 男 | 172.00 | NULL | NULL | 510131198605136412 |
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
2 rows in set (0.00 sec)
全部列多行插入:
insert into 表名 value(值1,值2,值3),(值1,值2,值3)
例:
insert into personinfo values(0, 'xiaoliao', 25, '男',172,'成都','高新区合作路1112号','510131198605106578'),(0, 'xiaozhao', 30, '女',160,'成都','双流区空港4路128号','510131198905101234');
mysql> select * from personinfo;
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
| id | name | age | gender | height | city | addr | personId |
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
| 1 | xiaowang | 18 | 男 | 172.00 | 成都 | 高新区合作路1111号 | 510131198605136412 |
| 2 | xiaozhang | 20 | 男 | 172.00 | NULL | NULL | 510131198605136412 |
| 3 | xiaoliao | 25 | 男 | 172.00 | 成都 | 高新区合作路1112号 | 510131198605106578 |
| 4 | xiaozhao | 30 | 女 | 160.00 | 成都 | 双流区空港4路128号 | 510131198905101234 |
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
4 rows in set (0.00 sec)
部分列多行插入
部分列多行插入
insert into 表名 (列1,...) values(值1,...),(值1,...)...;
insert into personinfo(id,name,age,personId) values(0, 'xiaoliao', 25, '男','510131198505101235'),(0, 'xiaozhao', 30, '女','510131198505101236');
mysql> select * from personinfo;
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
| id | name | age | gender | height | city | addr | personId |
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
| 1 | xiaowang | 18 | 男 | 172.00 | 成都 | 高新区合作路1111号 | 510131198605136412 |
| 2 | xiaozhang | 20 | 男 | 172.00 | NULL | NULL | 510131198605136412 |
| 3 | xiaoliao | 25 | 男 | 172.00 | 成都 | 高新区合作路1112号 | 510131198605106578 |
| 4 | xiaozhao | 30 | 女 | 160.00 | 成都 | 双流区空港4路128号 | 510131198905101234 |
| 5 | xiaoliao | 25 | 男 | NULL | NULL | NULL | 510131198505101235 |
| 6 | xiaozhao | 30 | 女 | NULL | NULL | NULL | 510131198505101236 |
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
6 rows in set (0.00 sec)
说明:
主键列是自动增长,但是在全列插入时需要占位,通常使用空值(0或者null或者default)
在全列插入时,如果字段列有默认值可以使用 default 来占位
1.3 更改数据
可以看到 上面数据表格中有身份证ID 是一样的,因此可将 xiaowang的身份证ID 改变
update 表名 set 列1=值1,列2=值2... where 条件
例:
update personinfo set personId='510131198605171237' where name = 'xiaozhang' and personId = '510131198605136412';
mysql> select * from personinfo;
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
| id | name | age | gender | height | city | addr | personId |
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
| 1 | xiaowang | 18 | 男 | 172.00 | 成都 | 高新区合作路1111号 | 510131198605136412 |
| 2 | xiaozhang | 20 | 男 | 172.00 | NULL | NULL | 510131198605171237 |
| 3 | xiaoliao | 25 | 男 | 172.00 | 成都 | 高新区合作路1112号 | 510131198605106578 |
| 4 | xiaozhao | 30 | 女 | 160.00 | 成都 | 双流区空港4路128号 | 510131198905101234 |
| 5 | xiaoliao | 25 | 男 | NULL | NULL | NULL | 510131198505101235 |
| 6 | xiaozhao | 30 | 女 | NULL | NULL | NULL | 510131198505101236 |
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
6 rows in set (0.01 sec)
1.4 删除数据
delete from 表名 where 条件
例:
delete from personinfo where personId='510131198605136412';
mysql> select * from personinfo;
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
| id | name | age | gender | height | city | addr | personId |
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
| 2 | xiaozhang | 20 | 男 | 172.00 | NULL | NULL | 510131198605171237 |
| 3 | xiaoliao | 25 | 男 | 172.00 | 成都 | 高新区合作路1112号 | 510131198605106578 |
| 4 | xiaozhao | 30 | 女 | 160.00 | 成都 | 双流区空港4路128号 | 510131198905101234 |
| 5 | xiaoliao | 25 | 男 | NULL | NULL | NULL | 510131198505101235 |
| 6 | xiaozhao | 30 | 女 | NULL | NULL | NULL | 510131198505101236 |
+----+-----------+------+--------+--------+--------+---------------------------+--------------------+
5 rows in set (0.00 sec)
注意: 使用delete删除是从物理上删除,无法恢复。如果想删除的数据可以恢复,可以增加一个字段'is_del' 来标记是否已经删除,此时只是修改数据并不是真正意义上的删除
alter table personinfo add is_del bit default 0;
update personinfo set is_del =1 where personId= '510131198505101236'
二、where 条件查询
使用where条件查询可以对表中的数据进行筛选
where语句支持的运算符:
比较运算符
逻辑运算符
模糊查询
范围查询
空判断
2.1 比较运算符
等于: = (注意不是==)
大于: >
大于等于: >=
小于: <
小于等于: <=
不等于: != 或 <>
例:
查询年龄大于25 并且小于35 所有人员信息
mysql> select * from personinfo where age >= 25 and age <=35;
查询性别为男所有人员信息
select * from personinfo where gender !='女';
2.2 逻辑运算符
and
or
not
例 :
# 查询所有的男性
select * from personinfo where not gender ='女';
2.3 模糊查询
like是模糊查询关键字
%表示任意多个任意字符
_表示一个任意字符
M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。
%M% : 表示查询包含M的所有内容。
%M_ : 表示查询以M在倒数第二位的所有内容。
例:
#查询身份证以510131开头的所有 人员信息
select * from personinfo where personId like '510131%'
2.4 范围查询
between .. and .. 表示在一个连续的范围内查询
in 表示在一个非连续的范围内查询
例:
#查询年龄在 25 与 30之间
select * from personinfo where age between 25 and 30;
#查询 城市 在 重庆、成都所有人
select * from personinfo where city in ('重庆','成都');
2.5 空判断查询
判断为空使用: is null
判断非空使用: is not null
#查询所有地址为空的人员
select * from personinfo where addr is null;