1.MySQL的基本认识
MySQL是基于TCP协议的CS模式的网络服务,可以查看:
[xiyan@hecs-34711 ~]$ sudo netstat -atnp
tcp6 0 0 :::3306 :::* LISTEN 2382/mysqld
1.1.为什么要使用数据库
在学习数据库之初的困惑,是为什么要学习数据库?有了文件操作来存储数据为什么还需要使用数据库来存储?带着这样的困惑来看这样的一个需求:统计全校姓"张"的学生的个数。 使用数据库可以这样操作:
- 创建数据库
mysql> create database school;
Query OK, 1 row affected (0.00 sec)
- 使用数据库
mysql> use school;
Database changed
- 创建数据库表
mysql> create table student(
-> id int,
-> name varchar(20),
-> age int
-> );
- 查询表
mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| student |
+------------------+
1 row in set (0.00 sec)
- 添加数据
mysql> insert into student (id,name,age) values(1,"张一铭",18);
mysql> insert into student (id,name,age) values(1,"张三",18);
mysql> insert into student (id,name,age) values(1,"李四",18);
- 查询全部数据
mysql> select * from student;
- 统计姓张的人数
mysql> select count(name) from student where name like '张%';
+-------------+
| count(name) |
+-------------+
| 2 |
+-------------+
上面就使用数据库的方式对存储在数据库中快速的对数据内容作了统计。如果使用纯文件操作,那么对程序员来说非常麻烦,去自己调用文件操作的接口,而专家们设计出更加利于管理数据的数据库,减少程序员的工作量。
总之:文件能提供数据存储的能力,但是文件不利于数据查询和管理,不利于存储海量数据,文件还有着一些安全性方面的问题。而数据库,提供了管理数据内容的能力,提供了权限管理等来保证数据的安全。
1.2.建库和建表发生了什么
(1)登录数据库:
[xiyan@hecs-34711 ~]$ mysql -h 127.0.0.1 -P 3306 -u root -p
-h 指明mysql服务的主机[默认:本地]
-P 指明端口[默认3306]
-u 指明用户
-p 密码,不回显
[xiyan@hecs-34711 ~]$ mysql -u root -p
(2)查看建库操作发生了什么:
[xiyan@hecs-34711 ~]$ su # 切换root账号,我安装的时候用的是root
那么mysql安装在何处呢,它的数据放在何处
[root@hecs-34711 ~] find / -name mysql 2>/dev/null # 如果不记得mysql安装在何处
[root@hecs-34711 ~] find / -name my.cnf 2>/dev/null
/etc/my.cnf
[root@hecs-34711 ~] cat /etc/my.cnf
datadir=/var/lib/mysql # 数据存放的路径
socket=/var/lib/mysql/mysql.sock
port=3306 # 设置端口
character-set-server=utf8 # 设置服务端编码
default-storage-engine=innodb # 设置默认引擎
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
skip-grant-tables
我们查找 /var/lib/mysql
路径下的文件,找到了创建数据库的文件夹,所以创建数据库的本质是创建文件夹!
[root@hecs-34711 mysql] ll
drwxr-x--- 2 mysql mysql 4096 Jan 14 23:01 school
(3)查看建表操作发生了什么:
cd
到school
文件夹下:发现创建表其实会创建一些文件。 至于这些文件是什么意思可以看小林哥的博客
[root@hecs-34711 school] ll
total 112
-rw-r----- 1 mysql mysql 61 Jan 14 22:59 db.opt
-rw-r----- 1 mysql mysql 8614 Jan 14 23:01 student.frm
-rw-r----- 1 mysql mysql 98304 Jan 14 23:04 student.ibd