一、Mysql简介
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL 作为网站数据库。
系统特性
- MySQL使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。
- 支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
- 为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。
- 支持多线程,充分利用 CPU 资源。
- 优化的 SQL查询算法,有效地提高查询速度。
- 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
- 提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。
- 提供TCP/IP、ODBC 和 JDBC等多种数据库连接途径。
- 提供用于管理、检查、优化数据库操作的管理工具。
- 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
- 支持多种存储引擎。
- MySQL 是开源的,所以你不需要支付额外的费用。
- MySQL 使用标准的 SQL数据语言形式。
- MySQL 对 PHP有很好的支持,PHP是比较流行的 Web 开发语言。
- MySQL是可以定制的,采用了 GPL协议,你可以修改源码来开发自己的 MySQL 系统。
- 在线 DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性(5.6新增)
- 复制全局事务标识,可支持自我修复式集群(5.6新增)
- 复制无崩溃从机,可提高可用性(5.6新增)
- 复制多线程从机,可提高性能(5.6新增)
- 3倍更快的性能(5.7 [3] 新增)
- 新的优化器(5.7新增)
- 原生JSON支持(5.7新增)
- 多源复制(5.7新增)
- GIS的空间扩展 (5.7新增)

二、mysql默认数据库里面的四张表(user,db,tables_priv,columns_priv)。
1、user表(用户层权限)
因为字段太多,只截取了一部分。首先登陆的时候验证Host,User,Password(authentication_string)也就是ip,用户名,密码是否匹配,匹配登陆成功将会为登陆者分配权限,分配权限的顺序也是按照上面四张表的排列顺序进行的,举个例子,如果user表的Select_priv为Y说明他拥有所有表的查找权限,如果为N就需要到下一级db表中进行权限分配了。其中的%是通配符,代表任意的意思。
2、db表(数据库层权限)
来到db表之后会匹配Host,User然后会根据Db字段对应的表进行权限分配,像Select_priv这些字段对应的权限大家应该都能看出来是对应着什么权限了吧,这里不细说了(不偷懒,举个例子Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv分别代表着查询,增加,更新,删除,创建,销毁)。其中Y代表这拥有此项权限,N则代表没有此项权限。
3、tables_priv表(表层权限)
与上面一样,这是通过Host,Db,User,Table来进行定位到表层的一个权限分配。不过它只有Table_priv和Column_priv两个字段来记录权限。
4、columns_priv表(字段层权限)
顾名思义,字段层权限,通过Host,Db,User,Table,Column来进行定位到字段层的一个权限分配,只有Column_priv来记录权限。
如何连接数据库执行SQL语句
- 执行SQL语句需要先和数据库软件建立链接之后
- 从开始菜单中找到MariaDB或MySQL,然后打开找到里面的MySQL Client 打开 , 然后输入
- 密码后回车
- 退出指令: exit
- 登录指令: mysql -uroot -p
数据库和表的概念
- 在MySQL数据库软件中保存数据,需要先建库,然后在库里面建表,然后把数据保存到表中

SQL语句格式:
- 以;号结尾
- 关键字不区分大小写
- 可以有空格或换行但一定要以;结尾
数据库相关的SQL语句
- 查询所有数据库格式:
show databases;
- 创建数据库格式:
10. create database 数据库名 charset=utf8/gbk;
- 举例:
- create database db1;
- create database db2 charset=utf8;
- create database db3 charset=gbk;
- 查看数据库信息
show create database 数据库名;
- 举例:
show create database db1;
show create database db2;
show create database db3;
- 删除数据库:
- 格式: drop database 数据库名;
- 举例:
drop database db3;
drop database db2;
show databases;
- 使用数据库
- 执行表相关和数据相关的SQL语句之前必须先使用了某个数据库
- 格式: use 数据库名;
use db1;
表相关的SQL语句
- 执行表相关的SQL语句必须已经使用了某个数据库
use db1;
- 创建表格式:
- create table 表名(字段1名 类型,字段2名 类型,…);
create table person(name varchar(50),age int);
create table student(name varchar(50),chinese int,math int,english int)charset=utf8;
create table emp(name varchar(50),salary int,job varchar(20));
- 查询所有表格式:
show tables;
- 查询表信息格式:
show create table 表名;
- show create table emp;
- 查询表字段格式:
desc 表名;
- 修改表名格式:
rename table 原名 to 新名;
rename table student to stu;
- 删除表格式:
drop tab`l`e 表名;
UTF8字符集
- 目前utf8 和utf8mb3 一样 ,代表的是 用3个字节表示一个字符 (mb3=most byte 3)
- utf8mb4 最多不超过4个字节表示一个字符
检查自己电脑的MySQL服务是否开启
- 在我的电脑/此电脑上右键->管理 检查MySQL服务服务是否正在运行
