Mysql 的日常命令

此篇文章是簡單整理, 參考

數(shù)據(jù)庫

1.進(jìn)入根的數(shù)據(jù)庫

mysql -u root -p
* 輸入你的密碼
* 如初始密碼太長, 想改密碼: 
    - set password for root@localhost = password('yourpass');
    - FLUSH PRIVILEGES;

2.進(jìn)入遠(yuǎn)程數(shù)據(jù)庫

假設(shè)遠(yuǎn)程主機(jī)的IP為:23.106.134.88,用戶名為root,密碼為123456
打開終端,輸入如下命令:
mysql -h 23.106.134.88 -u root -p 123456

3.退出

exit

3.數(shù)據(jù)庫

創(chuàng)建一個(gè)名字為mydatabase數(shù)據(jù)庫:  
    - create database mydatabase;
顯示所有的數(shù)據(jù)庫:
    - show databases;
更改數(shù)據(jù)庫名字: 
    - alter databases Hdatabase;
更改數(shù)據(jù)庫mydatabase的字符集:
    - alter database mydatabase charset GBK;
進(jìn)入數(shù)據(jù)庫:
    - use mydatabase;
刪除名為xhkdb的數(shù)據(jù)庫:
    - drop database xhkdb;

進(jìn)入數(shù)據(jù)庫后,查看該數(shù)據(jù)庫中的表:  
    - show tables;
創(chuàng)建表:
    - CREATE TABLE table_name (column_name column_type);

  • 數(shù)據(jù)庫中創(chuàng)建數(shù)據(jù)表runoob_tbl:
   CREATE TABLE IF NOT EXISTS runoob_tbl(
   runoob_id INT UNSIGNED AUTO_INCREMENT,
   runoob_title VARCHAR(100) NOT NULL,
   runoob_author VARCHAR(40) NOT NULL,
   submission_date DATE,
   PRIMARY KEY ( runoob_id )
   )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 實(shí)例解析:
* 如果你不想字段為 NULL 可以設(shè)置字段的屬性為 NOT NULL, 在操作數(shù)據(jù)庫時(shí)如果輸入該字段的數(shù)據(jù)為NULL ,就會(huì)報(bào)錯(cuò)。
* AUTO_INCREMENT定義列為自增的屬性,一般用于主鍵,數(shù)值會(huì)自動(dòng)加1。
* PRIMARY KEY關(guān)鍵字用于定義列為主鍵。 您可以使用多列來定義主鍵,列間以逗號分隔。
* ENGINE 設(shè)置存儲(chǔ)引擎,CHARSET 設(shè)置編碼。
  • 具體
獲取表結(jié)構(gòu):
    - desc 表名
    - 或者show columns from 表名
刪除表:
    - drop table <表名>
  • 插入數(shù)據(jù)
INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );
* 如果數(shù)據(jù)是字符型,必須使用單引號或者雙引號,如:"value"。

insert into test (name,sex) values("name1",1);
* 注意: 使用箭頭標(biāo)記 -> 不是 SQL 語句的一部分,它僅僅表示一個(gè)新行,如果一條SQL語句太長,我們可以通過回車鍵來創(chuàng)建一個(gè)新行來編寫 SQL 語句,SQL 語句的命令結(jié)束符為分號 ;
  • 查詢所有行
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]

* 查詢語句中你可以使用一個(gè)或者多個(gè)表,表之間使用逗號(,)分割,并使用WHERE語句來設(shè)定查詢條件。
* SELECT 命令可以讀取一條或者多條記錄。
* 你可以使用星號(*)來代替其他字段,SELECT語句會(huì)返回表的所有字段數(shù)據(jù)
* 你可以使用 WHERE 語句來包含任何條件。
* 你可以使用 LIMIT 屬性來設(shè)定返回的記錄數(shù), [起始位置,長度]。
* 你可以通過OFFSET指定SELECT語句開始查詢的數(shù)據(jù)偏移量。默認(rèn)情況下偏移量為0。

SELECT * from test WHERE BINARY name='name1';

* 使用了 BINARY 關(guān)鍵字,是區(qū)分大小寫的意思

*查看表 test 中前行數(shù)據(jù)
- select  * from test order by id limit 0,2;   
- 或者: select * from test limit 0,2; 
  • 刪除表中數(shù)據(jù)
DELETE FROM table_name [WHERE Clause]
* 如果沒有指定 WHERE 子句,MySQL 表中的所有記錄將被刪除。
* 你可以在 WHERE 子句中指定任何條件
* 您可以在單個(gè)表中一次性刪除記錄。
* 當(dāng)你想刪除數(shù)據(jù)表中指定的記錄時(shí) WHERE 子句是非常有用的。

delete from account where name="dd";
  • 修改表中數(shù)據(jù)
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]

* 你可以同時(shí)更新一個(gè)或多個(gè)字段。
* 你可以在 WHERE 子句中指定任何條件。
* 你可以在一個(gè)單獨(dú)表中同時(shí)更新數(shù)據(jù)。
update account set name="官人2",balance="10000" where id=2;
  • 在表中增加/刪除/修改字段
- 增加
 ALTER TABLE 表名 ADD 字段名字 INT DEFAULT ; 
* 在表account中添加了一個(gè)字段sex,類型為int(4),默認(rèn)值為 1 
  - alter table test1 add age int(4) default 0;

- 刪除
ALTER TABLE 表名  DROP 字段名字;
* 如果數(shù)據(jù)表中只剩余一個(gè)字段則無法使用DROP來刪除字段
  - alter table test1 DROP age;

- 修改字段類型及名稱
* 把字段 age 的類型從 int(4) 改為 int(2),可以執(zhí)行以下命令
ALTER TABLE 表名 MODIFY age  int(2);
  - alter table test1 modify age int(2);
  - 修改名字
    - CHANGE 關(guān)鍵字之后,緊跟著的是你要修改的字段名,然后指定新字段名及類型。
    - ALTER TABLE 表名 CHANGE 要改的字段 改成什么名字 類型;
    - alter table test1 change age age1 int(2);
  • 更改表名
ALTER TABLE testalter_tbl RENAME TO alter_tbl;

WHERE 子句

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
* 查詢語句中你可以使用一個(gè)或者多個(gè)表,表之間使用逗號, 分割,并使用WHERE語句來設(shè)定查詢條件。
* 你可以在 WHERE 子句中指定任何條件。
* 你可以使用 AND 或者 OR 指定一個(gè)或多個(gè)條件。
* WHERE 子句也可以運(yùn)用于 SQL 的 DELETE 或者 UPDATE 命令。
* WHERE 子句類似于程序語言中的 if 條件,根據(jù) MySQL 表中的字段值來讀取指定的數(shù)據(jù)。

LIKE 子句

  • 如果沒有使用百分號 %, LIKE 子句與等號 = 的效果是一樣的
SELECT field1, field2,...fieldN 
FROM table_name
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
* 你可以在 WHERE 子句中指定任何條件。
* 你可以在 WHERE 子句中使用LIKE子句。
* 你可以使用LIKE子句代替等號 =。
* LIKE 通常與 % 一同使用,類似于一個(gè)元字符的搜索。
* 你可以使用 AND 或者 OR 指定一個(gè)或多個(gè)條件。
* 你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句來指定條件。

SELECT * from runoob_tbl  WHERE runoob_author LIKE '%COM';
將 runoob_tbl 表中獲取 runoob_author 字段中以 COM 為結(jié)尾的的所有記錄

UNION 操作符

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

expression1, expression2, ... expression_n: 要檢索的列。
tables: 要檢索的數(shù)據(jù)表。
WHERE conditions: 可選, 檢索條件。
DISTINCT: 可選,刪除結(jié)果集中重復(fù)的數(shù)據(jù)。默認(rèn)情況下 UNION 操作符已經(jīng)刪除了重復(fù)數(shù)據(jù),所以 DISTINCT 修飾符對結(jié)果沒啥影響。
ALL: 可選,返回所有結(jié)果集,包含重復(fù)數(shù)據(jù)。

UNION 用于合并兩個(gè)或多個(gè) SELECT 語句的結(jié)果集,并消去表中任何重復(fù)行。
UNION 內(nèi)部的 SELECT 語句必須擁有相同數(shù)量的列,列也必須擁有相似的數(shù)據(jù)類型。
同時(shí),每條 SELECT 語句中的列的順序必須相同.
默認(rèn)地,UNION 操作符選取不同的值。如果允許重復(fù)的值,請使用 UNION ALL。
當(dāng) ALL 隨 UNION 一起使用時(shí)(即 UNION ALL),不消除重復(fù)行

注意:
1、UNION 結(jié)果集中的列名總是等于第一個(gè) SELECT 語句中的列名
2、UNION 內(nèi)部的 SELECT 語句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類型。同時(shí),每條 SELECT 語句中的列的順序必須相同

排序

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默認(rèn) ASC]], [field2...] [ASC [DESC][默認(rèn) ASC]]

你可以使用任何字段來作為排序的條件,從而返回排序后的查詢結(jié)果。
你可以設(shè)定多個(gè)字段來排序。
你可以使用 ASC 或 DESC 關(guān)鍵字來設(shè)置查詢結(jié)果是按升序或降序排列。 默認(rèn)情況下,它是按升序排列。
你可以添加 WHERE...LIKE 子句來設(shè)置條件。
* SELECT * from test ORDER BY submission_date ASC;

GROUP BY 語句

  • 分組 根據(jù)某個(gè)字段進(jìn)行分組,相同的放一組,不同的分到不同的組。統(tǒng)計(jì)的是數(shù)據(jù),不是記錄
group by 字段 [asc/desc];   
SQL提供了一系列統(tǒng)計(jì)函數(shù)

Count();  統(tǒng)計(jì)分組后的記錄數(shù),每一相同的組有多少行記錄
Max();   統(tǒng)計(jì)每組最大的值
Min();   統(tǒng)計(jì)每組最小的值
Avg();   統(tǒng)計(jì)每組的平均值
Sum();   統(tǒng)計(jì)每組的和
select salePrice,count(*),max(cutoff),min(cutoff),avg(cutoff),sum(cutoff) from product group by salePrice;

having , 用于操作查詢后的結(jié)果
select salePrice,count(*) from product group by salePrice having salePrice>100;

NULL 值處理

IS NULL: 當(dāng)列的值是 NULL,此運(yùn)算符返回 true。
IS NOT NULL: 當(dāng)列的值不為 NULL, 運(yùn)算符返回 true。
<=>: 比較操作符(不同于 = 運(yùn)算符),當(dāng)比較的的兩個(gè)值相等或者都為 NULL 時(shí)返回 true。
關(guān)于 NULL 的條件比較運(yùn)算是比較特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。
在 MySQL 中,NULL 值與任何其它值的比較(即使是 NULL)永遠(yuǎn)返回 NULL,即 NULL = NULL 返回 NULL 。
MySQL 中處理 NULL 使用 IS NULL 和 IS NOT NULL 運(yùn)算符。

連接的使用

* INNER JOIN(內(nèi)連接,或等值連接):從左表中取出每一條記錄,和右表中所有的記錄進(jìn)行匹配,匹配必須是左表中與右表中某個(gè)條件相同,最終會(huì)保留結(jié)果,否則不保留。
  - 基本語法:  左表 [inner] join 右表  on 左表.字段 = 右表.字段;
  - SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
  - 等價(jià)于: SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author;

* LEFT JOIN(左連接):左表為主,然后每條記錄與右表進(jìn)行連接,不管能不能匹配的上,左表都會(huì)保留。能匹配,右表某條記錄保留,不能匹配,某條記錄置為NULL,最終記錄數(shù)至少不少于左表已有的記錄。
  - 基本語法:  SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;

* RIGHT JOIN(右連接): 與 LEFT JOIN 相反,用于獲取右表所有記錄,即使左表沒有對應(yīng)匹配的記錄。
  - SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是數(shù)據(jù)庫? 數(shù)據(jù)庫是存儲(chǔ)數(shù)據(jù)的集合的單獨(dú)的應(yīng)用程序。每個(gè)數(shù)據(jù)庫具有一個(gè)或多個(gè)不同的API,用于創(chuàng)建,訪問,管理...
    chen_000閱讀 4,148評論 0 19
  • MySQL 簡介 MySQL 是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典 MySQL AB 公司開發(fā),目前屬于 Oracl...
    Xyaleo閱讀 355評論 0 1
  • 1、MySQL啟動(dòng)和關(guān)閉(安裝及配置請參照百度經(jīng)驗(yàn),這里不再記錄。MySQL默認(rèn)端口號:3306;默認(rèn)數(shù)據(jù)類型格式...
    強(qiáng)壯de西蘭花閱讀 763評論 0 1
  • 2019年12月5日 晴 星期四 916天 曾經(jīng)有位智者說過,理想就是有理智的想象,可能實(shí)現(xiàn)的想象,如果把理...
    琴_100a閱讀 223評論 0 1
  • 東邊的最后一抹夕陽,也消失了。夜幕降臨,那個(gè)藍(lán)瞳少女露出一抹詭異的笑容。 “Fallen Angle.”少女緩緩?fù)?..
    若溪一秋閱讀 197評論 0 0

友情鏈接更多精彩內(nèi)容