MySQL的学习记录
centos下MySQL下载地址: https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar
安装过程记录:
关键字说明:
数据库:database
数据库系统:DBS(Database System):是一种虚拟系统,见多种内容关联起来的称呼
DBS = DBMS+DB
DBMS:Database Management System,数据库管理系统,专门管理数据库
DBA:Database Administrator,数据库管理员
行/记录:row/record,本质是一个东西:都是指表中的一行(一条记录):行是从结构角度出发,记录是从数据角度出发。
列/字段:column/field,本质是一个东西
SQL
SQL:Structured Query Language,结构化查询语言(数据以查询为主:99%是在进行查询操作)
SQL分为三部分
DDL:Data Definition Language,数据定义语言,用来维护存储数据的结构(数据库,表),代表指令:create,drop,alter等
DML:Data Manipulation Language,数据操作语言,用来对数据进行操作(数据表中的内容),代表指令:insert,delete,update等:其中DML内部又单独进行了一个分类:DQL(Data Query Language:数据查询语言,如select)
DCL:Data Control Language,数据控制语言,主要是负责权限管理(用户),代表指令:grant,revoke等
SQL是关系型数据库的操作指令,SQL是一种约束,但不强制(类似W3C):不同的数据库产品(如Oracle,mysql)可能内部会有一些细微的区别。
MySQL数据库
MySQL数据库是一种c/s结构的软件:客户端。服务端若想访问服务器必须通过客户端(服务器一直运行,客户端都在需要使用时运行)。
交互方式
1、客户单连接认证:连接服务器,认证身份:mysql.exe-hPup
windows操作:mysql.exe -hlocalhost -P3306 -uroot -p
linux操作:
2、客户端发送SQL指令
3、服务器接收SQL指令:处理SQL指令:返回操作结果
4、客户端接收结果:显示结果
windows操作:show databases
linux操作:
5、断开连接(释放资源:服务器并发限制):exit/quit/\q
MySQL服务器对象
服务器是C语言编译好的结果,无法进行反编译,所以,无法完全了解服务器内部的内容:只能粗略的去分析数据库服务器的内部结构。
将mysql服务器内部对象分成了四层:系统(DBMS)->数据库(DB)->数据表(Table)->字段(field)
SQL的基本操作
基本操作:CRUD(增删改查)
将SQL的基本操作根据操作对象进行分类,分为三类:库操作,表操作(字段),数据操作
库操作
对数据库的增删改查。
新增数据库
基本语法
Create database 数据库名字 [库选项];
库选项:用来约束数据库,分为两个选项
字符集设定:charset/character set 具体字符集(数据存储的编码格式):常用字符集:GBK和UTF8
校对集设定:collate 具体校对集(数据比较的规则)
"""
mysql> -- 双中下划线+空格:注释(单行注释),也可以使用#号
mysql> -- 创建数据库
mysql> create database mydatabase charset utf8;
Query OK, 1 row affected(0.01 sec)
"""
其中:数据库名字不能用关键字(已经被使用的字符)或者保留字(将来可能会用到的)
如果非要使用关键字或者保留字,那么必须使用反引号(esc键下面的键在英文状态下的输出:`)
中文数据库是可以的,但是有前提条件:保证服务器能够识别(不建议使用)
解决方案:
mysql> set names gbk
mysql> create database 中国 charset utf8;
当创建数据库的SQL语句执行后,发生了什么?
1. 在数据库系统中,增加了对应的数据库信息
2.会在保存数据的文件夹下:Data目录,创建一个对应数据库名字的文件夹(中文名称的数据库名称显示并不是中文,是特殊的编码)
3.每个数据库下都有一个opt文件:保存了库选项