MySQL 基础入门
Day1 MySQL 软件安装及数据库基础
参考资料:
- [SQL必知必会] 下载链接:https://u18036366.pipipan.com/fs/18036366-300877816
- [MySQL教程] http://www.runoob.com/mysql/mysql-tutorial.html
- [极客学院] http://wiki.jikexueyuan.com/project/sql/databases.html
一、软件安装及服务器设置
-
安装教程请查阅,不做详细介绍:http://www.runoob.com/mysql/mysql-install.html
-
常见错误:
- MySQL服务无法启动,服务没有报告任何错误,请键入 NET HELPMSG 3534 以获得更多的帮助
解决方法可参考:https://segmentfault.com/a/1190000014781074- 进入mysql的安装目录,即bin目录下
- 输入mysqld --console 可查询到具体的日志信息,从日志中的报错信息定位失败原因,针对错误内容进行修改调整
二、使用图形界面软件 Navicat for SQL
推荐Navicat for SQL,具体使用方式根据个人习惯而定。
-
简易步骤:
- 解压缩文件,复制key
- 打开文件夹中的navicat.e
- 用户名随意,输入key,然后连d接数据库
- 输入密码,连接名改成自己喜欢的
-
实例:连接本地数据库
- 打开软件,选择File----》New Connection----》根据使用场景选择需要打开的数据库(如MySQL)
- 输入具体的数据库地址、端口、用户名及密码,点击测试连接测试连通性,如果返回成功即点击OK就可以完成这次新建任务(如需要通过SSH登录,需要到SSH页面填写对应信息)
- 常见错误:Navicat for MySQL 连接 Mysql 出现1251- Client does not support authentication protocol 错误
解决方法可参考:https://blog.csdn.net/seventopalsy/article/details/80195246
三、数据库基础知识
1. 数据库定义
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
2. 关系型数据库
现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量。
所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:
- 数据以表格的形式出现
- 每行为各种记录名称
- 每列为记录名称所对应的数据域
- 许多的行和列组成一张表单
- 若干的表单组成database
3. 二维表
在关系模型中,数据结构表示为一个二维表,一个关系就是一个二维表(但不是任意一个二维表都能表示一个关系,例如两个元组的候选键相同即表中的任意两行相同,就不能表示一个关系。),二维表名就是关系名。
表中的第一行通常称为属性名,表中的每一个元组和属性都是不可再分的,且元组的次序是无关紧要的。
注意: 针对二维数据表每一列都严格定义了约束条件的就是结构化数据表,一个或多个结构化数据表组成的文件就是数据库。
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
4. 行
一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
数据行是存在于数据表中的独立条目。例如,下面是客户信息表中的一条记录:
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
5. 列
一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
列是表中竖直排列的实体,它包含了表中与某一特定字段相关的所有信息。
例如,上面的客户信息表中有字段为 ADDRESS 的列,存储了客户的地址,其内容如下所示:
+-----------+
| ADDRESS |
+-----------+
| Ahmedabad |
| Delhi |
| Kota |
| Mumbai |
| Bhopal |
| MP |
| Indore |
+----+------+
6. 主键
主键是数据表中唯一确定一条记录的字段。主键必须包含唯一值,并且不能为 NULL。
每张数据表只能有一个主键,不过一个主键可以包含一个或者多个字段。如果主键由多个字段组合而成,这些字段就被称作组合键。
如果一个字段被定义为了某表的主键,则任意两条记录在该字段处不能相同。
7. 外键
外键用于将两个数据表连接在一起,有时候也被称作“参照键”。
外键为单一字段或者多个字段的组合,并与另外一个数据表的主键相匹配。
两个表之间的关系是:一个表的主键与另一个表的外键相匹配。
四、MySQL数据库管理系统
1. 数据库
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
- MySQL 是开源的,所以你不需要支付额外的费用。
- MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
- MySQL 使用标准的 SQL 数据语言形式。
- MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、 - Ruby 和 Tcl 等。
- MySQL 对PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。
- MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
- MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。
2. 数据表
在关系数据库中,数据库表是一系列二维数组的集合,用来代表和储存数据对象之间的关系。
表是构成表空间的基本结构,由区间构成。数据表由行(row)和列(column)组成,是一个二维的网格结构,每个列都是一个字段,字段由字段名称和字段的数据类型以及一些约束条件组成,表中至少要有一列,可以有多行或0行,表名要唯一 。
例如一个有关作者信息的名为 authors 的表中,每个列包含的是所有作者的某个特定类型的信息,比如“姓氏”,而每行则包含了某个特定作者的所有信息:姓、名、住址等等。
对于特定的数据库表,列的数目一般事先固定,各列之间可以由列名来识别。而行的数目可以随时、动态变化,每行通常都可以根据某个(或某几个)列中的数据来识别,称为候选键。
# 常用表相关操作
## 创建表
CREATE TABLE [IF NOT EXISTS] tabName(
字段名称 字段类型 [约束条件],
字段名称 字段类型 [约束条件],
...
)ENGINE=存储引擎 CHARSET=编码方式;
## 查看当前数据库下的所有表
SHOW TABLES;
## 查看表结构
DESC user;
DESCRIBE user;
SHOW COLUMNS FROM user;
## 删除表
DROP TABLE user;
3. 视图
数据库视图是一个数据库子集,基于对一个或多个数据库表运行的查询。数据库视图作为命名的查询保存在数据库中,可用于保存频繁使用的复杂查询。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。
注释: 数据库的设计和结构不会受到视图中的函数、where 或 join 语句的影响。
作用:
- 简化了操作,把经常使用的数据定义为视图。
- 安全性,用户只能查询和修改能看到的数据。
- 逻辑上的独立性,屏蔽了真实表的结构带来的影响。
缺点:
- 性能差
- 修改限制
参考地址:http://www.w3school.com.cn/sql/sql_view.asp
4. 存储过程
存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。
存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。
存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。
参考地址:
(菜鸟教程)http://www.runoob.com/w3cnote/mysql-stored-procedure.html
(W3Cschool)https://www.w3cschool.cn/sql/sql-storage.html