仕上げノート「MySQLはなりを知っているだろう」

データベースインフラストラクチャ

キーワード:
数据库
(一意のテーブル名、そのような異なるデータベースからのテーブルのような要因に依存して、同じ名前であってもよい)
模式(データベースおよびテーブルのレイアウトや特性に関する情報)
(テーブルフィールド)
[線(RAW)と記録(録音)されますこれは大幅に同一視することができるが、行が正しい用語]である
数据类型(制限データ・タイプ、正しい順序人、ディスクの最適化)
主键(主キー):A、値が一意にテーブル内の行を識別することができます。
SQL[(構造化照会言語):構造化照会言語。]

主键条件:

  1. 値がnullではないので、それは、それぞれの行の主キーであるべきです。
  2. 任意の二つの行の間の異なる主キー。

通常、プライマリ・キーは、また、一緒に主キーを形成する複数の行であってもよいです。

主キーの推奨事項を設定します:

  1. 主キー列を更新しません。
  2. 主キー列を再使用しないでください。
  3. 主キー列の値に変更するために使用することができるわけではありません。

SQLコマンド:

  1. コマンドmysql>入力後、
  2. コマンドまたは\gプレスの終わりには、唯一のEnterコマンドを実行していません。
  3. 入力するhelpか、\h助けを得ます。
  4. 入力するquitか、exitプログラムを終了します。

基本的な声明:

myslq -u root -p;
use Database;

#SHOW相关
SHOW databases;
SHOW tables;
SHOW columns FROM tables;    -- 等于    describe "tables";
SHOW CREATE DATABASE db_name; 显示完整的建库语句
SHOW CREATE TABLE tbl_name;
SHOW [STORAGE] ENGINES

#SELECT相关
SELECT column_name1,column_name2 FROM table;
SELECT *FROM tables;
--  Distinct
-- 不能部分使用DISTINCT,其应用于所有列而不是其前置列
SELECT DISTINCT column_namw FROM table; 
-- Limit   从第零个开始后的5个    取的时候排列顺序是从零开始的。
SELECT column_name FROM table_name LIMIT 5;
-- 从第二个开始后的5个
SELECT column_name FROM table_name LIMIT 2,5;
-- OFFSET 限制两个,从第三为开始取
SELECT column_name FROM table_name  LIMIT 2 OFFSET 3; 
-- 使用全限定的表名    库:manxc    表:tags
SELECT tags.tid FROM manxc.tags;

あなたのデータをソート

キーワード:ORDER BY

SELECT column_name FROM table_name ORDER BY column_name;

デフォルトの昇順、AZ行文字によって、小規模から大規模までの数字;
注:中国の発注問題が発生しました。
解決:https://www.jianshu.com/p/8a9135f9cd47?utm_campaign
昇順(デフォルト):ASCのDESC:DESCを

データのフィルタリング

キーワード:WHERE(同時に他のキーと組み合わせて)

SELECT * FROM manxc.tags WHERE tags.tid BETWEEN 2 AND 9 ORDER BY tid DESC,tagname;
演算子 説明
= 等しいです
<> 等しくありません
!= 等しくありません
< 以下
<= 以下で
> より大きい
> = 以上で
の間に 指定された2つの間の値

例えば:

mysql> SELECT 2 BETWEEN 1 AND 3, 2 BETWEEN 3 and 1;
    -> 1, 0 
mysql> SELECT 1 BETWEEN 2 AND 3; 
    -> 0 
mysql> SELECT 'b' BETWEEN 'a' AND 'c'; 
    -> 1 
mysql> SELECT 2 BETWEEN 2 AND '3'; 
    -> 1 
mysql> SELECT 2 BETWEEN 2 AND 'x-3'; 
    -> 0

WHERE一致する文字プラス「」;と、デフォルトの大文字と小文字を区別しないマッチングが行われます。

mysql> SELECT uid,username,state FROM manxc.user WHERE username='FLY';
+-----+----------+-------+
| uid | username | state |
+-----+----------+-------+
|   3 | fly      |     0 |
+-----+----------+-------+

チェックNULL:IS NULL(ヌル値が0とスペースは異なるものではありません)

mysql> SELECT uid,username,state FROM user WHERE password IS NULL LIMIT 3;
+-----+----------+-------+
| uid | username | state |
+-----+----------+-------+
|   8 | dfdg     |  NULL |
|   9 | dgdg     |  NULL |
|  10 | gdg      |  NULL |
+-----+----------+-------+

データのフィルタリング

キーワード
操作符(operator):キーワードをリンクしたり、where句を変更します。
AND演算子

mysql> SELECT uid,username,state FROM USER WHERE state IS NULL AND uid <= 13;
+-----+-----------+-------+
| uid | username  | state |
+-----+-----------+-------+
|   8 | dfdg      |  NULL |
|   9 | dgdg      |  NULL |
|  10 | gdg       |  NULL |
|  11 | dgdgh     |  NULL |
|  12 | dgklds    |  NULL |
|  13 | dgkljdlkg |  NULL |
+-----+-----------+-------+

OR演算子:

mysql> SELECT uid,username,state FROM USER WHERE state IS NULL OR uid <= 13;
+-----+--------------+-------+
| uid | username     | state |
+-----+--------------+-------+
|   4 | test1        |     0 |
|   3 | fly          |     0 |
|   5 | test2        |     0 |
|   6 | test3        |     1 |
|   7 | 1            |     1 |
|   8 | dfdg         |  NULL |
|   9 | dgdg         |  NULL |
|  10 | gdg          |  NULL |
|  11 | dgdgh        |  NULL |
|  12 | dgklds       |  NULL |
|  13 | dgkljdlkg    |  NULL |
|  14 | fdjwe        |  NULL |
|  15 | gkdlkg       |  NULL |
|  16 | dgdlkjg      |  NULL |
|  17 | fdglkdjg     |  NULL |
|  18 | gkldssjgdsas |  NULL |
|  19 | dgjkljg      |  NULL |
|  20 | djglkdg      |  NULL |
|  21 | kgdlksgj     |  NULL |
+-----+--------------+-------+

組み合わせた順序:
が複数、またはであり、同時に、優先度とを使用することができる()優先度が高くなります

mysql> SELECT uid,username,state FROM USER WHERE (state IS NULL OR state =1) AND uid <=10;
+-----+----------+-------+
| uid | username | state |
+-----+----------+-------+
|   6 | test3    |     1 |
|   7 | 1        |     1 |
|   8 | dfdg     |  NULL |
|   9 | dgdg     |  NULL |
|  10 | gdg      |  NULL |
+-----+----------+-------+
5 rows in set (0.00 sec)


mysql> SELECT uid,username,state FROM USER WHERE state IS NULL OR state =1 AND uid <=10;
+-----+--------------+-------+
| uid | username     | state |
+-----+--------------+-------+
|   6 | test3        |     1 |
|   7 | 1            |     1 |
|   8 | dfdg         |  NULL |
|   9 | dgdg         |  NULL |
|  10 | gdg          |  NULL |
|  11 | dgdgh        |  NULL |
|  12 | dgklds       |  NULL |
|  13 | dgkljdlkg    |  NULL |
|  14 | fdjwe        |  NULL |
|  15 | gkdlkg       |  NULL |
|  16 | dgdlkjg      |  NULL |
|  17 | fdglkdjg     |  NULL |
|  18 | gkldssjgdsas |  NULL |
|  19 | dgjkljg      |  NULL |
|  20 | djglkdg      |  NULL |
|  21 | kgdlksgj     |  NULL |
+-----+--------------+-------+
16 rows in set (0.00 sec)

勧告:句はANDとOR演算子を持って、使用括弧がクリアパケットでなければなりません使用aは、害に評価順序に過度の信頼、使用括弧を置かず、あいまいさを排除することができます。

IN演算子:
演算子でWHERE句

mysql>  SELECT uid,username,state FROM user WHERE state IN (0,1);
+-----+----------+-------+
| uid | username | state |
+-----+----------+-------+
|   4 | test1    |     0 |
|   3 | fly      |     0 |
|   5 | test2    |     0 |
|   6 | test3    |     1 |
|   7 | 1        |     1 |
+-----+----------+-------+
5 rows in set (0.00 sec)

INそして、OR同様の効果があった、この文は、クエリが0または1の状態であることを示しています。

INは動作して利点を破ります:

  1. Inを使用する場合は、より簡単に(それほどか、以下のオペレータ)を計算するために管理します
  2. より明確かつ直感的に構文IN演算子。
  3. ORで一般に実行速度が速くより。
  4. 文は、他の最大の利点INを含めることができます。SELECT、よりダイナミックなWHERE句の確立を可能にします。

NOTオペレータ:
WHERE句は、遅くとも拒否されたとの条件に使用します。

mysql> select * from tags where tid NOT IN (1,2,3,4,5,6,7,8,9,10);
+-----+---------+
| tid | tagname |
+-----+---------+
|  11 | 猎奇    |
|  12 | 少女    |
|  13 | 魔法    |
|  14 | 历史    |
|  15 | 机战    |
|  16 | 神魔    |
|  17 | 运动    |
|  18 | 励志    |
|  19 | 音乐    |
|  20 | 推理    |
|  21 | 美食    |
|  22 | 催泪    |
|  23 | 职场    |
|  26 | 搞笑    |
+-----+---------+

注:MySQLは使用をサポートNOTDUIをINBETWEENEXISTS句は否定しました。

おすすめ

転載: www.cnblogs.com/flytree/p/12222784.html