[TOC]
## 記錄執行的所有sql
1. ``show variables where Variable_name="general_log";``查看日志是否打開;
若結果為``OFF``,則運行``set global general_log=on;``
2. ``show variables where Variable_name="general_log_file";``查看日志記錄位置
3. 注:會記錄所有sql,建議只在調試時打開,調試完成后關閉``set global general_log=off;``
## 格式化小數到指定位數
1. 輸入`SELECT FORMAT(12562.6655,2);`輸出`12562.67`
2. `CAST(AVG(avg_live)?AS?DECIMAL(10,2))`
## 存儲過程
1. `DELIMITER $`將標準分隔符`;`改成`$`。與存儲過程語法無關,可以將存儲過程作為一個整體傳遞給服務器。結尾再加一個`DELIMITER`可將分隔符復原。
```
DELIMITER $
DELIMITER
```
2. 創建一個存儲過程`CREATE PROCEDURE proc_initData()`。
在這個示例中,存儲過程的名稱為:`proc_initData`,并把括號放在存儲過程的名字之后。
```
CREATE PROCEDURE proc_initData()
```
3. 存儲過程的主體放在`BEGIN`和`END`之間
4. 在存儲過程中定義一個變量`DECLARE dept VARCHAR(10);`
5. 給變量賦值`set dept="7700164";`
6. 調用存儲過程`CALL proc_initData();`
7. 一個例子

## 視圖
1. 創建視圖
~~~
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
~~~
2. 修改視圖
~~~
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
~~~
3. 刪除視圖
~~~
DROP VIEW view_name
~~~
4. 視圖是查詢結果集的可視化的表。不是固定的,會根據實際變化而變化。
## key_buffer_size
1. 作用:指定索引緩存區的大小,影響索引處理速度,特別是索引讀的速度
2. 狀態值比例`key_read/key_read_requests`反應設置是否合理。
``show status like 'key_read%'``獲得狀態值,至少1:100;1:10000更好
3. 該配置對MyISAM表起作用,即使不使用MyISAM表,內部的臨時磁盤表也是MyISAM表,同樣需要使用該值。
4. 對于1G內存的機器,如果不使用MyISAM表,推薦值是16M(8-64M)
## max_allowed_packet
1. 限制server接收的數據包大小
2. 查看當前配置``show VARIABLES like '%max_allowed_packet%'``;
3. 修改方法:修改配置文件或者執行sql語句``set global max_allowed_packet = 2*1024*1024*10``;
4.
/* 首先通過命令行登錄mysql,命令為:*/
mysql -h localhost -u username -p
//接下來輸入對應的passwprd,進入mysql操作界面
set global log_output=file;
set global general_log_file='file-path.log';
set global general_log=on;
set global general_log=off;
MySQL 錯誤 1366:1366 Incorrect integer value是數據庫模式問題,修改配置文件為中
```sql_mode="NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES"```
## 引擎
### InnoDB和MyISAM的區別是什么?
1. InnoDB支持事務,MyISAM不支持;
2. InnoDB數據存儲在共享表空間,MyISAM數據存儲在文件中;
3. InnoDB支持行級鎖,MyISAM只支持表鎖;
4. InnoDB支持崩潰后的恢復,MyISAM不支持;
5. InnoDB支持外鍵,MyISAM不支持;
6. InnoDB不支持全文索引,MyISAM支持全文索引;
## 存在則更新,不存在則新增
```
REPLACE INTO `antdbms_xykj`.`im_config` (`CFG_ID`, `CFG_NAME`, `CFG_DATA`, `CFG_TYPE`, `CFG_STATUS`, `CFG_DESC`) VALUES ('4', 'autoclear', '56', 'system', '1', '');
```
## windows下mysql做成服務
1. 進入mysql bin目錄
2. `mysqld --install mysql`
3. `net start mysql`啟動服務
4. `sc delete mysql`刪除服務
### 發生系統錯誤 1067服務啟動不了
1. 打開事件查看器,發現報錯Can't create test file c:\xampp\mysql\data\DESKTOP-CJP462R.lower-test
2. 思考配置是否錯誤,但bin目錄的配置文件配置正確
3. everything查找,發現有三個my.ini文件,刪除bin目錄以外的
## 優化技巧
1. 比較運算符能用 “=”就不用“<>”
2. 明知只有一條查詢結果,那請使用 “LIMIT 1”
`limit 1`避免全局搜索,找到后就不向下查找了。
3. 使用UNION ALL 代替 UNION,如果結果集允許重復的話
4. 為獲得相同結果集的多次執行,請保持SQL語句前后一致(查詢緩存)
## centos安裝mysql8
1. 點擊[鏈接](https://dev.mysql.com/downloads/file/?id=484922)下載repo源,并上傳到服務器
2. 安裝repo文件`rpm -ivh mysql80-community-release-el7-3.noarch.rpm`
會在/etc/yum.repos.d/目錄下生成兩個repo文件mysql-community.repo?mysql-community-source.repo
3. 更新yum緩存
```
yum clean all
yum makecache
```
4. 安裝`yum install mysql-community-server`
5. 開啟mysql服務`systemctl start mysqld.service`
6. 查看root默認密碼`cat /var/log/mysqld.log | grep password`
7. 加入開機啟動項
```
systemctl enable mysqld.service
systemctl start mysqld.service
```
## 指定加密算法更新密碼
`ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Qw123456.';`
## group_concat()
實現一個ID對應多個名稱時,原本為多行數據,把名稱合并成一行
## 不改變表結構的情況下對無符號進行數學計算
1. `CAST(Times AS SIGNED) AS Times `
- php
- 安全
- php7
- 特性
- 編譯安裝
- 源碼整體框架
- 基本變量
- thinkphp3.2.3
- thinkphp5.0
- thinkphp6.0
- laravel
- 配置
- 路由
- artisan控制臺
- eloquent
- tinker
- composer
- 加密解密
- 小知識點
- 數組
- string
- 代碼簡潔之道
- 編譯
- 語法糖
- lumen
- smarty
- 錯題集
- 算法及數據結構
- 線性表結構
- 插入排序
- 冒泡排序
- 數據庫
- mysql
- oracle
- PostgreSQL
- redis
- sqlserver
- 前端
- 備忘
- js
- nodejs
- vue
- css
- electron
- vue
- 語法糖
- colorui使用筆記
- 微信小程序
- 操作系統
- windows
- bat
- 快捷鍵
- linux
- sed
- 問題解決
- git
- docker
- docker-compose
- 正則表達式
- ps
- lua
- 協議相關
- 問題思索
- Golang
- 測試
- 讀取和寫入json配置文件
- 類
- 接口
- mod
- gin
- fyne
- 禪道二次開發
- 服務
- apache
- 漏洞配置
- http server優化
- nginx
- 安裝
- 面試題庫
- freeswitch