MySQL初识
MySQL简介
sql语句初识
1. MySQL账号操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 进入mysql数据库 mysql -uroot -p # 默认登录数据库之后并没有实际操作的权限,需要使用root用户登录,在mysql5.6默认没有密码 # 给当前数据库设置密码 mysql> set password = password('root') # 查看当前用户 mysql> select user(); # 退出数据库 mysql> exit mysql> \q quit # 创建账号 mysql> create user 'user1'@'192.137.10.%'; # 指定网段 mysql> create user 'user1'@'192.137.10.120'; # 指定某台机器可以连接 mysql> create user 'user1'@'%'; # 指定所有机器都可以连接 # 远程登录数据库 mysql -uroot -p -h 'ip' #账号授权 mysql> grant all on *.* to 'user1'@'%'; mysql> flush privileges; # 创建账号并授权 mysql> grant all on *.* to 'user1'@'%' identified by '123' # 查看某个用户的权限 mysql> show grants for 'user01'@'ip'
2. sql语言的分类
1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
3. MySQL基本操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
增:create database dbname charset utf8; # 创建数据库并指定编码方式为utf8; 查:show databases; 改:alter database dbname charset latin1; # 修改数据库的编码方式为latin1; 删:drop database dbname;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 要操作哪个数据库,先要切换到库对应的文件夹下 mysql> use dbname; 增:create table table1(字段1,字段2,字段3); 查:show tables; 改:alter table table1 modify name char(3); # 修改表中的name字段内容长度不超过3 alter table table1 change name name1 char(2); # 将name字段修改为name1,并规定name1字段内容长度不能超过2; 删:drop table table1;
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
增:insert into table1 values(值1,值2),(值1,值2),(值1,值2); # 一次插入多条数据 查:select * from table1; 改:update table1 set name='haha' where 条件; 删:delete from table1 where 条件;
ps:
在清空表时,可以有其他的命令:
delete from table1; 在这个命令下,如果有自增字段,新增的数据依然是以删除前最后的id为起始自增,并不是从0开始;
truncate table table1;数据量大,删除速度要比上一条命令块,并从0开始;
4. after和first的区别:
alter table table1 add 字段1 数据类型 限制条件 after 已有字段; # 指定了哪个字段,就会在哪个字段之后新添加一个字段1; alter table table1 add 字段2 数据类型 限制条件 first; # 会在这张表的最前面添加一个字段:字段2;
first:
MySQL的工作流程
MySQL架构总共分为四层,以上图的虚线作为划分。
首先,最上层服务不是MySQL独有的,大多数给予网络的C/S架构的工具或者服务都有类似的架构。比如:连接处理、授权认证、安全等。
第二层的架构包括大多数的MySQL的核心服务。包括:查询解析、分析、优化、缓存以及所有的内置函数(例如:日期、时间、数学和加密函数)。同时,所有的跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。
第三层包含了存储引擎。存储引擎负责MySQL中数据的存储和提取。服务器通过API和存储引擎进行通信。这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明化。存储引擎API包含十几个底层函数,用于执行“开始一个事务”等操作。但存储引擎一般不会去解析SQL(InnoDB会解析外键定义,因为其本身没有实现该功能),不同存储引擎之间也不会相互通信,而只是简单的响应上层的服务器请求。
第四层包含了文件系统,所有的表结构和数据以及用户操作的日志最终还是以文件的形式存储在硬盘上。