原文地址https://www.cnblogs.com/wupeiqi/articles/5713315.html
a. 安装MySQL服务端
b. 安装MySQL客户端
b. 【客户端】连接【服务端】
c. 【客户端】发送命令给【服务端MySQL】服务的接受命令并执行相应操作(增删改查等)
1
2
3
4
5
6
7
8
9
|
下载 http: //dev.mysql.com/downloads/mysql/ 安装 windows: 点点点 Linux: yum install mysql-server Mac: 点点点 |
Window版本
1、下载
2、解压
如果想要让MySQL安装在指定目录,那么就将解压后的文件夹移动到指定目录,如:C:mysql-5.7.16-winx64
3、初始化
MySQL解压后的 bin 目录下有一大堆的可执行文件,执行如下命令初始化数据:
1
2
3
|
cd c:mysql - 5.7 . 16 - winx64 bin mysqld - - initialize - insecure |
4、启动MySQL服务
执行命令从而启动MySQL服务
5、启动MySQL客户端并连接MySQL服务
由于初始化时使用的【mysqld --initialize-insecure】命令,其默认未给root账户设置密码
输入回车,见下图表示安装成功:
到此为止,MySQL服务端已经安装成功并且客户端已经可以连接上,以后再操作MySQL时,只需要重复上述4、5步骤即可。但是,在4、5步骤中重复的进入可执行文件目录比较繁琐,如想日后操作简便,可以做如下操作。
a. 添加环境变量
将MySQL可执行文件添加到环境变量中,从而执行执行命令即可
如此一来,以后再启动服务并连接时,仅需:
b. 将MySQL服务制作成windows服务
上一步解决了一些问题,但不够彻底,因为在执行【mysqd】启动MySQL服务器时,当前终端会被hang住,那么做一下设置即可解决此问题:
注册成服务之后,以后再启动和关闭MySQL服务时,仅需执行如下命令:
12345# 启动MySQL服务
net start mysql
# 关闭MySQL服务
net stop mysql
Linux版本
安装:
1
|
yum install mysql - server |
服务端启动
1
|
mysql.server start |
客户端连接
1
2
3
4
5
6
7
|
连接: mysql -h host -u user -p 常见错误: ERROR 2002 (HY000): Can 't connect to local MySQL server through socket ' /tmp/mysql.sock' (2), it means that the MySQL server daemon (Unix) or service (Windows) is not running. 退出: QUIT 或者 Control+D |
三、数据库操作
1、显示数据库
1
|
SHOW DATABASES; |
默认数据库:
mysql - 用户权限相关数据
test - 用于用户测试数据
information_schema - MySQL本身架构相关数据
2、创建数据库
1
2
3
4
5
|
# utf-8 CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; # gbk CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci; |
3、使用数据库
1
|
USE db_name; |
显示当前使用的数据库中所有表:SHOW TABLES;
4、用户管理
1
2
3
4
5
6
7
8
9
10
|
创建用户 create user '用户名' @ 'IP地址' identified by '密码' ; 删除用户 drop user '用户名' @ 'IP地址' ; 修改用户 rename user '用户名' @ 'IP地址' ; to '新用户名' @ 'IP地址' ;; 修改密码 set password for '用户名' @ 'IP地址' = Password( '新密码' ) PS:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作(不建议) |
5、授权管理
1
2
3
|
show grants for '用户' @ 'IP地址' -- 查看权限 grant 权限 on 数据库.表 to '用户' @ 'IP地址' -- 授权 revoke 权限 on 数据库.表 from '用户' @ 'IP地址' -- 取消权限 |
特殊的:
1
|
flush privileges,将数据读取到内存中,从而立即生效。 |
四、数据表基本
1、创建表
1
2
3
4
|
create table 表名( 列名 类型 是否可以为空, 列名 类型 是否可以为空 )ENGINE=InnoDB DEFAULT CHARSET=utf8 |
2、删除表
1
|
drop table 表名 |
3、清空表
1
2
|
delete from 表名 truncate table 表名 |
4、修改表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
添加列:alter table 表名 add 列名 类型 删除列:alter table 表名 drop column 列名 修改列: alter table 表名 modify column 列名 类型; -- 类型 alter table 表名 change 原列名 新列名 类型; -- 列名,类型 添加主键: alter table 表名 add primary key(列名); 删除主键: alter table 表名 drop primary key; alter table 表名 modify 列名 int, drop primary key; 添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段); 删除外键:alter table 表名 drop foreign key 外键名称 修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; 删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT; |
5、基本数据类型
MySQL的数据类型大致分为:数值、时间和字符串
二进制数据:TinyBlob、Blob、MediumBlob、LongBlob
更多参考:
- http://www.runoob.com/mysql/mysql-data-types.html
- http://dev.mysql.com/doc/refman/5.7/en/data-type-overview.html
五、表内容操作
1、增
1
2
3
|
insert into 表 (列名,列名...) values (值,值,值...) insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...) insert into 表 (列名,列名...) select (列名,列名...) from 表 |
2、删
1
2
|
delete from 表 delete from 表 where id=1 and name = 'alex' |
3、改
1
|
update 表 set name = 'alex' where id>1 |
4、查
1
2
3
|
select * from 表 select * from 表 where id > 1 select nid, name ,gender as gg from 表 where id > 1 |
5、其他
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
a、条件 select * from 表 where id > 1 and name != 'alex' and num = 12; select * from 表 where id between 5 and 16; select * from 表 where id in (11,22,33) select * from 表 where id not in (11,22,33) select * from 表 where id in ( select nid from 表) b、通配符 select * from 表 where name like 'ale%' - ale开头的所有(多个字符串) select * from 表 where name like 'ale_' - ale开头的所有(一个字符) c、限制 select * from 表 limit 5; - 前5行 select * from 表 limit 4,5; - 从第4行开始的5行 select * from 表 limit 5 offset 4 - 从第4行开始的5行 d、排序 select * from 表 order by 列 asc - 根据 “列” 从小到大排列 select * from 表 order by 列 desc - 根据 “列” 从大到小排列 select * from 表 order by 列1 desc ,列2 asc - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序 e、分组 select num from 表 group by num select num,nid from 表 group by num,nid select num,nid from 表 where nid > 10 group by num,nid order nid desc select num,nid, count (*), sum (score), max (score), min (score) from 表 group by num,nid select num from 表 group by num having max (id) > 10 特别的: group by 必须在 where 之后, order by 之前 f、连表 无对应关系则不显示 select A.num, A. name , B. name from A,B Where A.nid = B.nid 无对应关系则不显示 select A.num, A. name , B. name from A inner join B on A.nid = B.nid A表所有显示,如果B中无对应关系,则值为 null select A.num, A. name , B. name from A left join B on A.nid = B.nid B表所有显示,如果B中无对应关系,则值为 null select A.num, A. name , B. name from A right join B on A.nid = B.nid g、组合 组合,自动处理重合 select nickname from A union select name from B 组合,不处理重合 select nickname from A union all select name from B |