少年健忘之『記錄Mysql語句命令』

Mysql.jpg

基本語法(命令)

        • 【連接】數據庫
mysql -h localhost -u root -p
 -h   服務器地址
 -u   用戶名
 -p   密碼(回車后輸入)
 -P(大寫) 端口號
 -b   關閉蜂鳴器

mysql -u root -p
【庫】的操作:
【查看庫】show databases;
【創建庫】create database (庫名) default charset=utf8mb4;
【刪除庫】drop database (庫名);
【打開庫】use (庫名);
【表】的操作:
【查看表】show tables;
【創建表】:
 mysql> create table (表名) (
    -> uid int,
    -> name char(4)
    -> ) engine=innodb default charset=utf8mb4;
【查看建表語句】show create table (表名)\G;
【查看語句分析語句是否運用索引】:
desc select * from (表名) where uid=1;
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: t1
         type: const
possible_keys: PRIMARY   // 是否存在索引
          key: PRIMARY  // 是否運用索引
      key_len: 4
          ref: const
         rows: 1    // 受影響行數(主要看這個)
        Extra: 
1 row in set (0.00 sec)
【刪除表】drop table (表名);
【設置表嚴格模式】truncate (表名);
【查看表結構】desc (表名);
【查看表注釋】show create table (表名);
【查看表里字段詳細信息】show full columns from (表名);
【修改表注釋】alter table (表名) comment "(修改后的字段注釋)";
【修改字段的注釋】
 alter table (表名) modify column (要修改的字段名) varchar(200) comment "(修改后的字段注釋)";
【修改字段的注釋和字符集】
 alter table (表名) modify column (字段名) varchar(200) character set utf8;
【把字段 shipping_status  的類型從 ENUM('未收貨') 改為 ENUM('未收貨','未發貨')】
ALTER TABLE yed_orders MODIFY shipping_status ENUM('未收貨','未發貨');

對數據的【增刪改查】:

【增加數據】insert into (表名)(id,name,nickname,sex) value(1,"zhangsan","張三","女");
【增加多條】insert into (表名)(id,name,nickname,sex) value(1,"zhangsan","張三","女"),(2,"lisi","李四","人妖");
【暴力添加數據】insert into (表名)(name,email) select name,email from (同前面的表名) where id = 5;
【刪除數據】delete from (表名) where id=250;
【修改數據】update (表名) set (列名)=(新值) where (列名)=(字段名);

查詢數據 可以多樣化,下面我列出各種奇葩查詢方式

1. 條件部分查詢
【查詢數據】select * from (表名);                            (*代表所有字段,一般數據量大的不要這么查詢會卡死)
【查詢部分字段】select name,sex from (表名);
【列合并】select id,name,count(age,sex)xxoo from (表名);     (xxoo是指給age和sex合并字段后起的別名)
【查詢10年后年齡的人】select id,name,age+10 xxoo from (表名);
【去除重復字段】select distinct * from (表名);
【某個班級的學生】select * from (表名) where class="一年級三班";
【一年級三班的女生】select * from (表名) where class="一年級三班" and sex="女";     (and用法''并且'')
【年齡>20的學生】select * from (表名) where age > 20;
【id號除了10-40的都查詢 方法1:】select * from (表名) where id<10 or id>40;          (or用法''或者'')
【id號除了10-40的都查詢 方法2:】select * from (表名) where id not between 10 and 40;
【A班男生和B班女生】select * from (表名) where (class="A" and sex="男") or (class="B" and sex="女");
【查找多個id】select * from (表名) where id in(2,4,8,23,58);
【找名字為兩個字的人】select * from (表名) where name like "__";                        (一個‘_’代表一個字符)
【查找帶"貓"的詞】select * from (表名) where name like "%貓%";
【查找有三也有貓字】select * from (表名) where name like "%三%" and name like "%貓%";
【時間從遠到近排序】select * from (表名) order by time;
【時間從近到遠排序】select * from (表名) order by time desc;
【先時間再年齡排序】select * from (表名) order by time,age desc;                    (處理相同情況下一般用不到)
3. 分組查詢
group by統計函數  count(*)統計記錄條數  sum(字段名)對該字段求和  
avg()平均數  max()某字段最大值 min()最小值
【總共多少人】select count(*) from (表名);
【總共多少人起別名查詢】select count(*) countName from (表名);
【每個班人數】select class,count(*) from (表名) group by class;
【每個班最大年齡】select  class,max(age) from (表名) group by class;
【在平均年齡之上的人】select * from (表名) where age >(select avg(age) from (表名));
【每個班的男生女生各多少】select class,sex,count(*) from (表名) group by class,sex;
4. 分頁查詢
【顯示前5條數據】select * from (表名) limit 5;
【跳過前兩條,顯示后面3條】select * from (表名) limit 2,3;

顯示第X頁的公式:select * from (表名) limit(x-1)*跳過條數,顯示條數;
通俗一點就是:(當前頁-1)*每頁多少條,每頁多少條;

5. Join聯表查詢

內聯 方式1:select * from (表A),(表B) where (表A).id = (表B).id;
內聯 方式2:select * from (表A) inner join (表B) on (表A).id = (表B).id; (inner join用法)
左聯:select * from (表A) left join (表B) on (表A).id = (表B).id; (left join用法)
右聯:select * from (表A) right join (表B) on (表A).id = (表B).id; (right join用法)

6. 修改數據庫root密碼
  • mysqladmin修改
mysqladmin -u root -p password
  • Sql修改
>use mysql
>set password for root@localhost = password('123');  // 熱修改不需要重啟
>flush privileges;
7. 授權添加用戶
           授權  具體權限         ON 庫.表  TO   '誰'@'在哪兒登錄' IDENTIFIED BY 密碼
【添加用戶】grant select,insert on discuz.stu to 'xxoo'@'%' identified by '密碼'
【刪除用戶】drop user ''@'localhost';

操作數據表結構(命令)

對表字段的【增刪改查】

【添加字段】alter table (表名) add (字段名) (字段屬性);
 // 示例:
 // alter table user add column is_disable tinyint(1) not null default '0' comment '是否啟用0啟動1禁用' after email;
 // comment是字段注釋 after是指定放在字段后面
【刪除字段】alter table (表名) drop (字段名);
【修改字段】alter table (表名) modify (字段名) (新的字段屬性);              (修改方法1)
【修改字段】alter table (表名) change (原字段名) (新字段名) (新字段屬性);    (修改方法2)
【查詢字段】desc (表名);
【修改表名】alter table (原表名A) rename as (新表名B);
【字段后面加字段】alter table (表名) add (新字段名) (新字段屬性) after (參照物字段名);

數據庫的導入導出

導出數據【庫】:mysqldump -u root -p (庫名)>(文件名).sql;
導出數據【庫】只要表結構:mysqldump -u root -p -d (庫名)>(文件名).sql;
導入數據【庫】:mysql -u root -p (庫名)<(文件名).sql;
導出數據【表】:mysqldump -u root -p (庫名) (表名)>(文件名).sql;
導入數據【表】:

方法1:mysql -u root -p (庫名)</data/home/(單個表名).sql
方法2:Mysql>source /data/home/(單個表名).sql

數據庫事務模式

begin     開啟事務(只記錄有效,刪除表、庫、字段無效)
rollback  回滾(撤銷)
commit    確認(提交)

操作數據表添加索引

方式1 (alter)
【添加普通索引】alter table (表名) add index 索引名(字段名);
【添加唯一索引】alter table (表名) add uniqe 索引名(字段名);
【添加主鍵索引】alter table (表名) add primary key 索引名(字段名);
方式2 (create)
【創建普通索引】create index (索引名) on 表名(字段名);
【創建唯一索引】create uniqe index (索引名) on 表名(字段名);
字段約束的詞語:
unsigned 無符號    zerofill 零填充,位數不夠時0填充   not null 不能為空    unique 唯一
default 給默認值   auto_increment 自增             primary key 主鍵,不能為空且唯一   

索引 : 可以提高查詢速率(但是在insertupdate時會產生額外的開銷)

  • mysql索引類型normal,unique,full text的區別是什么?

normal普通索引唯一的任務是加快對數據的訪問速度
unique唯一索引表示唯一的,不允許重復的索引,可以為null
full text全文索引表示全文搜索的索引。 FULLTEXT用于搜索很長一篇文章的時候,效果最好。用在比較短的文本,如果就一兩行字的,普通的INDEX 也可以
spatial空間索引空間索引只能在存儲引擎為MYISAM的表中創建
key普通索引普通非唯一索引
primary唯一索引,不允許為null

  • MySQL索引方法
B-Tree:
B-Tree是最常見的索引類型,所有值(被索引的列)都是排過序的,每個葉節點到跟節點距離相等。
所以`B-Tree`適合用來查找某一范圍內的數據,而且可以直接支持數據排序`(ORDER BY)`

`B-Tree`在`MyISAM`里的形式和`Innodb`稍有不同:
`MyISAM`表數據文件和索引文件是分離的,索引文件僅保存數據記錄的磁盤地址
`InnoDB`表數據文件本身就是主索引,葉節點`data`域保存了完整的數據記錄
Hash索引:
`1.`僅支持"=","IN"和"<=>"精確查詢,不能使用范圍查詢:
由于Hash索引比較的是進行Hash運算之后的Hash值,不能用于范圍的過濾
`2.`不支持排序:由于Hash索引中存放的是經過Hash計算之后的Hash值
`3.`在任何時候都不能避免表掃描:無法從Hash索引中直接完成查詢,
還是要通過訪問表中的實際數據進行相應的比較,并得到相應的結果
`4.`檢索效率高,索引的檢索可以一次定位,不像B-Tree索引需要從根節點到枝節點,
最后才能訪問到頁節點這樣多次的IO訪問,所以Hash索引的查詢效率要遠高于B-Tree索引
`5.`只有Memory引擎支持顯式的Hash索引

Mac 用包管理 brew 安裝 Mysql

【查看所有版本】brew search mysql
【指定安裝版本】brew install mysql@5.7
【啟動命令】brew services start mysql@5.7
 或 /usr/local/opt/mysql@5.7/bin/mysql.server start
【查看進程】ps -ef | grap mysql
【查看包路徑】brew --prefix mysql@5.7
【設置bash命令】alias mysql=/usr/local/opt/mysql@5.7/bin/mysql
 或 sudo ln -s /usr/local/opt/mysql@5.7/bin/mysql /usr/bin
  • 配置外部訪問
1.【打開配置文件】vim /usr/local/etc/my.cnf
 注釋bind-address = 127.0.0.1 改為 # bind-address = 127.0.0.1
2.【修改mysql連接限制】后退看我 Navicat 文章。

如果你也是 少年健忘 || 老年健忘,希望能給你帶來方便使用。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,155評論 3 425
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,635評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,539評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,255評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,646評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,838評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,399評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,146評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,338評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,565評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,983評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,257評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,059評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,296評論 2 376

推薦閱讀更多精彩內容

  • 什么是SQL數據庫: SQL是Structured Query Language(結構化查詢語言)的縮寫。SQL是...
    西貝巴巴閱讀 1,833評論 0 10
  • 1、說明:創建數據庫CREATE DATABASE database-name2、說明:刪除數據庫drop dat...
    codeSirCao閱讀 439評論 0 2
  • 50個常用的sql語句 Student(S#,Sname,Sage,Ssex) 學生表 Course(C#,Cna...
    最美的太陽WW閱讀 3,220評論 0 23
  • 50個常用的sql語句Student(S#,Sname,Sage,Ssex) 學生表Course(C#,Cname...
    哈哈海閱讀 1,247評論 0 7
  • 枝葉雖砍根仍在, 樹樁半截新枝來。 縱使無頭也屹立, 甘為后樹作平臺。
    珠江潮平閱讀 470評論 48 36