天天看點

菜鳥學Linux 第073篇筆記 client,資料類型,變量

菜鳥學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