说明:本文旨在记录常见数据库操作
数据库相关
增加数据库;
create database 数据库的名字 charset=字符编码;
1
create database testdb charset=utf8;
查询数据库
show databases;
1
2
3
4
5
6
7
8
9
10
11
12mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mock_db |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+
6 rows in set (0.01 sec)选择数据库
use testdb;
1
2
3mysql> use testdb;
Database changed
mysql>查看正在使用的数据库
select database();
1
2
3
4
5
6
7
8
9mysql> select database();
+------------+
| database() |
+------------+
| testdb |
+------------+
1 row in set (0.00 sec)
mysql>查看使用的数据库的所有表
show tables;
1
2
3
4mysql> show tables;
Empty set (0.00 sec)
mysql>
删除数据库
drop database 数据库名称;
1
2
3
4mysql> drop database testdb;
Query OK, 0 rows affected (0.00 sec)
mysql>
使用mysqldump
命令将数据备份到桌面下~/Desktop/kkk.sql
1
2
➜ ~ mysqldump -u root -p testdb > ~/Desktop/kkk.sql;
Enter password:
数据密码就可以在桌面看到kkk.sql了
我们先把旧的`testdb`删除掉
1
drop database testdb;
查看一下
1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mock_db |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql>
我们来创建一个空的名为`testdb`的数据库
1
create database testdb2 charset=utf8;
我们查看下`testdb`
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mock_db |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+
6 rows in set (0.00 sec)
mysql> use testdb;
Database changed
mysql> show tables;
Empty set (0.00 sec)
恢复数据
1
2
➜ ~ mysql -u root -p testdb < ~/Desktop/kkk.sql;
Enter password:
再查一次
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| person |
+------------------+
1 row in set (0.00 sec)
mysql> select *from person;
+----+----------------+------+
| id | name | city |
+----+----------------+------+
| 1 | zhangsanfeng | |
| 3 | zhaomin | |
| 4 | xiaozhao | |
| 5 | jinnmaoshiwang | |
| 6 | baimei | |
+----+----------------+------+
5 rows in set (0.00 sec)
mysql>
表相关
增加表
create table 表名(列及类型);
1
2
3
4mysql> create table person(
> id int auto_increment primary key,
> name varchar(20) not null);
Query OK, 0 rows affected (0.02 sec)
通过`show tables`查看
1
2
3
4
5
6
7
8
9
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| person |
+------------------+
1 row in set (0.00 sec)
mysql>
查看表属性信息
desc 表名称;
1
2
3
4
5
6
7
8
9
10mysql> desc person;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql>删除表
drop table 表名;
现在有2张表
1
2
3
4
5
6
7
8mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| person |
| test2 |
+------------------+
2 rows in set (0.00 sec)
删除`test2`表
1
2
3
4
5
6
7
8
9
10
mysql> drop table test2;
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| person |
+------------------+
1 row in set (0.00 sec)
修改表
alter table 表名 add | change | drop 列名 类型;
比如:
将
person
表的gender 改成gender2;1
alter table person change gender gender2 bit;
给person增加`city`列
1
alter table person add city varchar(20);
删除person的gender2
1
alter table person drop gender2;
数据相关
查询表数据
select * from 表名;
添加数据
(1). 全列增加单个:
insert into 表名 values(...);
1
2
3mysql> insert into person values(0,'zhangsanfeng');
Query OK, 1 row affected (0.01 sec)
mysql>
查询结果
1 | mysql> select * from person; |
(2). 全列增加多个: `insert into 表名 values(...),(...);`
1
2
3
mysql> insert into person values(0,'zhangwuji'),(0,'zhaomin');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
查看一下
1
2
3
4
5
6
7
8
9
10
11
mysql> select * from person;
+----+--------------+
| id | name |
+----+--------------+
| 1 | zhangsanfeng |
| 2 | zhangwuji |
| 3 | zhaomin |
+----+--------------+
3 rows in set (0.00 sec)
mysql>
(3). 单列增加单个: `insert into 表名(列名) values(...);`
1
2
mysql> insert into person(name) values('xiaozhao');
Query OK, 1 row affected (0.01 sec)
查看
1
2
3
4
5
6
7
8
9
10
11
12
mysql> select * from person;
+----+--------------+
| id | name |
+----+--------------+
| 1 | zhangsanfeng |
| 2 | zhangwuji |
| 3 | zhaomin |
| 4 | xiaozhao |
+----+--------------+
4 rows in set (0.00 sec)
mysql>
(4). 单列增加多个: `insert into 表名(列名) values(...),values(...);`
1
2
3
mysql> insert into person(name) values('jinnmaoshiwang'),('zhangcuishan');
Query OK, 2 rows affected (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 0
查看
1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> select * from person;
+----+----------------+
| id | name |
+----+----------------+
| 1 | zhangsanfeng |
| 2 | zhangwuji |
| 3 | zhaomin |
| 4 | xiaozhao |
| 5 | jinnmaoshiwang |
| 6 | zhangcuishan |
+----+----------------+
6 rows in set (0.00 sec)
mysql>
更新数据
update 表名 set 列名=值 where 条件
1
2
3mysql> update person set name='baimei' where id=6;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
查看
1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> select *from person;
+----+----------------+
| id | name |
+----+----------------+
| 1 | zhangsanfeng |
| 2 | zhangwuji |
| 3 | zhaomin |
| 4 | xiaozhao |
| 5 | jinnmaoshiwang |
| 6 | baimei |
+----+----------------+
6 rows in set (0.00 sec)
mysql>
删除数据
delete from 表名 where 条件
在person表中删除id为2的数据
1
2mysql> delete from person where id=2;
Query OK, 1 row affected (0.01 sec)
查看
1
2
3
4
5
6
7
8
9
10
11
12
13
mysql> select *from person;
+----+----------------+
| id | name |
+----+----------------+
| 1 | zhangsanfeng |
| 3 | zhaomin |
| 4 | xiaozhao |
| 5 | jinnmaoshiwang |
| 6 | baimei |
+----+----------------+
5 rows in set (0.00 sec)
mysql>
常见数据查询操作
1. 模糊查询
- like
- %表示任意多个,也即是可有可无
- _表示一个任意字符,至少一个
person
表内容
1 | mysql> select * from person; |
查询城市是北京的人的名字
1 | mysql> select name from person where city like '北京'; |
查询以北
开头的人的名字,使用%
和_
都可以
1 | mysql> select name from person where city like '北%'; |
修改一下zhaomin
的city区分一下%
和_
;
1 | mysql> update person set city='北' where id=3; |
再运行下上面的
1 | mysql> select name from person where city like '北%'; |
2. 聚合查询
简写 | 含义 |
---|---|
min | 最小值 |
max | 最大值 |
avg | 平均值 |
sum | 求和 |
count | 数量 |
1 | mysql> select *from person; |
求city是上海的人的总和
1 | mysql> select count(*) from person where city='上海'; |
求city是上海的人中id最大的的人
1 | mysql> select max(id) from person where city='上海'; |
其他的和上面的类似
3. 分组查询
查询每个city的人的总数
1 | mysql> select city ,count(*) from person group by city; |
对结果进行排序,使用order by
将上面的结果按照总数进行,升序排序
1 | mysql> select city ,count(*) as 总数 from person group by city order by 总数 asc; |
上面的as
是取别名
单独看上海的有多少人,使用having
1 | mysql> select city ,count(*) from person group by city having city='上海'; |
分页查询,使用limit
select * from 表名 limit start,count
start
,表示从第几个元素开始;count
,查询几个
1 | mysql> select * from person; |
需求:分页查找,每页2个,从0开始;
1 | 第一页 |
having
和where
区别
where
是对原始数据进行筛选;having
是对筛选的结果进行筛选。
该文会持续补充。。。