mysql教程。掛一檔,起步...

我失去的,我一定要親手拿來回來 ---小馬哥

愛情不過是一種瘋 --《羅密歐與朱麗葉》

目錄

  • 1 -安裝數(shù)據(jù)庫(kù) Mac,windows,linx 各平臺(tái)下
  • 2-基本操作,數(shù)據(jù)庫(kù),數(shù)據(jù)表 ;查看,創(chuàng)建,刪除,選擇 常用
  • 3-數(shù)據(jù)可視化工具安裝【navicat for mysql】 必須
  • 4-mysql數(shù)據(jù)類型 重點(diǎn)
  • 5-基本的增刪改查 必須
  • 6-WHERE【添加查詢】;UPDATE【更新數(shù)據(jù)】;DELETE 【刪除數(shù)據(jù)】; LIKE【多個(gè)讀取】; UNION【多連接】;UNION【排序】 進(jìn)階
  • 7-JOIN 連接 【內(nèi),外,左,右;連接】高效開發(fā)
  • 8-去重
  • 9- 正則表達(dá)式
  • 10 -索引 劃重點(diǎn)
  • 11 - 臨時(shí)表
  • 12 -導(dǎo)出數(shù)據(jù)
  • 13 -導(dǎo)入數(shù)據(jù)

前言:

數(shù)據(jù)庫(kù)(Database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫(kù),

每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)或多個(gè)不同的API用于創(chuàng)建,訪問,管理,搜索和復(fù)制所保存的數(shù)據(jù)。
我們也可以將數(shù)據(jù)存儲(chǔ)在文件中,但是在文件中讀寫數(shù)據(jù)速度相對(duì)較慢。
所以,現(xiàn)在我們使用關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)來存儲(chǔ)和管理的大數(shù)據(jù)量。所謂的關(guān)系型數(shù)據(jù)庫(kù),是建立在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

RDBMS即關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(Relational Database Management System)的特點(diǎn):
  • 1.數(shù)據(jù)以表格的形式出現(xiàn)
  • 2.每行為各種記錄名稱
  • 3.每列為記錄名稱所對(duì)應(yīng)的數(shù)據(jù)域
  • 4.許多的行和列組成一張表單
  • 5.若干的表單組成database

RDBMS 術(shù)語(yǔ)

在我們開始學(xué)習(xí)MySQL 數(shù)據(jù)庫(kù)前,讓我們先了解下RDBMS的一些術(shù)語(yǔ):

  • 數(shù)據(jù)庫(kù): 數(shù)據(jù)庫(kù)是一些關(guān)聯(lián)表的集合。.
  • 數(shù)據(jù)表: 表是數(shù)據(jù)的矩陣。在一個(gè)數(shù)據(jù)庫(kù)中的表看起來像一個(gè)簡(jiǎn)單的電子表格。
  • 列: 一列(數(shù)據(jù)元素) 包含了相同的數(shù)據(jù), 例如郵政編碼的數(shù)據(jù)。
  • 行:一行(=元組,或記錄)是一組相關(guān)的數(shù)據(jù),例如一條用戶訂閱的數(shù)據(jù)。
  • 冗余:存儲(chǔ)兩倍數(shù)據(jù),冗余降低了性能,但提高了數(shù)據(jù)的安全性。
  • 主鍵:主鍵是唯一的。一個(gè)數(shù)據(jù)表中只能包含一個(gè)主鍵。你可以使用主鍵來查詢數(shù)據(jù)。
  • 外鍵:外鍵用于關(guān)聯(lián)兩個(gè)表。
  • 復(fù)合鍵:復(fù)合鍵(組合鍵)將多個(gè)列作為一個(gè)索引鍵,一般用于復(fù)合索引。
  • 索引:使用索引可快速訪問數(shù)據(jù)庫(kù)表中的特定信息。索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu)。類似于書籍的目錄。
  • 參照完整性: 參照的完整性要求關(guān)系中不允許引用不存在的實(shí)體。與實(shí)體完整性是關(guān)系模型必須滿足的完整性約束條件,目的是保證數(shù)據(jù)的一致性。

Mysql數(shù)據(jù)庫(kù)

MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB公司開發(fā),目前屬于Oracle公司。MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi),這樣就增加了速度并提高了靈活性。

  • Mysql是開源的,所以你不需要支付額外的費(fèi)用。
  • Mysql支持大型的數(shù)據(jù)庫(kù)。可以處理?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù)。
  • MySQL使用標(biāo)準(zhǔn)的SQL數(shù)據(jù)語(yǔ)言形式。
  • Mysql可以允許于多個(gè)系統(tǒng)上,并且支持多種語(yǔ)言。這些編程語(yǔ)言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
  • Mysql對(duì)PHP有很好的支持,PHP是目前最流行的Web開發(fā)語(yǔ)言。
  • MySQL支持大型數(shù)據(jù)庫(kù),支持5000萬(wàn)條記錄的數(shù)據(jù)倉(cāng)庫(kù),32位系統(tǒng)表文件最大可支持4GB,64位系統(tǒng)支持最大的表文件為8TB。
  • Mysql是可以定制的,采用了GPL協(xié)議,你可以修改源碼來開發(fā)自己的Mysql系統(tǒng)。

一. mysql的安裝

  • Mac 下安裝 下載地址
    1 .下載完成后。點(diǎn)擊安裝,確認(rèn)。直到安裝完成
    2 . 啟動(dòng)mysql,進(jìn)入系統(tǒng)偏好設(shè)置 ,點(diǎn)擊啟動(dòng)mysql
    Mac下的偏好設(shè)置

    3.命令行運(yùn)行下面兩條:為了方便打開命令行就直接運(yùn)行,而不是要到安裝目錄運(yùn)行。功能類似全局變量。
  alias mysql=/usr/local/mysql/bin/mysql
  alias mysqladmin=/usr/local/mysql/bin/mysqladmin
  1. 查看密碼,注意,安裝成功后,這里會(huì)彈出一個(gè)通知,給你一個(gè)零時(shí)的密碼。


    Mac通知欄

5.重置密碼; 先登錄,輸入通知欄的密碼

localhost:~ hez$ mysql -uroot -p 
Enter password:

登陸成功顯示


登陸成功

修改密碼,退出數(shù)據(jù),再次登陸輸入密碼123 登陸成功表示成功

mysql> set password for root@localhost = password('123');
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> exit
  • Windows下安裝 推薦文檔
    我是mac系統(tǒng),所以我從網(wǎng)上找了篇比較好的文章送給你們。

  • linx下安裝 全安裝,全配置,文章
    筆記本里還有一篇CentOS 部署koa2,mysql,nginx的文章。我整理后發(fā)布,請(qǐng)稍后。

安裝么,就是有點(diǎn)坑??! ! 之前我安裝阿里的weex,3天時(shí)間才吧安卓的hello,world打印出來


二. 數(shù)據(jù)庫(kù)基本操作

  • 登陸 mysql -uroot -p
localhost:~ hez$ mysql -uroot -p 
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.7.19 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
  • 查看數(shù)據(jù)庫(kù) show databases;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| 11221              |
| hez1               |
| mysql              |
| nodesql            |
| performance_schema |
| samp_db            |
+--------------------+
7 rows in set (0.01 sec)

mysql> 
  • 新建數(shù)據(jù)庫(kù) CREATE DATABASE apps; (apps,數(shù)據(jù)庫(kù)的名稱)
mysql> CREATE DATABASE apps;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| 11221              |
| apps               |
| hez1               |
| mysql              |
| nodesql            |
| performance_schema |
| samp_db            |
+--------------------+
8 rows in set (0.00 sec)

mysql> 
  • 刪除數(shù)據(jù)庫(kù) DROP DATABASE apps; (apps數(shù)據(jù)庫(kù)名稱)
mysql>  DROP DATABASE apps;
Query OK, 0 rows affected (0.04 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| 11221              |
| hez1               |
| mysql              |
| nodesql            |
| performance_schema |
| samp_db            |
+--------------------+
7 rows in set (0.00 sec)

mysql> 
  • 選擇數(shù)據(jù)庫(kù) ,新建數(shù)據(jù)表 use (數(shù)據(jù)庫(kù)); create table 數(shù)據(jù)表名(數(shù)據(jù)字段)
mysql> use apps
Database changed
mysql> create table music(singer char(100) not null,song char(100),play char(100) not null);
Query OK, 0 rows affected (0.04 sec)

mysql> 

數(shù)據(jù)庫(kù)的解碼一定要是utf8,才能支持中文。不難,但是步驟多。我就不寫了,推薦:mysql設(shè)置為utf8格式

  • 查看表結(jié)構(gòu) DESCRIBE (表名);
mysql> DESCRIBE music;
+--------+-----------+------+-----+---------+-------+
| Field  | Type      | Null | Key | Default | Extra |
+--------+-----------+------+-----+---------+-------+
| singer | char(100) | NO   |     | NULL    |       |
| song   | char(100) | YES  |     | NULL    |       |
| play   | char(100) | NO   |     | NULL    |       |
+--------+-----------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> 
  • 查看表數(shù)據(jù) select * from (表名); (下面講數(shù)據(jù)可視化工具,這幾條數(shù)據(jù)也是我用可視化工具添加的)
mysql> select * from music;
+-----------+--------------------------+------+
| singer    | song                     | play |
+-----------+--------------------------+------+
| 張學(xué)友    | 吻別                     | 100  |
| 張學(xué)友    | 她來聽我的演唱會(huì)         | 100  |
+-----------+--------------------------+------+
2 rows in set (0.01 sec)

mysql> 

三. 安裝navicat for mysql

  • 下在,靜默安裝。直到成功,軟件是有15天的試用時(shí)間的。怎么做,你很清楚。官網(wǎng)地址

  • 連接數(shù)據(jù)庫(kù) 其實(shí)跟多時(shí)候是線上開發(fā)的 。在linx部署koa2服務(wù)的文章里外有詳細(xì)的講解 centOS部署koa服務(wù)

連接數(shù)據(jù)庫(kù)
  • 連接成功


    連接成功后截圖

安裝的時(shí)候會(huì)有點(diǎn)麻煩,激活。破解什么的。命令行可以連接成功,在這里一定會(huì)成功的。注意看端口號(hào),3306。密碼。

  • 在實(shí)際的的開發(fā)中,新建表的方法寫在mysql.js中。
  • 試用數(shù)據(jù)可視化,開發(fā)時(shí),更便攜我們的工作
  • 新手就更適合了。

四.mysql數(shù)據(jù)類型

太啰嗦,又太長(zhǎng),么什么好弄的,下面的鏈接都不錯(cuò),自己看去?。。?/h5>

比較完整,好閱讀的數(shù)據(jù)類型文字(整理也不容易),請(qǐng)打開
菜鳥教程的數(shù)據(jù)類型

js是什么,一切皆為對(duì)象。數(shù)組,字符串,nums,date。mysql常用數(shù)據(jù)類型。 常用,好用,話不多的mysql數(shù)據(jù)類型


五.基本的增刪改查

心累,寫文檔真實(shí)好累。MMP

增刪改查,后端的核心技能
  • 創(chuàng)建表,create table
create table 表名(
    表字段名1,
    表字段名2,
    表字段名3
)表數(shù)據(jù)類型,語(yǔ)言;

# 栗子
create table music(
    singer char(100) not null,
    song char(100),
    play char(100) not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

# 命令行代碼
mysql> create table music(                                                          ->     singer char(100) not null,
    ->     song char(100),
    ->     play char(100) not null
    -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.08 sec)
mysql>
  • 查詢數(shù)據(jù)庫(kù)表 show tables;
mysql> show tables;
+----------------+
| Tables_in_apps |
+----------------+
| music          |
| music1         |
+----------------+
2 rows in set (0.01 sec)

mysql> 
  • 刪除一張表 DROP TABLE
DROP TABLE 表名;

栗子
mysql> DROP TABLE music1;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+----------------+
| Tables_in_apps |
+----------------+
| music          |
+----------------+
1 row in set (0.00 sec)

mysql> 
  • 添加數(shù)據(jù) INSERT INTO
INSERT INTO 表名
      (表字段名)
       VALUES
      (添加的數(shù)據(jù)值);

#栗子
mysql> INSERT INTO music(singer,song,play) VALUES('張學(xué)友','吻別','200');
Query OK, 1 row affected (0.01 sec)

# 添加一條數(shù)據(jù)
INSERT INTO music(singer,song,play) VALUES('周杰倫','稻香','343');
Query OK, 1 row affected (0.01 sec)
mysql> 
  • 查詢數(shù)據(jù) SELECT
# 查詢表里全部數(shù)據(jù)
mysql> SELECT * from music;
+-----------+--------------------------+------+
| singer    | song                     | play |
+-----------+--------------------------+------+
| 張學(xué)友    | 她來聽我的演唱會(huì)         | 100  |
| 張學(xué)友    | 吻別                     | 200  |
| 周杰倫    | 稻香                     | 343  |
+-----------+--------------------------+------+
3 rows in set (0.00 sec)

mysql> 


#查詢某一表字段名的數(shù)據(jù)
mysql> SELECT song from music;
+--------------------------+
| song                     |
+--------------------------+
| 她來聽我的演唱會(huì)         |
| 吻別                     |
| 稻香                     |
+--------------------------+
3 rows in set (0.00 sec)

mysql> 

#多條件查詢 (使用,分隔開條件)
mysql> SELECT song,singer from music;
+--------------------------+-----------+
| song                     | singer    |
+--------------------------+-----------+
| 她來聽我的演唱會(huì)         | 張學(xué)友    |
| 吻別                     | 張學(xué)友    |
| 稻香                     | 周杰倫    |
+--------------------------+-----------+
3 rows in set (0.00 sec)

mysql> 

本章講了 數(shù)據(jù)表的增刪改查

  • 創(chuàng)建表,create table
  • 刪除一張表 DROP TABLE
  • 添加數(shù)據(jù) INSERT INTO
  • 查詢數(shù)據(jù) SELECT

人狠,錢多,廢話少的Api


六.數(shù)據(jù)的各種騷

他曾為了你的逃離,頹廢痛苦,也為了破鏡重圓,抱著你哭...《情書》

新建一張用戶表
mysql> use apps
Database changed
mysql> create table muser(
    ->     name char(100) not null,
    ->     age char(100) not null,
    ->     love char(100) not null
    -> )ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.03 sec)

mysql> show tables;
+----------------+
| Tables_in_apps |
+----------------+
| muser          |
| music          |
+----------------+
2 rows in set (0.00 sec)

mysql> 

INSERT INTO muser(name,age,love) VALUES('慧子','23','周杰倫');

#添加2條數(shù)據(jù)
mysql> INSERT INTO muser(name,age,love) VALUES('hez','23','張學(xué)友');
Query OK, 1 row affected (0.02 sec)
mysql>

mysql> INSERT INTO muser(name,age,love) VALUES('慧子','23','李代沫');
Query OK, 1 row affected (0.01 sec)
mysql> 

#查詢表里的數(shù)據(jù)
mysql> SELECT * from muser;
+--------+-----+-----------+
| name   | age | love      |
+--------+-----+-----------+
| hez    | 23  | 張學(xué)友    |
| 慧子   | 22  | 李代沫    |
+--------+-----+-----------+
2 rows in set (0.00 sec)

mysql> 

  • 從表中讀取數(shù)據(jù) WHERE

小技巧:
or和and,or表示兩者取其一,and表示兩者皆是;

SQL SELECT 語(yǔ)句使用 WHERE 子句從數(shù)據(jù)表中讀取數(shù)據(jù)的通用語(yǔ)法:

# 查詢年齡23的用戶
mysql> select * from muser where age='23';
+--------+-----+-----------+
| name   | age | love      |
+--------+-----+-----------+
| hez    | 23  | 張學(xué)友    |
| 小紅   | 23  | 張學(xué)友    |
+--------+-----+-----------+
2 rows in set (0.00 sec)

# 查詢喜歡張學(xué)友的用戶
mysql> select * from muser where love='張學(xué)友';
+--------+-----+-----------+
| name   | age | love      |
+--------+-----+-----------+
| hez    | 23  | 張學(xué)友    |
| 小明   | 22  | 張學(xué)友    |
| 小紅   | 23  | 張學(xué)友    |
+--------+-----+-----------+
3 rows in set (0.00 sec)

mysql> 

多表,多條件讀取數(shù)據(jù)

select 表字段名1,表字段名2,表字段名3,表字段名4 from 表名1,表名1 where 條件1 and 條件2;

(select) 讀取 用戶姓名,年齡,喜歡,音樂表歌曲
(from)從用戶表,音樂表
(where)并且年齡大于18,喜歡張學(xué)友的數(shù)據(jù);

#栗子
mysql> select name,age,love,song from muser,music where age>18 and love='張學(xué)友';
+--------+-----+-----------+--------------------------+
| name   | age | love      | song                     |
+--------+-----+-----------+--------------------------+
| hez    | 23  | 張學(xué)友    | 她來聽我的演唱會(huì)         |
| 小明   | 22  | 張學(xué)友    | 她來聽我的演唱會(huì)         |
| 小紅   | 23  | 張學(xué)友    | 她來聽我的演唱會(huì)         |
| hez    | 23  | 張學(xué)友    | 吻別                     |
| 小明   | 22  | 張學(xué)友    | 吻別                     |
| 小紅   | 23  | 張學(xué)友    | 吻別                     |
| hez    | 23  | 張學(xué)友    | 稻香                     |
| 小明   | 22  | 張學(xué)友    | 稻香                     |
| 小紅   | 23  | 張學(xué)友    | 稻香                     |
+--------+-----+-----------+--------------------------+
9 rows in set (0.00 sec)


  • 修改數(shù)據(jù) UPDATE
    以下是通用語(yǔ)法:
    update 數(shù)據(jù)表 set 字段名1= (修改的內(nèi)容),字段名1= (修改的內(nèi)容)where 修改的條件
把慧子喜歡的歌手,修改為李代沫

# 栗子
mysql> update muser set love ='李代沫' where name = '慧子';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> 

把小明的年齡改為19,喜歡的歌手改為gai;

#栗子
mysql> update muser set age='19',love='gia' where name = '小明';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from muser;
+--------+-----+-----------+
| name   | age | love      |
+--------+-----+-----------+
| hez    | 23  | 張學(xué)友    |
| 慧子   | 22  | 李代沫    |
| 小明   | 19  | gia       |
| 小紅   | 23  | 張學(xué)友    |
| 小強(qiáng)   | 22  | 周杰倫    |
+--------+-----+-----------+
5 rows in set (0.00 sec)

mysql> 
  • DELETE 刪除一條數(shù)據(jù)
    以下是通用語(yǔ)法:
    delete from 數(shù)據(jù)表名 where 條件;

刪除小明這條數(shù)據(jù)

#栗子
mysql> delete from  muser  where name ='小紅';
Query OK, 1 row affected (0.01 sec)

mysql> select * from muser;
+--------+-----+-----------+
| name   | age | love      |
+--------+-----+-----------+
| hez    | 23  | 張學(xué)友    |
| 慧子   | 22  | 李代沫    |
| 小明   | 19  | gia       |
| 小強(qiáng)   | 22  | 周杰倫    |
+--------+-----+-----------+
4 rows in set (0.00 sec)

mysql> 
  • UNION接兩個(gè)以上的 SELECT 語(yǔ)句的結(jié)果組合到一個(gè)結(jié)果集合中

通用語(yǔ)法:
select 表字段1 from 數(shù)據(jù)表1
union
select 表字段1 from 數(shù)據(jù)表2
order by 表字段1;

描述:
用以連接多個(gè)select語(yǔ)句,
表字段必須是相同的
union 數(shù)據(jù)不重復(fù)
union ALL 數(shù)據(jù)重復(fù)

select singer from muser
union 
select singer from music
order by singer; 

#栗子

重復(fù)的數(shù)據(jù)
mysql> select singer from muser
    -> union all
    -> select singer from music
    -> order by singer;
+-----------+
| singer    |
+-----------+
| gai       |
| 周杰倫    |
| 周杰倫    |
| 張學(xué)友    |
| 張學(xué)友    |
| 張學(xué)友    |
| 李代沫    |
+-----------+
7 rows in set (0.01 sec)


不重復(fù)數(shù)據(jù)
mysql> select singer from muser
    -> union 
    -> select singer from music
    -> order by singer;  
+-----------+
| singer    |
+-----------+
| gai       |
| 周杰倫    |
| 張學(xué)友    |
| 李代沫    |
+-----------+
4 rows in set (0.00 sec)

mysql> 
 
  • ORDER BY排序

通用語(yǔ)法:

select * from muser order by age asc;

描述:
muser: 數(shù)據(jù)表
order by: 排序
age: 排序條件
asc:升序
desc: 降序

#栗子
年齡(數(shù)值)升序
mysql> select * from muser order by age asc;
+--------+-----+-----------+-----------+
| name   | age | love      | singer    |
+--------+-----+-----------+-----------+
| 小明   | 19  | gia       | gai       |
| 慧子   | 22  | 李代沫    | 李代沫    |
| 小強(qiáng)   | 22  | 周杰倫    | 周杰倫    |
| hez    | 23  | 張學(xué)友    | 張學(xué)友    |
+--------+-----+-----------+-----------+
4 rows in set (0.00 sec)

mysql>

年齡(數(shù)值)降序
mysql> select * from muser order by age desc;
+--------+-----+-----------+-----------+
| name   | age | love      | singer    |
+--------+-----+-----------+-----------+
| hez    | 23  | 張學(xué)友    | 張學(xué)友    |
| 慧子   | 22  | 李代沫    | 李代沫    |
| 小強(qiáng)   | 22  | 周杰倫    | 周杰倫    |
| 小明   | 19  | gia       | gai       |
+--------+-----+-----------+-----------+
4 rows in set (0.00 sec)

mysql>  
  • GROUP BY分組數(shù)據(jù)

語(yǔ)句根據(jù)一個(gè)或多個(gè)列對(duì)結(jié)果集進(jìn)行分組。
在分組的列上我們可以使用 COUNT, SUM, AVG,等函數(shù)。

通用語(yǔ)法:
select singer, count(*) from music group by singer;

描述*
count(*): 新的分組(臨時(shí))
music: 數(shù)據(jù)表
group by: 分組語(yǔ)法
singer: 計(jì)算分組的數(shù)據(jù)表字段(歌手)

查看音樂表,獲得每個(gè)歌手都歌曲數(shù)量

#栗子
mysql> select singer, count(*) from music group by singer;
+-----------+----------+
| singer    | count(*) |
+-----------+----------+
| 周杰倫    |        1 |
| 張學(xué)友    |        4 |
+-----------+----------+
2 rows in set (0.00 sec)

mysql> 

查看用戶表,獲取每個(gè)歌手背喜歡的次數(shù)
mysql> select love, count(*) from muser group by love;
+-----------+----------+
| love      | count(*) |
+-----------+----------+
| 周杰倫    |        2 |
| 張學(xué)友    |        3 |
| 李代沫    |        1 |
+-----------+----------+
3 rows in set (0.00 sec)

mysql> 

這部分內(nèi)容有點(diǎn)多,懵逼了。等我理一下
1.讀取數(shù)據(jù);當(dāng)張表,多個(gè)條件中,多張表,多個(gè)條件的讀取。
2.修改數(shù)據(jù); 修改一個(gè)字段名,多個(gè)字段名 & 修改條件。
3.刪除數(shù)據(jù); 刪除數(shù)據(jù)&刪除條件
4.集合數(shù)據(jù); 集合兩張或多張表的數(shù)據(jù)到一個(gè)集合中,數(shù)據(jù)可選擇重5.復(fù)或不重復(fù)
6.數(shù)據(jù)排序;升序降序
7.數(shù)據(jù)分組;根據(jù)一個(gè)表字段,或多個(gè)表字段的結(jié)構(gòu)進(jìn)行分組

這些知識(shí)只是騷操作,看,我脫衣服了....


7. JOIN連接 【內(nèi),左,右】

多表數(shù)據(jù)聯(lián)動(dòng)。上下滑動(dòng)累,來這看看省力的....

  1. INNER JOIN(內(nèi)連接,或等值連接):獲取兩個(gè)表中字段匹配關(guān)系的記錄
  2. LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對(duì)應(yīng)匹配的記錄
  3. RIGHT JOIN(右連接): 與 LEFT JOIN 相反,用于獲取右表所有記錄,即使左表沒有對(duì)應(yīng)匹配的記錄
  • INNER JOIN 內(nèi)連接

通用語(yǔ)法:
select a.name, a.love,b.singer from muser a inner join music b on a.love = b.singer;

描述:

a .name, b .name ;返回?cái)?shù)據(jù)字段名
muser a,music b;a,b數(shù)據(jù)表名稱的替代符號(hào)
nner join;內(nèi)連接
on; 篩選條件

功能:
獲取兩個(gè)表中字段匹配關(guān)系的記錄。

內(nèi)連接


獲取用戶名,喜歡,歌曲加入判斷條件用戶喜歡的歌手,和曲庫(kù)里有的歌手

#栗子
mysql> select a.name, a.love,b.singer from muser a inner join music b on a.love = b.singer;
+--------+-----------+-----------+
| name   | love      | singer    |
+--------+-----------+-----------+
| hez    | 張學(xué)友    | 張學(xué)友    |
| hez    | 張學(xué)友    | 張學(xué)友    |
| hez    | 張學(xué)友    | 張學(xué)友    |
| hez    | 張學(xué)友    | 張學(xué)友    |
| 小明   | 張學(xué)友    | 張學(xué)友    |
| 小明   | 張學(xué)友    | 張學(xué)友    |
| 小明   | 張學(xué)友    | 張學(xué)友    |
| 小明   | 張學(xué)友    | 張學(xué)友    |
| 小強(qiáng)   | 周杰倫    | 周杰倫    |
| 小灰   | 張學(xué)友    | 張學(xué)友    |
| 小灰   | 張學(xué)友    | 張學(xué)友    |
| 小灰   | 張學(xué)友    | 張學(xué)友    |
| 小灰   | 張學(xué)友    | 張學(xué)友    |
| 阿狗   | 周杰倫    | 周杰倫    |
+--------+-----------+-----------+
14 rows in set (0.00 sec)

mysql> 
  • LEFT JOIN 左連接

通用語(yǔ)法:
select a.name, a.love,b.singer from muser a left join music b on a.love =b.singer;

描述:
a .name,a.love, b .singer ;返回?cái)?shù)據(jù)字段名
muser a,music b;a,b數(shù)據(jù)表名稱的替代符號(hào)
left join;左連接
on; 篩選條件

功能
該語(yǔ)句會(huì)讀取左邊的數(shù)據(jù)表 muser 的所有選取的字段數(shù)據(jù),即便在右側(cè)表 music中 沒有對(duì)應(yīng)的 singer 字段值 沒有為null。

返回 左表全部,右表于左表重合的數(shù)據(jù)

以用戶表為左表,歌曲表為右表。查詢用戶喜歡的歌手,歌曲庫(kù)里也有的數(shù)據(jù)
#栗子
mysql> select a.name, a.love,b.singer from muser a left join music b on a.love =b.singer;
+--------+-----------+-----------+
| name   | love      | singer    |
+--------+-----------+-----------+
| hez    | 張學(xué)友    | 張學(xué)友    |
| 小明   | 張學(xué)友    | 張學(xué)友    |
| 小灰   | 張學(xué)友    | 張學(xué)友    |
| hez    | 張學(xué)友    | 張學(xué)友    |
| 小明   | 張學(xué)友    | 張學(xué)友    |
| 小灰   | 張學(xué)友    | 張學(xué)友    |
| 小強(qiáng)   | 周杰倫    | 周杰倫    |
| 阿狗   | 周杰倫    | 周杰倫    |
| hez    | 張學(xué)友    | 張學(xué)友    |
| 小明   | 張學(xué)友    | 張學(xué)友    |
| 小灰   | 張學(xué)友    | 張學(xué)友    |
| hez    | 張學(xué)友    | 張學(xué)友    |
| 小明   | 張學(xué)友    | 張學(xué)友    |
| 小灰   | 張學(xué)友    | 張學(xué)友    |
| 慧子   | 李代沫    | NULL      |
+--------+-----------+-----------+
15 rows in set (0.01 sec)

mysql> 
  • RIGHT JOIN 右連接

通用語(yǔ)法
select a.love,b.singer,b.song from muser a right join music b on a.love =b.singer;

描述
a .a.love, b .singer,b .song ;返回?cái)?shù)據(jù)字段名 muser a,music b; a,b數(shù)據(jù)表名稱的替代符號(hào)
right join;左連接
on; 篩選條件

功能:
該語(yǔ)句會(huì)讀取右邊的數(shù)據(jù)表 music 的所有選取的字段數(shù)據(jù),即便在左側(cè)表 muser 中沒有對(duì)應(yīng)的 love 字段值。

返回 左表于右表重合的數(shù)據(jù),右表全部數(shù)據(jù)
mysql> select a.love,b.singer,b.song from muser a right join music b on a.love =b.singer;
+-----------+-----------+--------------------------+
| love      | singer    | song                     |
+-----------+-----------+--------------------------+
| 張學(xué)友    | 張學(xué)友    | 她來聽我的演唱會(huì)         |
| 張學(xué)友    | 張學(xué)友    | 吻別                     |
| 張學(xué)友    | 張學(xué)友    | 情書                     |
| 張學(xué)友    | 張學(xué)友    | 李香蘭                   |
| 張學(xué)友    | 張學(xué)友    | 她來聽我的演唱會(huì)         |
| 張學(xué)友    | 張學(xué)友    | 吻別                     |
| 張學(xué)友    | 張學(xué)友    | 情書                     |
| 張學(xué)友    | 張學(xué)友    | 李香蘭                   |
| 周杰倫    | 周杰倫    | 稻香                     |
| 張學(xué)友    | 張學(xué)友    | 她來聽我的演唱會(huì)         |
| 張學(xué)友    | 張學(xué)友    | 吻別                     |
| 張學(xué)友    | 張學(xué)友    | 情書                     |
| 張學(xué)友    | 張學(xué)友    | 李香蘭                   |
| 周杰倫    | 周杰倫    | 稻香                     |
| NULL      | gia       | 火鍋底料                 |
+-----------+-----------+--------------------------+
15 rows in set (0.00 sec)

mysql> 

看到這里,你應(yīng)該發(fā)現(xiàn)兩個(gè)問題
1 join是干什么用的
2 這些數(shù)據(jù)多是重復(fù)的,實(shí)際開發(fā)的時(shí)候怎么用呢
別急,join在實(shí)際開發(fā)中很長(zhǎng)見,也是必須的。數(shù)據(jù)重復(fù),去重下下章我們講。


轉(zhuǎn)身離開,有愛說不出來...《珊瑚海》

8.去重

累了,寫不動(dòng)...

9.正則表達(dá)式

講真,我沒有怎么研究過...你感興趣就去看看吧 菜鳥教程,正則表達(dá)式


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 什么是SQL數(shù)據(jù)庫(kù): SQL是Structured Query Language(結(jié)構(gòu)化查詢語(yǔ)言)的縮寫。SQL是...
    西貝巴巴閱讀 1,990評(píng)論 0 10
  • 什么是數(shù)據(jù)庫(kù)? 數(shù)據(jù)庫(kù)是存儲(chǔ)數(shù)據(jù)的集合的單獨(dú)的應(yīng)用程序。每個(gè)數(shù)據(jù)庫(kù)具有一個(gè)或多個(gè)不同的API,用于創(chuàng)建,訪問,管理...
    chen_000閱讀 4,124評(píng)論 0 19
  • 1、如果你總是因?yàn)橹豢吹竭@個(gè)世界上消極的事而不敢邁出第一步,那你永遠(yuǎn)也不會(huì)擁有這種關(guān)系。 2、自由不是懶惰,不是散...
    NicholasZhen閱讀 165評(píng)論 0 0
  • 在互聯(lián)網(wǎng)時(shí)代,要想營(yíng)銷有成效有成果,就要善于利用大數(shù)據(jù),網(wǎng)絡(luò)營(yíng)銷大數(shù)據(jù)實(shí)操幾步走。 1、獲取全網(wǎng)用戶數(shù)據(jù) 僅有企業(yè)...
    言射手閱讀 268評(píng)論 0 4
  • 寒冬的時(shí)候盼望著春天的降臨,春花燦爛時(shí)又期待著盛夏的到來,然后就真的到了盛夏??諝饫镎盏膼灍?,樹上知了從早到晚的...
    素禧閱讀 872評(píng)論 0 0

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