一. mysql介绍:
查看数据库排名: https://db-engines.com/en/ranking
当前使用的数据库,主要分为两类:
o 文档型,如sqlite,就是一个文件,通过对文件的复制完成数据库的复制
o 服务型,如mysql、postgre,数据存储在一个物理文件中,但是需要使用终端以tcp/ip协议连接,进行数据库的读写操作
关系型数据库MySQL,非关系型数据库MongoDB, Redis三天研究完。谈一下存储引擎,数据库中的存储引擎其实是对使用了该引擎的表进行某种设置,数据库中的表设定了什么存储引擎,那么该表在数据存储方式、数据更新方式、数据查询性能以及是否支持索引等方面就会有不同的“效果”。在MySQL数据库中存在着多种引擎(不同版本的MySQL数据库支持的引擎不同),熟悉各种引擎才能在软件开发中应用引擎,从而开发出高性能的软件,MySQL数据库中的引擎有哪些呢?一般来说,MySQL有以下几种引擎:ISAM、MyISAM、HEAP、InnoDB、 Berkeley 等,除此以外我们也可以参照MySQL++ API创建自己的数据库引擎。剩下的需要继续深入研究了。
二.安装/启动服务/登陆:
安装mysql-server服务端:
sudo apt-get install mysql-server
安装mysql-client客户端:
-
sudo apt-get install update
-
sudo apt-get install mysql-client
查是否安装成功并且启用: sudo netstat -tap | grep mysql
启动服务登陆数据库: service mysql start
登陆MySQL数据库: mysql -u root -p
关闭数据库服务 : service mysql stop
退出mysql :
exit \ ctrl+d
接着查看当前数据库账户信息 :
-
use mysql;
-
select user,host from user;
创建一个fenglei用户并赋予权限
grant all privileges on *.* to fenglei@'%' identified by '123456' with grant option;
刷新数据库账户权限: flush privileges;
修改用户密码:
mysqladmin -u'username' -p123456 password 'aaaaaa'
删除用户 :
delete from user where user='username'
mysql备份:
mysqldump -u用户名 -p 数据库名 > ~/Desktop/备份.sql
导入备份文件:
来到文件所在目录,执行:
mysqldump -u用户名 -p 数据库名 < ~/Desktop/备份.sql
三. mysql基本操作:
1. 查看数据库:
show databases;
2. 创建数据库:
create database python;
3. 删除数据库:
drop database python;
4. 创建表:
-
create table tab_name(
-
id int(10) auto_increment primary key not null,
-
name varchar(40),
-
pwd varchar(40)
-
) charset=utf8;
5. 查看表的结构:
desc tab_name;
6. 查看表的记录:
select * from tab_name;
7. 删除表:
drop table tab_name;
8. 清空表中内容:
delete from tab_name;
9. 表里插入数据:
-
全列插入:insert into 表名 values(...);
-
缺省插入:insert into 表名(列1,...) values(值1,...);
-
同时插入多条数据:insert into 表名 values(...),(...)...;
-
或insert into 表名(列1,...) values(值1,...),(值1,...)...;
10. 复杂查询:
1). 条件查询:
select * from students where id>3;
select * from students where id<4 or isdelete=0;
select * from students where name like '黄%' or name like '_靖';
select * from students where id in(1,3,8);
select * from students where id between 3 and 8;
select * from students where id between 3 and 8 and gender=1;
select * from students where hometown is not null and gender=0;
2). 聚合查询:
select max(id) from students where gender=0;
select count(*) from students where gender=1;
select avg(id) from students where isdelete=0 and gender=0;
3).分组查询:
select isdelete as 是否删除, count(*) from students group by isdelete;
select gender as 性别, count(*) from students group by gender having gender=1;
4 ). 排序:
select * from students where gender=1 and isdelete=0 order by id desc; # 选择没有删除的男生,按照id降序排列
select * from subjects where isdelete=0 order by title; # 按照title排序,默认是升序
5). 分页:
select * from students where isdelete=0 limit (n-1)*m,m # 每页m条数据,当前显示第n页