# 20190709学习笔记
## 第二周
### 周二
* mysql
* mysql安装
* 命令安装
* sudo apt-get install mysql-server
* sudo apt-get install mysql-client
* sudo apt-get install libmysqlclient-dev
* 压缩包安装
* 基本命令
* DML
* SELECT
* SELECT 列名称 FROM 表名称
* SELECT *FROM 表名称
* 用法
* SELECT DISTINCT 列名称 FROM 表名称
* 返回唯一不同的值
* WHERE
* 规定选择的标准
* =,<>,>,<,<=,<=
* BETWEEN
* LIKE
* 模糊查询
* select *
from T_USER
where u_name like '%清%' ;
* AND & OR
* 用于把where中的两个条件或多个条件连接起来
* ORDER BY
* 根据指定的列对结果集进行排序
* ORDER BY id DESC
* 倒序
* AS
* 给查询结果取别名
* select
u_name as 名字,
u_age as "年龄" ,
u_score 成绩
from T_USER ;
* SELECCT可以对数字、日期结果进行加减乘除操作
* ||
* 可以将结果链接起来为一列
* select
u_name || '的成绩为' || u_score as 成绩
from T_USER ;
* IN
* select u_name , u_score
from T_USER
where u_score in(100,98,65)
* INSERT
* INSERT
INTO tablename() values();
* 用法
* 查询结果插入表中
* INSERT INTO tablename (col) SELECT (col) FROM tablename2 WHERE (condition)
* insert into ST (subectid,subjectName)
select subjectid,subjectName from TSubject where `Publisher` is not null
* UPDATE
* UPDATE tablenamae set col = value WHERE col = value1;
* 用法
* 更新若干列
* UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
WHERE LastName = 'Wilson'
* DELETE
* delete from 表名称 where 列名称 = 值
* DDL
* CREATE
* DROP
* 删除数据库,不可回滚
* TRUNCATE
* 删除数据
* 全表数据完全清空
* 速度快
* 性能高
* 不可回滚
* RENAME
* 只能rename tablename
* 操作时间短
* ALTER
* ALTER TABLE "tablename"
* ADD
* ALTER TABLE table_name
ADD column_name datatype
* MODIFY
* ALTER TABLE table_name
MODIFY COLUMN column_name datatype
* DROP
* mysql体系架构
* 最上层是连接组件
* 下面服务器由
* 连接池
* 把每次建立建立的链接缓存下来,提升服务器性能
* 管理工具和服务
* 系统管理和控制工具,例如备份恢复、Mysql复制、集群等
* SQL接口
* 接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface
* 解析器
* SQL命令传递到解析器的时候会被解析器验证和解析。
* a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的
* b. 如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的
* 优化器
* 查询优化器,SQL语句在查询之前会使用查询优化器对查询进行优化。
* 缓存
* 存储引擎
* InnoDB
* 文件系统
* 字段类型
* 数字
* 整型
* int
* 定点型
* DECIMAL
* 记录的内容是一个精确的值。
* DECIMAL(a,b)a是整数和小数加起来的位数
* 浮点型
* 字符类
* CHAR/VARCHAR
* CHAR是不变长度的
* VARCHAR是变长的
* <255 1个字节
* >255 两个字节
* TEXT
* 变长
* 不能设置默认值
* BLOB
* 记录二进制字符串
* 时间日期
* DATE
* 3个字节
* DATETIME
* 5个字节
* 存储范围广
* TIMESTAMP
* 4个字节
* 权限管理
* mysql权限验证
* 创建用户
* CREATE USER ,GRANT
* 删除用户
* 赋予权限
* GRANT
* 删除权限
* REVOKE
* 常见场景
* 权限安全
* 密码规范
* 线上数据库
* 开发只有曾删改查权限
* beta.dev环境下忘记密码如何处理
* sudo /etc/init.d/mysql.server -p 3306 restart --skip-grant-tables
* mysql -h217.0.0.1 -urandomname
* update mysql.user set password = password('newpassword') where user = 'lisi';
* 权限相关问题
* 系统常用命令
* 查看帮助信息
* help
* show databases
* show create table
* show createdb
* show index from
* show columns from
* show status
* show processlist
* set命令
* set names utf8mb4
*XMind: ZEN - Trial Version*