菜鳥學Linux 第073篇筆記 client,資料類型,變量
小标題
client、mysql資料類型、伺服器變量、存儲引擎、sql模型
MySQL用戶端
mysql
--user, -u
--host, -h
--password, -p
--port
--protocol
--database DATABASE, -D
--html 傳回結果以html格式顯示
--xml 傳回結果以xml格式顯示
mysql>
互動式模式
批處理模式(腳本模式)
腳本寫法和在mysql>模式輸入一樣;号結尾,隻是不用進入互動模式便可執行
執行mysql腳本方式
指令行下
# mysql < /path/name.sql
進入互動模式下引用腳本
mysql> \. /path/name.sql
mysql> source /path/name.sql
指令兩類
用戶端指令
\c 提前終止語句執行
\g 無論語句結束符是什麼,直接将此語句送至伺服器端執行
\G 無論語句結束符是什麼,直接将此語句送到伺服器端執行,以豎排方式顯示
\. 引用.sql結尾的Mysql語句腳本
\s Get status information from the server.
\! Execute a system shell command.
\W Show warnings after every statement.
\w Don't show warnings after every statement.
\# 對建立的對象支援補全的功能
\d 定義結束符
伺服器語句;有語句結束符,預設為;号
help Key-word
mysql提示符含義
mysql> 正常輸入指令
-> 少結束符
'> 少單引号的後一半
"> 少雙綽号的後一半
`> 少反綽号的後一半
mysql讓其支援補全
(不推薦,隻是說有這樣一種功能,因為支援補全需要将這些資料加載到記憶體)
名稱補全 \#
mysqladmin
# mysqladmin [options] command [arg] [command [arg] ] ...
create DATABASE-NAME;
drop DATABASE-NAME;
ping
# mysqladmin -uroot -h192.168.11.122 -p -ping測試伺服器是否可以ping通
processlist 顯示正在執行的線程清單
status
--sleep N(second)
--count N(次數)
extended-status 顯示狀态變量和其值
variables 顯示伺服器變量
flush-privileges 讓mysql重讀授權表
flush-status 重置大多數的伺服器狀态變量
flush-tables 關閉已經打開的表
flush-threads 重置線程緩存
flush-logs 二進制和中繼日志滾動
flush-hosts 清除主機的錯誤資訊,主機嘗試多次連接配接失敗,mysql會禁止其一段時間登入
kill 殺死某線程
reload = flush-privileges
refresh = fush-logs and flush hosts 同時執行
shutdown 關閉mysql伺服器程序
version 版本号和狀态資訊
start-slave 啟動複制,啟動從伺服器複制線程
SQL thread
IO thread
stop-slave 停止複制線程
mysqldump(備份), mysqlimport(導入), mysqlcheck(導入)
開發視角:
資料類型
限制
建立資料庫、表、索引、視圖
SELECT 語句
存儲引擎:也被稱為表類型
MyISAM(表類型):
不支援事務,表鎖
.frm 表結構定義檔案
.MYD 表資料
.MYI 索引
InnoDB表 事務,行鎖
.frm 表結構
.ibd 表空間(資料和索引)
mysql: mysql庫: MyISAM
mysql> SHOW TABLE STATUS LIKE 'user'\G; 顯示表所使用的存儲引擎
mysql> SHOW ENGINES;
程式語言連接配接資料的方式:
動态SQL 通過函數或方法與資料庫伺服器建立連接配接,将語句發至伺服器
嵌入式SQL 連接配接之前需要編譯
JDBC (Java database connection), ODBC(open database connection)
用戶端元件 mysql, mysqladin, mysqldump, mysqlimport, mysqlcheck
伺服器 mysqld, mysqld_safe, mysqld_multi(多執行個體)
my.cnf查找順序
/etc/my.cnf --> /etc/mysql/my.cnf --> $MYSQL_HOME/my.cnf --> --default-extra-file=/path/to/somefile --> ~/my.cnf
[mysqld]
[mysql]
[clent]
#mysqld --help --verbose 顯示可以在my.cnf檔案中配置的參數
記得勤檢視錯誤日志
DBA 方向
開發DBA 資料庫設計、SQL語句、存儲過程、存儲函數、觸發器...
管理DBA 安裝、更新、備份恢複、使用者管理、權限管理、監控、性能分析、基準測試...
數值型
精确數值
int
decimal
近似數值
float
double
real
字元型
定長 CHAR(#), BINARY(區分大小寫)
變長 VARCHAR(#), VARBINARY(區分大小寫)
text, blob
ENUM, SET
日期時間型
date
time
datetime
timestamp
布爾型
詳解
String Data Types
TINYINT 255
SMALLINT 65535
MEDIUMINT 16M
INT 4G
BIGINT 非常大!
DECIMAL
FLOAT (fixed)
DOUBLE (fixed)
BOOL
Numeric data type attributes
NOT NULL
NULL
DEFAULT
AUTH_INCREMENT
UNSIGNED
CHAR 255
VARCHAR 65535
BINARY 255(fixed)
VARBINARY 65535(variable)
TINYBLOB 255(variable)
BLOB 65535(variable)
MEDIUMBLOB 16Mb(variable)
LONGBLOB 4GB(variable)
TINYTEXT 255
MEDIUMTEXT 16777215
LONGTEXT 40億
ENUM
SET (不支援索引)
Character string type attributes
CHARACTER SET
COLLATION
Date and Time Data Types
DATA
TIME
DATATIME
TIMESTAMP
YEAR
AUTO_INCREMENT
整形
非空
無符号
主鍵或唯一鍵
mysql> SELECT LAST_LAST_INCRET_ID();
CREAT TABLE test(ID INT UNSIGNED AUTO_INCREMENT NOTNULL PRIMARY KEY,Name CHAR(20));
域屬性,修改符
定義資料類型意義:
1. 存入的值類型
2. 占據的存儲空間
3. 定長還是變長
4. 如何比較及排序
5. 是否能夠索引
重點掌握資料存儲類型的格式、表示的範圍大小、所能夠接受的修飾符
SQL語句
mysql> SHOW CHARACTER SET;
顯示目前mysql伺服器所支援的所有字元集
mysql> SHOW COLLATION;
各個字元集的排序規則
SQL模型
ANSI QUOTES 單綽号辨別字元串,雙引号和反引号引用字段名稱,表名等
IGNORE_SPACE built-in function内建函數忽略空白字元
STRICT_ALL_TABLES 設定後不允許寫非法字元
STRICT_TRANS_TABLES 向支援事務的表中插入非法資料會被拒絕
TRADITIONAL
mysql> SHOW GLOBAL VARIABLES LIKE 'sql_mode'; 查詢SQL模型
伺服器變量
按作用域分為兩類
全局變量(管理者權限)
SHOW GLOBAL VARIABLES
會話變量(使用者可修改)
SHOW [ SESSION ] VARIABLES
按生效時間劃分為兩類
動态 可即時修改
靜态
寫在配置檔案中
通過參數傳遞給mysqld
動态參數調整生效方式
全局: 對目前會話無效,隻對建立立會話有效
會話: 即時生效,但隻對目前會話有效,關閉後失效
伺服器變量@@
顯示: SELECT @@{GLOBAL|SESSION}.sql_mode;
設定: SET {GLOBAL|SESSION} 變量名='value'
SET GLOBAL sql_mode='strict_trans_tables';s
設定後目前會話無效,重建立立會話生效
SET SESSION sql_mode='strict_trans_tables';
本文轉自Winthcloud部落格51CTO部落格,原文連結http://blog.51cto.com/winthcloud/1890557如需轉載請自行聯系原作者
Winthcloud