更多
更多

MySQL小记——附iOS游戏推荐

最近学的mysql的基础知识,想结合实际需求做点东西,练练手,这样才能学得扎实。

想到了建立一个 我玩过的游戏的数据库,记录自己的游戏历程(其实我玩的并不多) → _ →


Mac上安装了mysql之后,不像其他软件一样可以直接使用,有几个比较坑的问题,稍微总结一下。

下载安装 MySQL Community Edition (GPL)

默认安装之后,会生成默认的密码,一定要复制记下来。(使用brew安装的MySQL密码为空)

在Mac的系统设置中启动mysql.



1. 登陆mysql

PATH问题

在终端中输入mysql,会提示失败。

需要输入完整的路径,mysql默认安装在 /usr/local/mysql ,所以运行mysql的命令应该是/usr/local/mysql/bin/mysql

每次输入一长串命令无疑是麻烦的,最好的办法还是将/usr/local/mysql/bin/加入系统PATH,在/Users/username/.bash_profile文件中加入:(将 username 替换为你的Mac用户名)

export PATH=$PATH:/usr/local/mysql/bin

操作方法:

  • 终端

    1. 打开终端
    2. ls -a显示当前目录下所有文件
    3. vim .bash_profile
    4. 输入上面的代码,保存退出。

  • 编辑器

    1. 首先显示Mac隐藏文件

      • 在终端中输入defaults write com.apple.finder AppleShowAllFiles -boolean true ; killall Finder,回车。

        (隐藏Mac隐藏文件defaults write com.apple.finder AppleShowAllFiles -boolean false ; killall Finder)

    2. 任意文本编辑器,输入代码,另存为.bash_profile

    3. 将文件拖到/Users/username目录下(将 username 替换为你的Mac用户名)


命令问题

打开终端,再输入mysql,提示错误是关于 user 的,查资料后得知,应该输入mysql -u USERNAME -p登陆mysql。

  1. 输入mysql -u root -p,回车
  2. 输入初始密码。
  • ctrl+d退出mysql。




2. 修改密码

登陆成功后的第一件事,必然是修改密码。

方法1:

进入mysql,输入set password for USERNAME@localhost = password('NEWPASS');

(其中USERNAME是用户名,比如root,NEWPASS是你设置的密码。)


方法2:

输入mysqladmin -u USERNAME -p OLDPASS password NEWPASS

(其中USERNAME是用户名,比如root,OLDPASS是原密码,NEWPASS是新密码。)




3. 编码问题

当我插入中文到一个表中,提示incorrect string错误的时候,我就想到应该是编码的问题,话说解决编码最好的办法就是统一为utf8.

然而mysql默认有很多地方不是utf8,登陆mysql之后,输入show variables like 'character%';查看编码,如果没有设置,会发现很多地方不是utf8,一劳永逸的办法是修改mysql配置文件,然而这个文件默认是不存在的 → _ →

修改mysql编码:

  1. 关闭mysql服务

  2. 一般来说,是不存在配置文件的,但还是可以在/usr/local/mysql里,找一下my.cnfmy.ini文件。

  3. 有就移动到/etc/文件夹下(按cmd+shift+G快速前往文件夹),没有就创建一个my.cnf,输入:

1
2
3
4
5
6
7
8
[mysqld]
character-set-server=utf8

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


  • 启动mysql服务,登陆,用show variables like 'character%';再检查一遍。

到这里,才算正式开始在Mac上使用mysql了😑




首先记录iOS游戏,在App Store购买记录中翻了半天,做成如下表格(省略了后面部分):

一个游戏的基本信息写在第一行。

登陆数据库之后,


1.创建数据库:

创建一个名为 Game 的数据库,create database Game;

切换到 Game 数据库下,use Game;

  • 可以在MySQL交互模式使用 source 路径 执行sql文件



2.按照表格的内容创建表格:

创建一个名为 ios_game 的表格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
create table ios_game
(
game_id INT NOT NULL AUTO_INCREMENT, #主键ID自动增加
name VARCHAR(100), #游戏名称
developer VARCHAR(100), #开发商
type VARCHAR(50), #游戏类型
ptime YEAR, #我玩的日期
chinese CHAR(1), #是否支持中文
price INT, #我买的时候的价格,App Store有降价,我经常买16元的
In_App_Purchase CHAR(1), #是否有内购
ad CHAR(1), #是否有广告
grade VARCHAR(1), #我对它的评分,5分最高
note TEXT, #备注
PRIMARY KEY (game_id) #设置主键
);


终端显示:




3.可以通过 desc ios_game; 查看表的结构。




4.插入信息

插入一条信息:

1
2
3
4
INSERT INTO ios_game
(name,developer,type,ptime,chinese,price,In_App_Purchase,ad,grade,note)
VALUES
('Angry Birds','Rovio','休闲',2015,'Y',6,'Y','Y','4','经典游戏');


插入多条信息:

1
2
3
4
5
6
7
INSERT INTO ios_game
(name,developer,type,ptime,chinese,price,In_App_Purchase,ad,grade,note)
VALUES
('Angry Birds Rio','Rovio','休闲',2015,'N',0,'Y','Y','3','《里约大冒险》特别版'),
('Angry Birds Space','Rovio','休闲',2015,'N',1,'Y','Y','4','太空版,有轨迹'),
('Angry Birds Star Wars','Rovio','休闲',2015,'N',1,'Y','Y','3','《星球大战》特别版'),
('Angry Birds Seasons','Rovio','休闲',2015,'N',6,'Y','Y','5','季节版,我认为最好玩的一个版本,以节日为主题,更新频繁');

只需要在VALUES后面将行用 逗号 分开即可,最后一行用 分号.






5.查询信息

需要查询来确定一下。

使用SELECT语句查询:SELECT * FROM ios_game;




6.批量导入

INSERT语句插入,只是用于少量数据的情况,对于更多的数据,最好采用导入的方式。比如用Excel之类的软件,先写好数据,然后存为.csv文件,稍作处理后导入mysql,

我用了Numbers做了如下表格,

因为暂时没有想到如何处理id自动增加会覆盖数据的问题,我直接把表格的第一项id设置为6(因为mysql里面已经存在5条数据了)

导出为.csv文件后,删掉第一行的name,developer等无用信息,

我将导出的.csv文件命名为 1.csv,导入命令为:

load data local infile '/Users/Yang/Desktop/1.csv' into table ios_game fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';

其中两点需要修改,一是.csv的路径,二是表的名称



7.检查

导入之后,查询检查,



因为时间有限,仅仅选取了一些游戏而已。



8.多表

我玩过的游戏不只有iOS,还应该有Win或者Mac等等……

同理创建Win游戏表格,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
create table win_game
(
game_id INT NOT NULL AUTO_INCREMENT, #主键ID自动增加
name VARCHAR(100), #游戏名称
developer VARCHAR(100), #开发商
type VARCHAR(50), #游戏类型
ptime YEAR, #我玩的日期
chinese CHAR(1), #是否支持中文
price INT, #我买的时候的价格,App Store有降价,我经常买16元的
In_App_Purchase CHAR(1), #是否有内购
ad CHAR(1), #是否有广告
grade VARCHAR(1), #我对它的评分,5分最高
note TEXT, #备注
PRIMARY KEY (game_id) #设置主键
);


插入游戏信息

1
2
3
4
5
INSERT INTO win_game
(name,developer,type,ptime,chinese,price,In_App_Purchase,ad,grade,note)
VALUES
('命令与征服:红色警戒3','EA','RTS',2012,'Y',NULL,'N','N','5','经典'),
('LOL','Riot Games','MOBA',2015,'Y',0,'Y','N','4','手残不适合,因为用Mac一年没玩了');


最后查询,SELECT * FROM win_game;




9.总结

数据库应该是逐渐完善的,用show tables;显示数据库中的所有表格。

暂时就是这样,以后再逐渐完善,更加规范(起码满足3NF),希望今天创建的这个数据库可以完成它的使命————帮我记录我所玩过的所有游戏的基本信息 → _ →




最后是数据库的一点实际用途,想要给别人推荐游戏,只需要查找出5分游戏即可,

仍然是SELECT语句,配合WHERE,

1
2
SELECT * FROM ios_game
WHERE grade > '4';


游戏推荐 (。•ˇ‸ˇ•。)


Enjoy it : )