shell
連接 Mysql
的幾種方式
user="apper" # 用戶名
password="superme@2019" # 密碼
host="192.168.1.110" # ip地址
port="3306" # 端口號
database="upay" # 數(shù)據(jù)庫名稱
sql_string="SELECT * FROM ThirdUQUserRelation;" # 查詢語句
# 方式1
mysql -h${host} -P${port} -u${user} -p${password} $database -e "${sql_string}"
# 方式2
mysql --host=${host} --port=${port} --user=${user} --password=${password} --database=$database -e "${sql_string}"
# 方式3
file_path="/path/to/sql"
mysql -h${host} -P${port} -u${user} -p${password} $database < ${file_path}
數(shù)據(jù)庫操作
顯示數(shù)據(jù)庫
show databases;
使用某個數(shù)據(jù)庫
use <數(shù)據(jù)庫名稱>;
創(chuàng)建一個數(shù)據(jù)庫
create database <數(shù)據(jù)庫名稱>;
刪除一個數(shù)據(jù)庫
drop database <數(shù)據(jù)庫名稱>;
表操作
顯示所有表
(需要先通過 use 語句進(jìn)入到該數(shù)據(jù)庫里面)
show tables;
創(chuàng)建表
基本語法形式
create table table_name (column_name column_type);
創(chuàng)建表示例:
CREATE TABLE `ExchangeRate` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`baseCurrencyCode` varchar(8) NOT NULL DEFAULT 'USD' COMMENT '基礎(chǔ)幣種代號',
`targetCurrencyCode` varchar(8) NOT NULL DEFAULT '' COMMENT '目標(biāo)幣種代號',
`baseAmount` varchar(11) NOT NULL DEFAULT '1' COMMENT '基礎(chǔ)貨幣數(shù)量',
`targetAmount` Double(10, 2) NOT NULL DEFAULT '0' COMMENT '目標(biāo)貨幣數(shù)量',
`time` varchar(20),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
AUTO_INCREMENT
表示自增NOT NULL
表示該字段的值不為空DEFAULT
表示該字段的默認(rèn)值COMMENT
表示注釋內(nèi)容
刪除表
DROP TABLE table_name;
插入數(shù)據(jù)
INSERT INTO table_name (field1, field2, ...) VALUES (value1, value2, ...);
查詢數(shù)據(jù)
基本語法形式
SELECT column_name, column_name
FROM table_name
[WHERE Clause]
[LIMIT N]
[OFFSET M];
column_name
表示字段名稱囊扳,使用 * 來代表所有字段;[WHERE Clause]
where 語句來過濾篩選條件(可選
);[LIMIT N]
limit 語句來制定返回數(shù)據(jù)的數(shù)據(jù)(可選
);[OFFSET M]
offset 語句來指定開始查詢的偏移量,默認(rèn)情況下偏移量為0(可選
);
更新數(shù)據(jù)
基本語法形式
UPDATE table_name SET filed1=new-value1, field2=new-value2
[WHERE Clause];
刪除數(shù)據(jù)
基本語法形式
DELETE FROM table_name [WHERE Clause];
LIKE
子句
Like 子句可以使用類似正則表達(dá)似的進(jìn)行匹配搜索曙博。
基本語法形式
SELECT field1, field2,...fieldN
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue';
LIKE 通常與 % 一同使用晓淀,類似于一個元字符的搜索。
%
表示任意 0 個或多個字符鸯屿〕憾郑可匹配任意類型和長度的字符,有些情況下若是中文寄摆,請使用兩個百分號(%%)表示谅辣。_
表示任意單個字符。匹配單個任意字符婶恼,它常用來限制表達(dá)式的字符長度語句桑阶。[]
表示括號內(nèi)所列字符中的一個(類似正則表達(dá)式)。指定一個字符勾邦、字符串或范圍蚣录,要求所匹配對象為它們中的任一個。[^]
表示不在括號所列之內(nèi)的單個字符眷篇。其取值和 [] 相同萎河,但它要求所匹配對象為指定字符以外的任一個字符。
DISTINCT
刪除重復(fù)數(shù)據(jù)(用法 distinct(filed1)
)
ORDER BY
字段排序, 使用 ASC 或 DESC 關(guān)鍵字來設(shè)置查詢結(jié)果是按升序或降序排列蕉饼。 默認(rèn)情況下虐杯,它是按升序排列 (用法 order by age desc
)
GROUP BY
對結(jié)果分組 (用法 group name
)
連表查詢
INNER JOIN(內(nèi)連接,或等值連接)
:獲取兩個表中字段匹配關(guān)系的記錄。LEFT JOIN(左連接)
:獲取左表所有記錄昧港,即使右表沒有對應(yīng)匹配的記錄擎椰。RIGHT JOIN(右連接)
: 與 LEFT JOIN 相反,用于獲取右表所有記錄创肥,即使左表沒有對應(yīng)匹配的記錄达舒。
ALTER
命令
當(dāng)我們需要修改數(shù)據(jù)表名或者修改數(shù)據(jù)表字段時,就需要使用到MySQL ALTER命令瓤的。
刪除表 table_name
中的字段 i
:
ALTER TABLE table_name DROP i;
在表 table_name
中添加 INT
類型的字段 i
:
ALTER TABLE table_name ADD i INT;
在表 table_name
中修改字段 c
的類型為 char(10)
:
ALTER TABLE table_name MODIFY c CHAR(10);
修改表名 table_name
為 new_table_name
:
ALTER TABLE table_name RENAME TO new_table_name;
常見函數(shù)
函數(shù) | 作用 |
---|---|
json_extract | 提取 json 字符串 |
replace(s1, s2) | s2 替換 s1 |
count(*) | 統(tǒng)計次數(shù) |
trim | 去掉字符串首尾空格 |
NOW() | 當(dāng)前日期和時間 |
DATE() | 當(dāng)前日期 |
CURTIME() | 當(dāng)前時間 |
其他
配置文件位置
從命令行終端運(yùn)行此命令休弃,將在尋找Linux/BSD / OS X系統(tǒng)中的MySQL配置文件 my.cnf 文件:
mysql --help | grep 'Default options' -A 1
上面命令執(zhí)行后,會有這樣的輸出:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf