中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫應用-mysql語句拾遺

發布時間:2020-05-24 21:01:07 來源:網絡 閱讀:1468 作者:zyx1990zm 欄目:數據庫

MySQL

關系型數據庫管理系統)

MySQL是一個關系型數據庫管理系統由瑞典MySQL AB 公司開發,目前屬于 Oracle 旗下產品。MySQL 最流行的關系型數據庫管理系統,在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關系數據庫管理系統) 應用軟件之一。

MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。

MySQL所使用的 SQL 語言是用于訪問數據庫的最常用標準化語言。MySQL 軟件采用了雙授權政策,它分為社區版和商業版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站數據庫。

由于其社區版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發環境。

什么是數據庫?

數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,

每個數據庫都有一個或多個不同的API用于創建,訪問,管理,搜索和復制所保存的數據。

我們也可以將數據存儲在文件中,但是在文件中讀寫數據速度相對較慢。

所以,現在我們使用關系型數據庫管理系統(RDBMS)來存儲和管理的大數據量。所謂的關系型數據庫,是建立在關系模型基礎上的數據庫,借助于集合代數等數學概念和方法來處理數據庫中的數據。

RDBMS即關系數據庫管理系統(Relational Database Management System)的特點:

  • 1.數據以表格的形式出現

  • 2.每行為各種記錄名稱

  • 3.每列為記錄名稱所對應的數據域

  • 4.許多的行和列組成一張表單

  • 5.若干的表單組成database

RDBMS 術語

在我們開始學習MySQL 數據庫前,讓我們先了解下RDBMS的一些術語:

  • 數據庫: 數據庫是一些關聯表的集合。.

  • 數據表: 表是數據的矩陣。在一個數據庫中的表看起來像一個簡單的電子表格。

  • 列: 一列(數據元素) 包含了相同的數據, 例如郵政編碼的數據。

  • 行:一行(=元組,或記錄)是一組相關的數據,例如一條用戶訂閱的數據。

  • 冗余:存儲兩倍數據,冗余可以使系統速度更快。

  • 主鍵:主鍵是唯一的。一個數據表中只能包含一個主鍵。你可以使用主鍵來查詢數據。

  • 外鍵:外鍵用于關聯兩個表。

  • 復合鍵:復合鍵(組合鍵)將多個列作為一個索引鍵,一般用于復合索引。

  • 索引:使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構。類似于書籍的目錄。

  • 參照完整性: 參照的完整性要求關系中不允許引用不存在的實體。與實體完整性是關系模型必須滿足的完整性約束條件,目的是保證數據的一致性。

Mysql數據庫

MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB公司開發,目前屬于Oracle公司。MySQL是一種關聯數據庫管理系統,關聯數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。

  • Mysql是開源的,所以你不需要支付額外的費用。

  • Mysql支持大型的數據庫。可以處理擁有上千萬條記錄的大型數據庫。

  • MySQL使用標準的SQL數據語言形式。

  • Mysql可以允許于多個系統上,并且支持多種語言。這些編程語言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

  • Mysql對PHP有很好的支持,PHP是目前最流行的Web開發語言。

  • MySQL支持大型數據庫,支持5000萬條記錄的數據倉庫,32位系統表文件最大可支持4GB,64位系統支持最大的表文件為8TB。

  • Mysql是可以定制的,采用了GPL協議,你可以修改源碼來開發自己的Mysql系統。


MariaDB

MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,采用GPL授權許可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。在存儲引擎方面,使用XtraDB(英語:XtraDB)來代替MySQL的InnoDB。    MariaDB由MySQL的創始人Michael Widenius(英語:Michael Widenius)主導開發,他早前曾以10億美元的價格,將自己創建的公司MySQL AB賣給了SUN,此后,隨著SUN被甲骨文收購,MySQL的所有權也落入Oracle的手中。MariaDB名稱來自Michael Widenius的女兒Maria的名字。

MariaDB基于事務的Maria存儲引擎,替換了MySQL的MyISAM存儲引擎,它使用了Percona的 XtraDB,InnoDB的變體,分支的開發者希望提供訪問即將到來的MySQL 5.4 InnoDB性能。這個版本還包括了 PrimeBase XT (PBXT) 和 FederatedX存儲引擎。


發展

      成立于2009年,MySQL之父Michael “Monty” Widenius用他的新項目MariaDB完成了對MySQL的“反戈一擊”。開發這個分支的原因之一是:甲骨文公司收購了MySQL后,有將MySQL閉源的潛在風險,因此社區采用分支的方式來避開這個風險。 過去一年中,大型互聯網用戶以及Linux發行商紛紛拋棄MySQL,轉投MariaDB陣營。MariaDB是目前最受關注的MySQL數據庫衍生版,也被視為開源數據庫MySQL的替代品。

MariaDB雖然被視為MySQL數據庫的替代品,但它在擴展功能、存儲引擎以及一些新的功能改進方面都強過MySQL。而且從MySQL遷移到MariaDB也是非常簡單的:

1、數據和表定義文件(.frm)是二進制兼容的

2、所有客戶端API、協議和結構都是完全一致的

3、所有文件名、二進制、路徑、端口等都是一致的

4、所有的MySQL連接器,比如PHP、Perl、Python、Java、.NET、MyODBC、Ruby以及MySQL C connector等在MariaDB中都保持不變

5、mysql-client包在MariaDB服務器中也能夠正常運行

6、共享的客戶端庫與MySQL也是二進制兼容的

也就是說,在大多數情況下,你完全可以卸載MySQL然后安裝MariaDB,然后就可以像之前一樣正常的運行。

起源

為何改了個名字呢,這其中是有些典故的。

MySQL之父Widenius先生離開了Sun之后,覺得依靠Sun/Oracle來發展MySQL,實在很不靠譜,于是決定另開分支,這個分支的名字叫做MariaDB。

MariaDB跟MySQL在絕大多數方面是兼容的,對于開發者來說,幾乎感覺不到任何不同。目前MariaDB是發展最快的MySQL分支版本,新版本發布速度已經超過了Oracle官方的MySQL版本。

在Oracle控制下的MySQL開發,有兩個主要問題:1. MySQL核心開發團隊是封閉的,完全沒有Oracle之外的成員參加。很多高手即使有心做貢獻,也沒辦法做到。2. MySQL新版本的發布速度,在Oracle收購Sun之后大為減緩。Widenius有一個ppt,用數據比較了收購之前和之后新版本的發布速度。有很多bugfix和新的feature,都沒有及時加入到發布版本之中。

以上這兩個問題,導致了各個大公司,都開發了自己定制的MySQL版本,包括Yahoo!/Facebook/Google/阿里巴巴+淘寶網等等。

MySQL是開源社區的資產,任何個人/組織都無權據為己有。為了依靠廣大MySQL社區的力量來更快速的發展MySQL,另外開分支是必須的。

MariaDB默認的存儲引擎是Maria,不是MyISAM。Maria可以支持事務,但是默認情況下沒有打開事務支持,因為事務支持對性能會有影響。可以通過以下語句,轉換為支持事務的Maria引擎。ALTER TABLE `tablename` ENGINE=MARIA TRANSACTIONAL=1;

區別

這兩個數據庫究竟有什么本質的區別,我看mariadb文件夾BIN中還是mysql*.exe,除了MySQL會被ORACLE閉源外,而mariadb則開源,他倆之間到底還有什么本質區別沒有?

區別一:

MariaDB不僅僅是Mysql的一個替代品,它的主要目的是創新和提高Mysql的技術。

區別二:

MySQL之父Widenius先生離開了Sun之后,覺得依靠Sun/Oracle來發展MySQL,實在很不靠譜,于是決定另開分支,這個分支的名字叫做MariaDB。

MariaDB跟MySQL在絕大多數方面是兼容的,對于開發者來說,幾乎感覺不到任何不同。目前MariaDB是發展最快的MySQL分支版本,新版本發布速度已經超過了Oracle官方的MySQL版本。

MariaDB 是一個采用Aria存儲引擎的MySQL分支版本,是由原來 MySQL 的作者Michael Widenius創辦的公司所開發的免費開源的數據庫服務器。

這個項目的更多的代碼都改編于 MySQL 6.0,例如 “pool of threads”功能提供解決多數據連接問題。MariaDB 5.1.41 RC可以到這里下載,32位和64位已編譯Linux版本,還包括源代碼包。MariaDB基于GPL 2.0發布。

所以對于大部分的MySQL用戶來說,從現在主流的MySQL轉到MariaDB應該是沒有什么難度的

區別三:

LAMP架構盛極一時,這離不開MySQL的免費與易用,但是在Oracle收購了Sun之后,很多公司開始擔憂MySQL的開源前景,而最近Oracle進一步閉源的舉措更是讓人難以安心,眾多互聯網公司紛紛開始尋求MySQL的替代方案。

不得不提的是Apple的遠見,在Oracle收購Sun之初就宣布遷移到PostgreSQL。但PostgreSQL的設計初衷就不同于MySQL,并不是使用MySQL的大部分互聯網公司合適的解決方案。除了Apple,Google、Facebook、Twitter也大量使用了MySQL,紛紛發布了自己的MySQL分支/補丁集,并為不少公司所采用。同時,MariaDB、Percona等MySQL分支也漸漸步入大眾的視野。

根據Wikipedia介紹,MariaDB是一個社區驅動的、采用XtraDb存儲引擎的MySQL分支版本,由MySQL創始人Michael Widenius帶領開發,遵循GPL v2.0協議開源。因為MySQL創始人的介入,MariaDB備受關注,Drupal、MediaWiki、phpMyAdmin、WordPress等眾多應用都宣布支持MariaDB。

從MySQL遷移到MariaDB Wikipedia力求開放

LAMP架構盛極一時,這離不開MySQL的免費與易用,但是在Oracle收購了Sun之后,很多公司開始擔憂MySQL的開源前景,而最近Oracle進一步閉源的舉措更是讓人難以安心,眾多互聯網公司紛紛開始尋求MySQL的替代方案。

mysql和mariaDB開發團隊一致,區別在于mysql已經被oracle閉源了而mariaDB是開源的 但是當然不排除若干年后oracle再花幾十億美金收買mysql之父。

 
下載MySql

官網:http://dev.mysql.com/downloads/

數據庫應用-mysql語句拾遺關閉防火墻



實例:

一、概念:
   數據: data
   數據庫: DB
   數據庫管理系統:DBMS
   數據庫系統:DBS
   MySQL:數據庫  
   mysql:客戶端命令(用來連接服務或發送sql指令)
   SQL:結構化查詢語言 ,其中MySQL支持這個。
   SQL語言分為4個部分:DDL、DML、DQL、DCL
   
二、連接數據庫:
   mysql -h 主機名 -u 用戶名  -p密碼  庫名
   
   C:\>mysql  --采用匿名賬號和密碼登陸本機服務
   C:\>mysql -h localhost -u root -proot   --采用root賬號和root密碼登陸本機服務
   C:\>mysql -u root -p   --推薦方式默認登陸本機
     Enter password: ****

   C:\>mysql -u root -p lnmp61  --直接進入lnmp61數據庫的方式登陸
   
三、授權:
    格式:grant 允許操作 on 庫名.表名 to 賬號@來源 identified by '密碼';
    
    --實例:創建zhangsan賬號,密碼123,授權lnmp庫下所有表的增/刪/改/查數據,來源地不限
    mysql> grant select,insert,update,delete on lnmp61.* to zhangsan@'%' identified by '123';
    Query OK, 0 rows affected (0.00 sec)
    

四、SQL的基本操作
    mysql>show databases;     --查看當前用戶下的所有數據庫
    mysql>create database 數據庫名; --創建數據庫
    mysql> use test;    --選擇進入test數據庫
    mysql> drop database 數據庫名;  --刪除一個數據庫 
    
    mysql> show tables; --查看當前庫下的所有表格
    mysql> select database();  --查看當前所在的數據庫
    mysql> desc tb1;  --查看tb1的表結構。
    mysql> create table demo(    --創建demo表格
        -> name varchar(16) not null,
        -> age int,
        -> sex enum('w','m') not null default 'm');
    Query OK, 0 rows affected (0.05 sec)

    mysql> desc demo;  --查看表結構
    +-------+---------------+------+-----+---------+-------+
    | Field | Type          | Null | Key | Default | Extra |
    +-------+---------------+------+-----+---------+-------+
    | name  | varchar(16)   | NO   |     | NULL    |       |
    | age   | int(11)       | YES  |     | NULL    |       |
    | sex   | enum('w','m') | NO   |     | m       |       |
    +-------+---------------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    
    mysql>drop table if exists mytab;  -- 嘗試刪除mytab表格
    
    
    --添加一條數據
    mysql> insert into demo(name,age,sex) values('zhangsan',20,'w');
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into demo values('lisi',22,'m'); --不指定字段名來添加數據
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into demo(name,age) values('wangwu',23); --指定部分字段名來添加數據
    Query OK, 1 row affected (0.00 sec)
    
    --批量添加數據
    mysql> insert into demo(name,age,sex) values('aaa',21,'w'),("bbb",22,'m');
    Query OK, 2 rows affected (0.00 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> select * from demo; --查詢數據
    
    mysql> update demo set age=24 where name='aaa';  --修改
    Query OK, 1 row affected (0.02 sec)
    Rows matched: 1  Changed: 1  Warnings: 0
        
    mysql> delete from demo where name='bbb';  --刪除
    Query OK, 1 row affected (0.00 sec)
    
    
    mysql>\h   -- 快捷幫助
    mysql>\c   -- 取消命令輸入
    mysql>\s   -- 查看當前數據庫的狀態
    mysql>\q   -- 退出mysql命令行
    
五、 MySQL數據庫的數據類型:

    MySQL的數據類型分為四大類:數值類型、字串類型、日期類型、NULL。
    
    5.1 數值類型:
        *tinyint(1字節)
        smallint(2字節)
        mediumint(3字節)
        *int(4字節)     
        bigint(8字節)
        *float(4字節)   float(6,2)
        *double(8字節)  
        decimal(自定義)字串形數值
        
     5.2 字串類型
        普通字串
        *char  定長字串        char(8)  
        *varchar 可變字串 varchar(8)
        
        二進制類型
        tinyblob
        blob
        mediumblob
        longblob
        
        文本類型
        tinytext
        *text      常用于<textarea></textarea>
        mediumtext
        longtext
        
        *enum枚舉
        set集合
        
    5.3 時間和日期類型:
        date  年月日
        time  時分秒
        datatime 年月日時分秒
        timestamp 時間戳
        year 年
    
    5.4 NULL值
        NULL意味著“沒有值”或“未知值”
        可以測試某個值是否為NULL
        不能對NULL值進行算術計算
        對NULL值進行算術運算,其結果還是NULL
        0或NULL都意味著假,其余值都意味著真

    MySQL的運算符:
        算術運算符:+ - * / % 
        比較運算符:= > < >= <= <> != 
        數據庫特有的比較:in,not in, is null,is not null,like, between and 
        邏輯運算符:and or not
    
 六、 表的字段約束:
        unsigned 無符號(正數)
        zerofill 前導零填充
        auto_increment  自增
        default    默認值
        not null  非空
        PRIMARY KEY 主鍵 (非null并不重復)
        unique 唯一性   (可以為null但不重復)
        index 常規索引
        
七: 建表語句格式:
     create table 表名(
       字段名 類型 [字段約束],
       字段名 類型 [字段約束],
       字段名 類型 [字段約束],
       ...
      );

    mysql> create table stu(
        -> id int unsigned not null auto_increment primary key,
        -> name varchar(8) not null unique,
        -> age tinyint unsigned,
        -> sex enum('m','w') not null default 'm',
        -> classid char(6)
        -> );
    Query OK, 0 rows affected (0.05 sec)

    
    mysql> desc stu;
    +---------+---------------------+------+-----+---------+----------------+
    | Field   | Type                | Null | Key | Default | Extra          |
    +---------+---------------------+------+-----+---------+----------------+
    | id      | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
    | name    | varchar(8)          | NO   | UNI | NULL    |                |
    | age     | tinyint(3) unsigned | YES  |     | NULL    |                |
    | sex     | enum('m','w')       | NO   |     | m       |                |
    | classid | char(6)             | YES  |     | NULL    |                |
    +---------+---------------------+------+-----+---------+----------------+
    5 rows in set (0.00 sec)

    mysql> show create table stu\G  --查看建表的語句
    *************************** 1. row ***************************
           Table: stu
    Create Table: CREATE TABLE `stu` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `name` varchar(8) NOT NULL,
      `age` tinyint(3) unsigned default NULL,
      `sex` enum('m','w') NOT NULL default 'm',
      `classid` char(6) default NULL,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `name` (`name`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)

    mysql>
    mysql> insert into stu(id,name,age,sex,classid) values(1,'zhangsan',20,'m','lnmp
    61');
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into stu(name,age,sex,classid) values('lisi',22,'w','lnmp61');
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into stu(name,age,classid) values('wangwu',21,'lnmp61');
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into stu values(null,'qq',24,'w','lnmp62');
    Query OK, 1 row affected (0.00 sec)

    mysql> insert into stu values(null,'aa',20,'m','lamp62'),(null,'bb',25,'m','lnmp
    63');
    Query OK, 2 rows affected (0.00 sec)
    Records: 2  Duplicates: 0  Warnings: 0

    mysql> select * from stu;
    +----+----------+------+-----+---------+
    | id | name     | age  | sex | classid |
    +----+----------+------+-----+---------+
    |  1 | zhangsan |   20 | m   | lnmp61  |
    |  2 | lisi     |   22 | w   | lnmp61  |
    |  3 | wangwu   |   21 | m   | lnmp61  |
    |  4 | qq       |   24 | w   | lnmp62  |
    |  5 | aa       |   20 | m   | lnmp62  |
    |  6 | bb       |   25 | m   | lnmp63  |
    +----+----------+------+-----+---------+
    6 rows in set (0.00 sec)
    
    
八、修改表結構

 //需求分析->功能(模塊)->數據庫設計->找實體、找屬性、找關系

深入部分:

mysql> desc stu;
+---------+---------------------+------+-----+---------+----------------+
| Field   | Type                | Null | Key | Default | Extra          |
+---------+---------------------+------+-----+---------+----------------+
| id      | int(10) unsigned    | NO   | PRI | NULL    | auto_increment |
| name    | varchar(16)         | NO   | UNI | NULL    |                |
| sex     | enum('m','w')       | NO   |     | m       |                |
| age     | tinyint(3) unsigned | NO   |     | NULL    |                |
| classid | char(6)             | NO   |     | NULL    |                |
+---------+---------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

-- 標準格式添加,指定所有的字段,給定所有的值
mysql> insert into stu(id,name,sex,age,classid) values(null,'zhangsan','m',20,'lnmp80');
Query OK, 1 row affected (0.09 sec)

-- 給定部分字段添加值(值和字段要對應上)
mysql> insert into stu(name,age,classid) values('lisi',22,'lnmp80');
Query OK, 1 row affected (0.03 sec)

-- 不給字段信息,來添加值。(值和表結構對應上)
mysql> insert into stu values(null,'wangwu','w',25,'lnmp80');
Query OK, 1 row affected (0.08 sec)

-- 批量添加數據
mysql> insert into stu(name,sex,age,classid)
    -> values('qq','w',21,'lamp81'),
    -> ('aa','m',26,'lnmp81'),
    -> ('bb','w',20,'lnmp80');
Query OK, 3 rows affected (0.03 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from stu;
+----+----------+-----+-----+---------+
| id | name     | sex | age | classid |
+----+----------+-----+-----+---------+
|  1 | zhangsan | m   |  20 | lnmp80  |
|  2 | lisi     | m   |  22 | lnmp80  |
|  3 | wangwu   | w   |  25 | lnmp80  |
|  4 | qq       | w   |  21 | lnmp81  |
|  5 | aa       | m   |  26 | lnmp81  |
|  6 | bb       | w   |  20 | lnmp80  |
+----+----------+-----+-----+---------+
6 rows in set (0.00 sec)

mysql>

mysql> insert into stu values
    -> (null,'zhaoliu','w',19,'lnmp81'),
    -> (null,'tianqi','m',27,'lnmp82'),
    -> (null,'uu','w',26,'lnmp80'),
    -> (null,'yy','m',24,'lnmp82'),
    -> (null,'pp','w',29,'lnmp81');
Query OK, 5 rows affected (0.03 sec)
Records: 5  Duplicates: 0  Warnings: 0

mysql> select * from stu;
+----+----------+-----+-----+---------+
| id | name     | sex | age | classid |
+----+----------+-----+-----+---------+
|  1 | zhangsan | m   |  20 | lnmp80  |
|  2 | lisi     | m   |  22 | lnmp80  |
|  3 | wangwu   | w   |  25 | lnmp80  |
|  4 | qq       | w   |  21 | lnmp81  |
|  5 | aa       | m   |  26 | lnmp81  |
|  6 | bb       | w   |  20 | lnmp80  |
|  7 | zhaoliu  | w   |  19 | lnmp81  |
|  8 | tianqi   | m   |  27 | lnmp82  |
|  9 | uu       | w   |  26 | lnmp80  |
| 10 | yy       | m   |  24 | lnmp82  |
| 11 | pp       | w   |  29 | lnmp81  |
+----+----------+-----+-----+---------+
11 rows in set (0.00 sec)

mysql>

--2. 數據的修改:
--===================================================
--格式: update 表名 set 字段名=修改值[,字段名=修改值[,....]] [where 條件] [order by 排序] [limit 部分數據]

--實例
--將學號id值為5的信息,年齡改為28,班級設為lamp82
mysql> update stu set age=28,classid='lamp82' where id=5
Query OK, 1 row affected (0.11 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from stu;
+----+----------+-----+-----+---------+
| id | name     | sex | age | classid |
+----+----------+-----+-----+---------+
|  1 | zhangsan | m   |  20 | lnmp80  |
|  2 | lisi     | m   |  22 | lnmp80  |
|  3 | wangwu   | w   |  25 | lnmp80  |
|  4 | qq       | w   |  21 | lnmp81  |
|  5 | aa       | m   |  28 | lnmp82  |
|  6 | bb       | w   |  20 | lnmp80  |
|  7 | zhaoliu  | w   |  19 | lnmp81  |
|  8 | tianqi   | m   |  27 | lnmp82  |
|  9 | uu       | w   |  26 | lnmp80  |
| 10 | yy       | m   |  24 | lnmp82  |
| 11 | pp       | w   |  29 | lnmp81  |
+----+----------+-----+-----+---------+
11 rows in set (0.00 sec)

mysql>

--3. 數據的刪除
---===========================================================================
--格式: delete from 表名 [where 條件] [order by 排序] [limit 部分數據]

--刪除實例:
  --1.刪除id號為5的信息
 mysql> delete from stu where id=5;

  --2.刪除班級為lnmp80的男生信息
 mysql> delete from stu where classid='lnmp80' and sex='m';
 
  --3.刪除年齡在21到25之間的信息
 mysql> delete from stu where age>=21 and age<=25;
 mysql> delete from stu where age between 21 and 25;
 
  --4.刪除年齡在21到25之外的信息
 mysql> delete from stu where age<21 or age>25;
 mysql> delete from stu where age not between 21 and 25;
 
 
 -- 4. 數據的查詢
 --=======================================================
 --格式: select 字段名|* from 表名 
 --                   [ where 搜索條件]
 --                   [ group by 分組列名[having 分組后的子條件]]
 --                   [ order by 排序列名 [desc降序|asc升序(默認)]]
 --                   [ limit m[,n] 獲取部分數據(分頁) ]
 
 實例:
 mysql>
mysql> select * from stu;  --查看所有字段的所有信息
+----+----------+-----+-----+---------+
| id | name     | sex | age | classid |
+----+----------+-----+-----+---------+
|  1 | zhangsan | m   |  20 | lnmp80  |
|  2 | lisi     | m   |  22 | lnmp80  |
|  3 | wangwu   | w   |  25 | lnmp80  |
|  4 | qq       | w   |  21 | lnmp81  |
|  5 | aa       | m   |  28 | lnmp82  |
|  6 | bb       | w   |  20 | lnmp80  |
|  7 | zhaoliu  | w   |  19 | lnmp81  |
|  8 | tianqi   | m   |  27 | lnmp82  |
|  9 | uu       | w   |  26 | lnmp80  |
| 10 | yy       | m   |  24 | lnmp82  |
| 11 | pp       | w   |  29 | lnmp81  |
+----+----------+-----+-----+---------+
11 rows in set (0.00 sec)

-- 查看name/sex/age這幾個字段的所有信息
mysql> select name,sex,age from stu;
+----------+-----+-----+
| name     | sex | age |
+----------+-----+-----+
| zhangsan | m   |  20 |
| lisi     | m   |  22 |
| wangwu   | w   |  25 |
| qq       | w   |  21 |
| aa       | m   |  28 |
| bb       | w   |  20 |
| zhaoliu  | w   |  19 |
| tianqi   | m   |  27 |
| uu       | w   |  26 |
| yy       | m   |  24 |
| pp       | w   |  29 |
+----------+-----+-----+
11 rows in set (0.00 sec)

-- 查看數據,將name字段名換成username  (其中as關鍵字可以省略不寫) 
mysql> select name as username,sex,age from stu;

-- 查看所有學生信息,并追加一列(年齡都加5的值),起個別名age2
mysql> select *,age+5  age2 from stu;
+----+----------+-----+-----+---------+------+
| id | name     | sex | age | classid | age2 |
+----+----------+-----+-----+---------+------+
|  1 | zhangsan | m   |  20 | lnmp80  |   25 |
|  2 | lisi     | m   |  22 | lnmp80  |   27 |
.....
| 11 | pp       | w   |  29 | lnmp81  |   34 |
+----+----------+-----+-----+---------+------+
11 rows in set (0.00 sec)

-- 在查看學生信息時,追加一列。值為beijing,字段名為city
mysql> select *,"beijing" city from stu;
+----+----------+-----+-----+---------+---------+
| id | name     | sex | age | classid | city    |
+----+----------+-----+-----+---------+---------+
|  1 | zhangsan | m   |  20 | lnmp80  | beijing |
|  2 | lisi     | m   |  22 | lnmp80  | beijing |
|  3 | wangwu   | w   |  25 | lnmp80  | beijing |
....
| 10 | yy       | m   |  24 | lnmp82  | beijing |
| 11 | pp       | w   |  29 | lnmp81  | beijing |
+----+----------+-----+-----+---------+---------+
11 rows in set (0.00 sec)

-- 將字串aa和bb合并到一列中輸出
mysql> select concat("aa","bb");
+-------------------+
| concat("aa","bb") |
+-------------------+
| aabb              |
+-------------------+
1 row in set (0.02 sec)

-- 將stu表中班級和姓名字段合并到一列輸出,起字段名為uname
mysql> select concat(classid,":",name) as uname from stu;
+-----------------+
| uname           |
+-----------------+
| lnmp80:zhangsan |
| lnmp80:lisi     |
。。。
| lnmp82:tianqi   |
| lnmp80:uu       |
| lnmp82:yy       |
| lnmp81:pp       |
+-----------------+
11 rows in set (0.00 sec)

mysql>

-- where條件查詢語句
    --1. 年齡在20至25歲的學生信息(包含20和25)
    mysql> select * from stu where age>=20 and age<=25;
    mysql> select * from stu where age between 20 and 25;
    
    --2. id號為3,5,8,9的學生信息。
    mysql> select * from stu where id=3 or id=5 or id=8 or id=9
    mysql> select * from stu where id in(3,5,8,9);
    
    --3. 獲取lamp80期的女生信息
    mysql> select * from  stu where classid='lnmp80' and sex="w"
    
    --4. 獲取性別為m的lamp81和lamp82的學生信息
    mysql> select * from  stu where classid in('lnmp81','lamp82') and sex="w"
    
    --5. 查詢數據時去除重復的數據  
    mysql> select distinct classid from stu;
    +---------+
    | classid |
    +---------+
    | lnmp80  |
    | lnmp81  |
    | lnmp82  |
    +---------+
    3 rows in set (0.00 sec)
    
    --6. 查詢學生信息id不是1,3,5,8,10的信息
    mysql> select * from stu where id not in(1,3,5,8,10);
    
    --7. like模糊查詢只支持兩個通配符: '%'表示任意長度的任意值, '_'表示1位的任意值。
    -- 獲取name是由z字符開頭的所有信息
    mysql> select * from stu where name like 'z%';
    +----+----------+-----+-----+---------+
    | id | name     | sex | age | classid |
    +----+----------+-----+-----+---------+
    |  1 | zhangsan | m   |  20 | lnmp80  |
    |  7 | zhaoliu  | w   |  19 | lnmp81  |
    +----+----------+-----+-----+---------+
    2 rows in set (0.00 sec)

    -- 查看name值中包含a字符的所有信息
    mysql> select * from stu where name like '%a%';
    +----+----------+-----+-----+---------+
    | id | name     | sex | age | classid |
    +----+----------+-----+-----+---------+
    |  1 | zhangsan | m   |  20 | lnmp80  |
    |  3 | wangwu   | w   |  25 | lnmp80  |
    |  5 | aa       | m   |  28 | lnmp82  |
    |  7 | zhaoliu  | w   |  19 | lnmp81  |
    |  8 | tianqi   | m   |  27 | lnmp82  |
    +----+----------+-----+-----+---------+
    5 rows in set (0.00 sec)
    
    -- 查看name是由兩個字符構成的信息。
    mysql> select * from stu where name like '__';
    +----+------+-----+-----+---------+
    | id | name | sex | age | classid |
    +----+------+-----+-----+---------+
    |  4 | qq   | w   |  21 | lnmp81  |
    |  5 | aa   | m   |  28 | lnmp82  |
    |  6 | bb   | w   |  20 | lnmp80  |
    |  9 | uu   | w   |  26 | lnmp80  |
    | 10 | yy   | m   |  24 | lnmp82  |
    | 11 | pp   | w   |  29 | lnmp81  |
    +----+------+-----+-----+---------+
    6 rows in set (0.00 sec)
    
    
  -- 統計查詢(mysql的聚合函數:count() /sum() /max() /min() /avg()
    -- 統計stu表的數據條數11,年齡最大29,最小19,平均年齡23.7273,年齡總和261    
    mysql> select count(*),max(age),min(age),avg(age),sum(age) from stu;
    +----------+----------+----------+----------+----------+
    | count(*) | max(age) | min(age) | avg(age) | sum(age) |
    +----------+----------+----------+----------+----------+
    |       11 |       29 |       19 |  23.7273 |      261 |
    +----------+----------+----------+----------+----------+
    1 row in set (0.00 sec)

   -- 分組查詢: group by 字段名 
    -- 按班級號分組查詢
    mysql> select classid from stu group by classid;
    +---------+
    | classid |
    +---------+
    | lnmp80  |
    | lnmp81  |
    | lnmp82  |
    +---------+
    3 rows in set (0.00 sec)
    -- 按班級分組并統計,統計每個班的人數,最大年齡,最小年齡 
    mysql> select classid,count(*),max(age),min(age) from stu group by classid;
    +---------+----------+----------+----------+
    | classid | count(*) | max(age) | min(age) |
    +---------+----------+----------+----------+
    | lnmp80  |        5 |       26 |       20 |
    | lnmp81  |        3 |       29 |       19 |
    | lnmp82  |        3 |       28 |       24 |
    +---------+----------+----------+----------+
    3 rows in set (0.00 sec)
    
    -- 統計每個班男生的平均年齡
    mysql> select classid,avg(age) from stu where sex='m' group by classid;
    +---------+----------+
    | classid | avg(age) |
    +---------+----------+
    | lnmp80  |  21.0000 |
    | lnmp82  |  26.3333 |
    +---------+----------+
    2 rows in set (0.00 sec)
 
    -- 按班級分組,統計每個班的平均年齡,并獲取平均年齡在23及以上信息。
    mysql> select classid,avg(age) from stu group by classid having avg(age)>=23;
    +---------+----------+
    | classid | avg(age) |
    +---------+----------+
    | lnmp81  |  23.0000 |
    | lnmp82  |  26.3333 |
    +---------+----------+
    2 rows in set (0.02 sec)
    
   --排序:order by 字段名 [asc升(默認)|desc降]
    mysql> select  * from stu; --沒有排序
    +----+----------+-----+-----+---------+
    | id | name     | sex | age | classid |
    +----+----------+-----+-----+---------+
    |  1 | zhangsan | m   |  20 | lnmp80  |
    |  2 | lisi     | m   |  22 | lnmp80  |
    |  3 | wangwu   | w   |  25 | lnmp80  |
    。。。
    |  9 | uu       | w   |  26 | lnmp80  |
    | 10 | yy       | m   |  24 | lnmp82  |
    | 11 | pp       | w   |  29 | lnmp81  |
    +----+----------+-----+-----+---------+
    11 rows in set (0.00 sec)

    --按照年齡升序排序
    mysql> select  * from stu order by age;
    mysql> select  * from stu order by age asc; --等價于上面語句
    +----+----------+-----+-----+---------+
    | id | name     | sex | age | classid |
    +----+----------+-----+-----+---------+
    |  7 | zhaoliu  | w   |  19 | lnmp81  |
    |  1 | zhangsan | m   |  20 | lnmp80  |
    |  6 | bb       | w   |  20 | lnmp80  |
    |  4 | qq       | w   |  21 | lnmp81  |
    |  2 | lisi     | m   |  22 | lnmp80  |
    | 10 | yy       | m   |  24 | lnmp82  |
    |  3 | wangwu   | w   |  25 | lnmp80  |
    |  9 | uu       | w   |  26 | lnmp80  |
    |  8 | tianqi   | m   |  27 | lnmp82  |
    |  5 | aa       | m   |  28 | lnmp82  |
    | 11 | pp       | w   |  29 | lnmp81  |
    +----+----------+-----+-----+---------+
    11 rows in set (0.00 sec)
    
    --多列排序:首先按班級升序,相同班級再按年齡降序排序
    mysql> select  * from stu order by classid,age desc;
    +----+----------+-----+-----+---------+
    | id | name     | sex | age | classid |
    +----+----------+-----+-----+---------+
    |  9 | uu       | w   |  26 | lnmp80  |
    |  3 | wangwu   | w   |  25 | lnmp80  |
    |  2 | lisi     | m   |  22 | lnmp80  |
    |  1 | zhangsan | m   |  20 | lnmp80  |
    |  6 | bb       | w   |  20 | lnmp80  |
    | 11 | pp       | w   |  29 | lnmp81  |
    |  4 | qq       | w   |  21 | lnmp81  |
    |  7 | zhaoliu  | w   |  19 | lnmp81  |
    |  5 | aa       | m   |  28 | lnmp82  |
    |  8 | tianqi   | m   |  27 | lnmp82  |
    | 10 | yy       | m   |  24 | lnmp82  |
    +----+----------+-----+-----+---------+
    11 rows in set (0.00 sec)
    
    --limit 分頁: 
    --分頁公式: limit (當前頁-1)*頁大小,頁大小;
    mysql> select * from stu limit 5; --獲取前5條信息
    +----+----------+-----+-----+---------+
    | id | name     | sex | age | classid |
    +----+----------+-----+-----+---------+
    |  1 | zhangsan | m   |  20 | lnmp80  |
    |  2 | lisi     | m   |  22 | lnmp80  |
    |  3 | wangwu   | w   |  25 | lnmp80  |
    |  4 | qq       | w   |  21 | lnmp81  |
    |  5 | aa       | m   |  28 | lnmp82  |
    +----+----------+-----+-----+---------+
    5 rows in set (0.00 sec)

    --獲取年齡最大的3條數據
    mysql> select * from stu order by age desc limit 3;
    +----+--------+-----+-----+---------+
    | id | name   | sex | age | classid |
    +----+--------+-----+-----+---------+
    | 11 | pp     | w   |  29 | lnmp81  |
    |  5 | aa     | m   |  28 | lnmp82  |
    |  8 | tianqi | m   |  27 | lnmp82  |
    +----+--------+-----+-----+---------+
    3 rows in set (0.00 sec)

    --以4條數據為一頁,取第一頁
    mysql> select * from stu limit 0,4;
    +----+----------+-----+-----+---------+
    | id | name     | sex | age | classid |
    +----+----------+-----+-----+---------+
    |  1 | zhangsan | m   |  20 | lnmp80  |
    |  2 | lisi     | m   |  22 | lnmp80  |
    |  3 | wangwu   | w   |  25 | lnmp80  |
    |  4 | qq       | w   |  21 | lnmp81  |
    +----+----------+-----+-----+---------+
    4 rows in set (0.00 sec)
    
    --以4條數據為1頁,取第二頁
    mysql> select * from stu limit 4,4;
    +----+---------+-----+-----+---------+
    | id | name    | sex | age | classid |
    +----+---------+-----+-----+---------+
    |  5 | aa      | m   |  28 | lnmp82  |
    |  6 | bb      | w   |  20 | lnmp80  |
    |  7 | zhaoliu | w   |  19 | lnmp81  |
    |  8 | tianqi  | m   |  27 | lnmp82  |
    +----+---------+-----+-----+---------+
    4 rows in set (0.00 sec)

    mysql> select * from stu limit 8,4;
    +----+------+-----+-----+---------+
    | id | name | sex | age | classid |
    +----+------+-----+-----+---------+
    |  9 | uu   | w   |  26 | lnmp80  |
    | 10 | yy   | m   |  24 | lnmp82  |
    | 11 | pp   | w   |  29 | lnmp81  |
    +----+------+-----+-----+---------+
    3 rows in set (0.00 sec)

 
 -- 數據的導入和導出
 --================================================
 -- 導出lnmp80數據的所有信息
D:\xampp\htdocs\lamp80>mysqldump -u root -p lnmp80 >lnmp80_20170106.sql
Enter password:
 -- 只導出lamp80庫下的stu表信息
D:\xampp\htdocs\lnmp80>mysqldump -u root -p lnmp80 stu>stu.sql
Enter password:

D:\xampp\htdocs\lnmp80\python_mysql03>

 --數據庫lnmp80的導入(要求數據庫必須存在)
D:\xampp\htdocs\lnmp80>mysql -u root -p lnmp80<lnmp80_20170106.sql

Enter password:


 --數據庫lnmp80下stu表信息的導入
D:\xampp\htdocs\lnmp80>mysql -u root -p lnmp80 < stu.sql

多表查詢:

-- 多表查詢:
--      1. 嵌套方式的多表查詢
--      2. where關聯查詢
--      3. 左聯和右聯,內聯的查詢。

=================================================
-- 已知條件:
mysql> select * from stu;
+----+------------+-----+------+---------+
| id | name       | sex | age  | classid |
+----+------------+-----+------+---------+
|  1 | zhangsan   | m   |   20 | lnmp01  |
|  2 | lisi       | w   |   21 | lnmp02  |
|  3 | wangwu     | m   |   25 | lnmp01  |
|  4 | zhaoliu    | w   |   29 | lnmp02  |
|  5 | qq01       | w   |   28 | lnmp01  |
|  6 | qq02       | m   |   30 | lnmp02  |
|  7 | qq03       | w   |   31 | lnmp03  |
|  8 | xiaowang   | m   |   18 | lnmp04  |
|  9 | xiaoli     | w   |   19 | lnmp03  |
| 10 | xiaobai    | m   |   22 | lnmp02  |
| 11 | xiaosun    | w   |   24 | lnmp01  |
| 12 | xiaozhang2 | w   |   36 | lnmp05  |
+----+------------+-----+------+---------+
12 rows in set (0.05 sec)

mysql> select * from grade;
+----+-----+------+-------+
| id | sid | php  | mysql |
+----+-----+------+-------+
|  1 |   4 |   80 |    92 |
|  2 |   2 |   78 |    80 |
|  3 |   1 |   99 |    95 |
|  4 |   6 |   58 |    62 |
|  5 |   7 |   89 |    98 |
|  6 |   3 |   68 |    54 |
+----+-----+------+-------+
6 rows in set (0.00 sec)

mysql>

-- 一、嵌套查詢:一個查詢結果是另外一個查詢的條件。

-- 例如在學生表中獲取年齡最大的信息
mysql> select max(age) from stu;
+----------+
| max(age) |
+----------+
|       36 |
+----------+
1 row in set (0.00 sec)

mysql> select * from stu where age=(select max(age) from stu);
+----+------------+-----+------+---------+
| id | name       | sex | age  | classid |
+----+------------+-----+------+---------+
| 12 | xiaozhang2 | w   |   36 | lnmp05  |
+----+------------+-----+------+---------+
1 row in set (0.00 sec)

mysql>

-- 獲取php考試成績最好的是誰?

mysql> select max(php) from grade; --獲取php最高成績
+----------+
| max(php) |
+----------+
|       99 |
+----------+
1 row in set (0.11 sec)

mysql> select sid from grade where php=99; --獲取php成績在99分的sid學號信息
+-----+
| sid |
+-----+
|   1 |
+-----+
1 row in set (0.00 sec)

mysql> select * from stu where id=1;  --獲取學號為1的學生信息
+----+----------+-----+------+---------+
| id | name     | sex | age  | classid |
+----+----------+-----+------+---------+
|  1 | zhangsan | m   |   20 | lnmp01  |
+----+----------+-----+------+---------+
1 row in set (0.00 sec)

mysql> select * from stu where id=(select sid from grade where php=99);
mysql> select * from stu where id in(select sid from grade where php=99);
+----+----------+-----+------+---------+
| id | name     | sex | age  | classid |
+----+----------+-----+------+---------+
|  1 | zhangsan | m   |   20 | lnmp01  |
+----+----------+-----+------+---------+
1 row in set (0.19 sec)

-- 三層嵌套查詢,解決考試php成績最好的信息
mysql> select * from stu where id in(select sid from grade where php=(select max(p
hp) from grade));
+----+----------+-----+------+---------+
| id | name     | sex | age  | classid |
+----+----------+-----+------+---------+
|  1 | zhangsan | m   |   20 | lnmp01  |
+----+----------+-----+------+---------+
1 row in set (0.00 sec)


-- 二、  where關聯查詢

-- 查詢stu表與grade表的關聯查詢
mysql> select * from stu,grade where stu.id=grade.sid;
+----+----------+-----+------+---------+----+-----+------+-------+
| id | name     | sex | age  | classid | id | sid | php  | mysql |
+----+----------+-----+------+---------+----+-----+------+-------+
|  4 | zhaoliu  | w   |   29 | lnmp02  |  1 |   4 |   80 |    92 |
|  2 | lisi     | w   |   21 | lnmp02  |  2 |   2 |   78 |    80 |
|  1 | zhangsan | m   |   20 | lnmp01  |  3 |   1 |   99 |    95 |
|  6 | qq02     | m   |   30 | lnmp02  |  4 |   6 |   58 |    62 |
|  7 | qq03     | w   |   31 | lnmp03  |  5 |   7 |   89 |    98 |
|  3 | wangwu   | m   |   25 | lnmp01  |  6 |   3 |   68 |    54 |
+----+----------+-----+------+---------+----+-----+------+-------+
6 rows in set (0.13 sec)
-- 查詢stu表與grade表的關聯查詢,只顯示部分字段
mysql> select s.id,s.name,g.php,g.mysql  from stu s,grade g
    -> where s.id=g.sid;
+----+----------+------+-------+
| id | name     | php  | mysql |
+----+----------+------+-------+
|  4 | zhaoliu  |   80 |    92 |
|  2 | lisi     |   78 |    80 |
|  1 | zhangsan |   99 |    95 |
|  6 | qq02     |   58 |    62 |
|  7 | qq03     |   89 |    98 |
|  3 | wangwu   |   68 |    54 |
+----+----------+------+-------+
6 rows in set (0.03 sec)

-- 查詢lnmp01班的學生考試信息,顯示:學號、姓名、班級、php和MySQL字段。
mysql> select s.id,s.name,s.classid,g.php,g.mysql from stu s,grade g
    -> where s.id=g.sid and s.classid='lamp01';
+----+----------+---------+------+-------+
| id | name     | classid | php  | mysql |
+----+----------+---------+------+-------+
|  1 | zhangsan | lnmp01  |   99 |    95 |
|  3 | wangwu   | lnmp01  |   68 |    54 |
+----+----------+---------+------+-------+
2 rows in set (0.00 sec)

-- 統計每個班的考試人數和平均成績:顯示:班級,人數和平均成績
mysql> select s.classid,count(*) num,avg(g.php) php ,avg(g.mysql) mysql
    -> from stu s,grade g
    -> where s.id=g.sid group by s.classid;
+---------+-----+---------+---------+
| classid | num | php     | mysql   |
+---------+-----+---------+---------+
| lnmp01  |   2 | 83.5000 | 74.5000 |
| lnmp02  |   3 | 72.0000 | 78.0000 |
| lnmp03  |   1 | 89.0000 | 98.0000 |
+---------+-----+---------+---------+
3 rows in set (0.00 sec)

-- 查詢姓名中含有ang的考試信息
mysql> select s.id,s.name,g.php,g.mysql from stu s,grade g
    -> where s.id=g.sid and s.name like '%ang%';
+----+----------+------+-------+
| id | name     | php  | mysql |
+----+----------+------+-------+
|  1 | zhangsan |   99 |    95 |
|  3 | wangwu   |   68 |    54 |
+----+----------+------+-------+
2 rows in set (0.00 sec)


--三、 左聯和右聯、內聯(等價于where) 查詢
------------------------------------------------------

--查詢所有學生的考試信息(包含沒有考試的)
-- 采用左聯查詢(以左邊為主,右邊沒有的對應數據補null)
mysql> select s.id,s.name,g.php,g.mysql from stu s left join  grade g
    -> on s.id=g.sid;
+----+------------+------+-------+
| id | name       | php  | mysql |
+----+------------+------+-------+
|  2 | lisi       |   78 |    80 |
|  5 | qq01       | NULL |  NULL |
|  6 | qq02       |   58 |    62 |
|  7 | qq03       |   89 |    98 |
|  3 | wangwu     |   68 |    54 |
| 10 | xiaobai    | NULL |  NULL |
|  9 | xiaoli     | NULL |  NULL |
| 11 | xiaosun    | NULL |  NULL |
|  8 | xiaowang   | NULL |  NULL |
| 12 | xiaozhang2 | NULL |  NULL |
|  1 | zhangsan   |   99 |    95 |
|  4 | zhaoliu    |   80 |    92 |
+----+------------+------+-------+
12 rows in set (0.00 sec)

-- 采用右聯查詢(以右邊為主,左邊沒有的對應數據補null)
mysql> select s.id,s.name,g.php,g.mysql from grade g right join stu s
    -> on s.id=g.sid;
+----+------------+------+-------+
| id | name       | php  | mysql |
+----+------------+------+-------+
|  2 | lisi       |   78 |    80 |
|  5 | qq01       | NULL |  NULL |
|  6 | qq02       |   58 |    62 |
|  7 | qq03       |   89 |    98 |
|  3 | wangwu     |   68 |    54 |
| 10 | xiaobai    | NULL |  NULL |
|  9 | xiaoli     | NULL |  NULL |
| 11 | xiaosun    | NULL |  NULL |
|  8 | xiaowang   | NULL |  NULL |
| 12 | xiaozhang2 | NULL |  NULL |
|  1 | zhangsan   |   99 |    95 |
|  4 | zhaoliu    |   80 |    92 |
+----+------------+------+-------+
12 rows in set (0.00 sec)
-- 內聯查詢,就是兩邊表都存在的。
mysql> select s.id,s.name,g.php,g.mysql from grade g inner join stu s
    -> on s.id=g.sid;
+----+----------+------+-------+
| id | name     | php  | mysql |
+----+----------+------+-------+
|  4 | zhaoliu  |   80 |    92 |
|  2 | lisi     |   78 |    80 |
|  1 | zhangsan |   99 |    95 |
|  6 | qq02     |   58 |    62 |
|  7 | qq03     |   89 |    98 |
|  3 | wangwu   |   68 |    54 |
+----+----------+------+-------+
6 rows in set (0.00 sec)

mysql>
-- 查詢lnmp01班的學生考試信息
mysql> select s.id,s.name,s.classid,g.php,g.mysql 
    -> from stu s left join grade g
    -> on s.id=g.sid 
    -> where s.classid='lnmp01';
+----+----------+---------+------+-------+
| id | name     | classid | php  | mysql |
+----+----------+---------+------+-------+
|  1 | zhangsan | lnmp01  |   99 |    95 |
|  3 | wangwu   | lnmp01  |   68 |    54 |
|  5 | qq01     | lnmp01  | NULL |  NULL |
| 11 | xiaosun  | lnmp01  | NULL |  NULL |
+----+----------+---------+------+-------+
4 rows in set (0.00 sec)

mysql>


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

尤溪县| 孝义市| 和龙市| 右玉县| 镇赉县| 靖江市| 西乌珠穆沁旗| 梅州市| 开阳县| 枣庄市| 鄂托克前旗| 密山市| 金昌市| 开封市| 玉田县| 阜阳市| 康马县| 伊通| 六安市| 远安县| 崇左市| 吕梁市| 德化县| 黑水县| 镇坪县| 裕民县| 基隆市| 祥云县| 资中县| 栾川县| 大宁县| 靖远县| 德昌县| 五原县| 加查县| 松阳县| 西青区| 仁化县| 高雄县| 辉县市| 筠连县|