1、数据库
- mysql
- mysqld
- 数据库服务端 以特定格式保存的文件,我们叫做数据库
- 广义:提供较为便捷的数据的存取服务 的软件集合、解决方案 ——mysql数据库
数据库VS文件
- 文件或者数据库,都可以进行数据的存储。 如果用文件,数据内容的管理工作需要程序员自己做。
- 数据库的本质:是对文件的内容提供基本的内容操作,不用程序员(用户)手动的进行数据管理。
- mysql是一个软件层,能帮助用户进行数据管理!!
- 文件保存数据缺点:安全性问题、不利于数据查询和管理、不利于存储海量的数据、在程序控制不方便。
- 操作系统在OS层面对数据进行管理,数据库侧重内容管理。
- 数据库存储性质:磁盘、内存。
- mysql其实它也是一种“文件系统”。
主流数据库:
- SQL Sever:微软的产品,中大型项目,.net程序员最爱
- Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,银行使用较多。
- MySQL:世界上最受欢迎广泛的数据库、便宜、并发性好、维护人多、活跃、99%互联网公司使用、
- PostgreSQL: 学术使用较多。
- SQLite: 轻型数据库 目标是嵌入式,很多嵌入式设备使用
- H2: java开发的嵌入式数据库,本身只是一个类库,可以直接嵌入到应用项目中。
[root@VM-8-7-centos mysql]# mysql -h 127.0.0.1 -P 3306 -u root -p
[root@VM-8-7-centos mysql]# mysql -uroot -p
创建一个数据库在linux上本质是在做什么?
- 本质是在linux中创建目录和文件。
- 在mysql中,建立一个表本质是在linux上创建对应的文件!
创建、建表、添加内容等操作如下:
mysql> use 105_db
Database changed
mysql> use 105_db;
Database changed
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| 105_db |
| mysql |k
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use 105_db;
Database changed
mysql> slect database();
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'slect database()' at line 1
mysql> select database();
+------------+
| database() |
+------------+
| 105_db |
+------------+
1 row in set (0.01 sec)
mysql> create table user(
-> name varchar(20),
-> age int
-> );
Query OK, 0 rows affected (0.03 sec)
mysql> show tables;
+------------------+
| Tables_in_105_db |
+------------------+
| user |
+------------------+
1 row in set (0.00 sec)
mysql> desc user;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
mysql> insert into user (name, age) values ('104','10');
Query OK, 1 row affected (0.00 sec)
mysql> desc user;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> insert into user (name, age) values ('105','15');
Query OK, 1 row affected (0.01 sec)
mysql> select * from user;
+------+------+
| name | age |
+------+------+
| 104 | 10 |
| 105 | 15 |
+------+------+
2 rows in set (0.00 sec)
mysql>
mysql就是一个client,命令行的client
图形化的访问数据库的软件 --client
mysql的生态中,也会提供第三方库,让语言也能直接访问mysql --client
所谓安装数据库服务器,只是在机器上安装一个数据库管理系统程序。
数据逻辑存储
基于行和列
1.4 MySQL架构
是一个可移植的数据库,几乎能在所有的操作系统上运行。各种系统在底层实现方面各有不同,但是基本上能保证在各个平台上的物理体系结构的一致性。
存储引擎-支持插件式的,可选
1.5 SQL 分类
- DDL [data definition language] 数据定义语言,用来维护存储数据的结构,代表:create\drop\alter
- DML【data manipulation language】数据操纵语言,用来对数据进行操作,代表:insert\delete\update
- DCL 【Data control language】 数据控制语言,主要负责权限管理和事务,代表指令:grant\revoke\commit 整个MySQL的系统安全&&账户管理工作,主动和被动下都是比较可靠的!
1.6 存储引擎
数据库管理系统如何存储数据、如何为存储数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心是插件式的核心
show engines; 展示支持的存储引擎。
2.3 字符集和校验规则
查看系统默认字符集以及校验规则
数据库备份
- 对数据做备份。
- 对操作语句做备份。
mysql> insert into t1 values (128);
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> insert into t1 values (-127);
mysql如果插入的数据不符合要求,mysql直接终止操作!
数据类型,在mysql这里,符合条件让你操作,不符合条件不让你操作,倒逼程序员必须遵循规则—约束!!
数据类型在mysql这里除了能够满足各种应用场景,还有一个特别重要的用途:数据类型本质就是一种约束!
推荐
docker第一章 架构的演进史
redis
复习:倒着去复习