MySQL データベースは SQL ステートメントを知っている必要があります (拡張バージョン)

MySQL データベースは SQL ステートメントを知っている必要があります (拡張バージョン)

拡張版です。質問とSQL文は以下の通りです。

ユーザー テーブルを作成し、id、name、gender、sal フィールドを設定します。id が主キーになります。

ユーザーが存在する場合はテーブルを削除します。 
ユーザーが存在しない場合はテーブルを作成します( 
  id int(5) 主キー auto_increment, 
  名前 varchar(10) 一意 NULLではない、   
  性別varchar(1) nullではない、 
  sal int(5) は null ではない 
); 
ユーザーに挿入(名前、性別、給与)値('AA'、'男'、1000); 
insert into users(name,gender,sal) values('BB','女',1200);

--------------------------------------------------------------------------------------

1対1: AA の ID 番号は何ですか?

ユーザーが存在する場合はテーブルを削除します。 
ユーザーが存在しない場合はテーブルを作成します( 
  id int(5) 主キー auto_increment, 
  名前 varchar(10) 一意 NULLではない、   
  性別varchar(1) nullではない、 
  sal int(5) は null ではない 
); 
ユーザーに挿入(名前、性別、給与)値('AA'、'男'、1000); 
insert into users(name,gender,sal) values('BB','女',1200); 
カードが存在する場合はテーブルを削除します。 
カードが存在しない場合はテーブルを作成します( 
  id int(5) 主キー auto_increment, 
  num int(3) nullでないユニーク、 
  loc varchar(10) が null ではない、 
  uid int(5) nullでないユニーク、 
  制約 uid_fk 外部キー(uid) はユーザー(id) を参照します 
); 
cards(num,loc,uid) に values(111,'北京',1) を挿入します。 
cards(num,loc,uid) に values(222,'上海',2) を挿入します。

[注: inner join は内部結合を意味します]

u.name "名前",c.num "ID番号"を選択します 
ユーザーから u 内部結合カード c 
u.id = c.uid の場合 
ここで、u.name = 'AA'; 
-- 
u.name "名前",c.num "ID番号"を選択します 
ユーザーから u 内部結合カード c 
u.id = c.uid の場合 
ここで、name = 'AA';

---------------------------------------------

1対多: 「開発部門」の従業員に問い合わせる

グループテーブルを作成する

グループが存在する場合はテーブルを削除します。 
グループが存在しない場合はテーブルを作成します( 
  id int(5) 主キー auto_increment, 
  名前varchar(10) nullでない 
); 
insert into groups(name) values('開発部門'); 
グループに挿入(名前) 値('営業部')

empsテーブルを作成する

emps が存在する場合はテーブルを削除します。 
empsが存在しない場合はテーブルを作成します( 
  id int(5) 主キー auto_increment, 
  名前varchar(10)がnullでない、 
  gid int(5) が null でない、 
  制約 gid_fk 外部キー(gid) はグループ(id) を参照します 
); 
emps(name,gid) に値 ('哈哈',1) を挿入します。 
emps(name,gid) に値 ('呵',1) を挿入します。 
emps(name,gid) に値 ('嘻嘻',2) を挿入します。 
emps(name,gid) に値 ('笨笨',2) を挿入します。

開発部門にどの従業員がいるか確認する

g.name "部門"、e.name "従業員" を選択 
グループ g 内部結合 emps e 
g.id = e.gid の場合 
g.name = '開発部門'; 
-- 
g.name "部門"、e.name "従業員" を選択 
グループ g 内部結合 emps e 
g.id = e.gid の場合 
g.name = '開発部門';

------------------------------------------------------

多対多: 「Zhao」が教えた生徒を問い合わせる

学生テーブルを作成する

学生が存在する場合はテーブルを削除します。 
存在しない学生のテーブルを作成する( 
  id int(5) 主キー auto_increment, 
  名前varchar(10) nullでない 
); 
students(name) に values('哈哈') を挿入します。 
students(name) に values('嘻嘻') を挿入します。

教師テーブルを作成する

教師が存在する場合はテーブルを削除します。 
教師が存在しない場合はテーブルを作成します( 
  id int(5) 主キー auto_increment, 
  名前varchar(10) nullでない 
); 
教師名に値('赵')を挿入します。 
教師名に値('刘')を挿入します。

middles テーブルを作成します。主キー (sid、tid) は、結合主キーを表します。2 つのフィールドは一意である必要があります。

中間部分が存在する場合はテーブルを削除します。 
テーブルが存在しない場合は作成します。 
  sid int(5)、 
  制約sid_fk外部キー(sid)は学生(id)を参照します。 
  tid int(5)、 
  制約tid_fk外部キー(tid)は教師(id)を参照します。 
  主キー(sid,tid)  
); 
middles(sid,tid) の値(1,1) に挿入します。 
中間(sid,tid)の値(1,2)に挿入します。 
middles(sid,tid) の値(2,1) に挿入します。 
middles(sid,tid) の値(2,2) に挿入します。

「趙」が教えた生徒を問い合わせる

t.name "先生"、s.name "生徒" を選択 
学生から s 内部結合 中間者 m 内部結合 教師 t 
(s.id=m.sid) および (m.tid=t.id) の場合 
ここで、t.name = 'Zhao'; 
-- 
t.name "先生"、s.name "生徒" を選択 
学生から s 内部結合 中間者 m 内部結合 教師 t  
(s.id=m.sid) および (t.id=m.tid) について 
ここで、t.name = "Zhao";

--------------------------------------------------------------------------------------------------------

給与が5,000人民元以上の従業員は「高給」とマークされ、それ以外の従業員は「初任給」とマークされます。

給与がNULLの従業員を「未払い」として識別します

給与が5,000人民元以上の従業員は「高給」とマークされ、それ以外の従業員は「初任給」とマークされます。

給与が7,000元の従業員は「高給」、給与が6,000元の従業員は「中給」、給与が5,000元の従業員は「初任給」、それ以外の従業員は「試用給与」とマークされます。

---------------------------------------------------------------------------------------------------------

内部結合(等価結合):顧客名、注文番号、注文価格を照会する

[注: customers c inner join orders o は別名を使用しているため、今後は o が orders を表します]

c.name「顧客名」、o.isbn「注文番号」、o.price「注文価格」を選択します。 
顧客から c 内部結合注文 o 
c.id = o.customers_id の場合; 
-- 
c.name「顧客名」、o.isbn「注文番号」、o.price「注文価格」を選択します。 
顧客からc内部結合オーダーo 
c.id = o.customers_id の場合;

on+ 2つのテーブルを接続するための条件。1つのテーブルの主キーと別のテーブルの外部キー

内部結合: 結合条件に従って両方のテーブルに存在するレコードのみを照会できます。これは、数学の交差に多少似ています。

----------------------------------------------------

外部接続: 顧客別にグループ化し、各顧客の名前と注文数を照会します。

外部結合: 結合条件に基づいて両方のテーブルのレコードを照会したり、他のテーブルが条件を満たしていない場合でも 1 つのテーブルのレコードを照会したりできます。

外部結合は次のように分類できます。

<左外部結合: 左側を参照として、左外部結合は c.name、count(o.isbn) を選択することを意味します。 
顧客から c 左外部結合注文 o 
c.id = o.customers_idの場合 
c.name でグループ化します。 
-- 
>右外部結合: 右側を参照として、右外部結合は c.name、count(o.isbn) を選択することを意味します。 
注文から o 右外部結合顧客 c 
c.id = o.customers_idの場合 
c.name でグループ化します。

左外部結合は、左側のすべてのコンテンツが表示されることを意味します。たとえば、顧客c左外部結合は、顧客の列のすべてのコンテンツが見つかることを意味します。

------------------------------------------------------
自己参加: AA の上司が EE であることを確認します。自分自身を 2 つのテーブルとして考えてみましょう。両側に1つずつ

users.ename、bosss.ename を選択 
EMPユーザーからEMPボスへの内部結合 
users.mgr = bosss.empno; の場合 
users.ename、bosss.ename を選択 
EMPユーザーからEMPボスへの左外部結合 
users.mgr = bosss.empno; の場合

-------------------------------------------------------------------------------------------------
MySQL の機能のデモンストレーション (クエリ マニュアル)

日付と時刻の機能:

select addtime('2016-8-7 23:23:23','1:1:1'); 時間の追加 select current_date(); 
current_time() を選択します。 
今すぐ選択(); 
年を選択( now() ); 
月を選択( now() ); 
日を選択( now() ); 
datediff('2016-12-31',now()); を選択します。

文字列関数:

charset('哈哈')を選択します。 
concat('hello','haha','ma') を選択します。 
instr('www.baidu.com','baidu') を選択します。 
部分文字列('www.baidu.com',5,3)を選択します。

数学関数:

bin(10)を選択します。 
select floor(3.14); //3.14 より小さい最大の整数 --- 正の 3 
select floor(-3.14); //-3.14 より小さい最大の整数 --- 負の 4 
select ceiling(3.14); //3.14より大きい最小の整数 --- 正の4 
select ceiling(-3.14);//-3.14 より大きい最小の整数 --- 負の 3、整数値である必要があります select format(3.1415926,3); 小数点以下 3 桁を残し、切り上げます select mod(10,3);// 余りを取得します select rand();//

暗号化機能:

md5('123456')を選択します。

32ビットの16進数e10adc3949ba59abbe56e057f20f883eを返します。

MySQL のフロー制御ステートメントのデモンストレーション

json を使用します。 
ユーザーが存在する場合はテーブルを削除します。 
ユーザーが存在しない場合はテーブルを作成します( 
  id int(5) 主キー auto_increment, 
  名前 varchar(10) null ではない 一意、 
  サル int(5) 
); 
ユーザーに(name,sal)値('哈哈',3000)を挿入します。 
ユーザーに(名前、給与)値('呵'、4000)を挿入します。 
ユーザーに挿入します(名前、給与) 値('嘻嘻'、5000); 
ユーザーに挿入します(name,sal) values('笨笨',6000); 
ユーザーに挿入(name,sal) values('明明',7000); 
ユーザーに挿入します(名前、sal) values('丝丝',8000); 
ユーザーに(name,sal)値('君君',9000)を挿入します。 
ユーザーに挿入します(名前、給与) 値('赵赵'、10000); 
insert into users(name,sal) values('無名',NULL);

給与が5,000人民元以上の従業員は「高給」とマークされ、それ以外の従業員は「初任給」とマークされます。

name "名前"、sal "給与" を選択 
    if(sal>=5000,"最高給与","初任給") "説明" 
ユーザーから;

給与がNULLの従業員を「未払い」として識別します

名前を選択 "name",ifnull(sal,"unpaid") "salary" 
ユーザーから;

給与が5,000人民元以上の従業員は「高給」とマークされ、それ以外の従業員は「初任給」とマークされます。

name "名前"、sal "給与" を選択 
    sal>=5000 の場合、「高給」 
    else "初任給" end "説明" 
ユーザーから;

給与が7,000元の従業員は「高給」、給与が6,000元の従業員は「中給」、給与が5,000元の従業員は「初任給」、それ以外の従業員は「試用給与」とマークされます。

name "名前"、sal "給与" を選択 
    ケースサル 
      3000なら「低賃金」 
      4000のときは「初任給」 
      5000の場合は「試用給与」 
      6000なら「中間給与」 
      7000なら「給料はもっといい」 
      8000なら「悪くない給料」 
      9000なら「高給」 
      そうでなければ「高額給与」 
    「説明」終了 
ユーザーから;

上記は、編集者が紹介したMySQlデータベース(拡張バージョン)の必須SQL文です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • C を使用して MySQL データベースで SQL 文を実行する方法
  • MySQL データベース操作に役立つ 6 つの SQL ステートメントの概要
  • MySql データベース テーブル変更 SQL ステートメント セット
  • MySQL データベースの基本的な SQL ステートメントの概要
  • MySQL 5.7.14 のダウンロードとインストールのグラフィックチュートリアルと MySQL データベースステートメントの入力
  • MySQLデータベースの挿入および更新ステートメントの詳細な説明
  • MySQLデータベースでのクエリステートメントの最適化の詳細な説明
  • MySQL データベースの名前変更ステートメントの共有
  • MySQL データベースにおける INSERT、UPDATE、DELETE、および REPLACE ステートメントの使用方法の詳細な説明
  • MySQL データベースでよく使用される SQL ステートメントの詳細と概要

<<:  Linux コマンドラインでパケットをキャプチャするために tcpdump を使用するいくつかの機能

>>:  NodeJSとブラウザにおけるこのキーワードの違い

推薦する

Dockerコンテナイメージからコードを復元する手順

コードが失われ、コンテナ内で実行されているイメージから必要なコードを回復する必要がある場合があります...

EclipseにTomcatサーバー設定を追加する方法

1. ウィンドウ -> 設定を選択してEclipseの設定パネルを開きます。 2. 「設定」ウ...

Ubuntu 20.04 CUDA & cuDNN のインストール方法 (グラフィカル チュートリアル)

CUDA インストール cuda をダウンロードサポートされているcudaバージョンを表示するには...

Linux 時間サブシステムの時間表現例の詳細な説明

序文Linux カーネルでは、元のコードとの互換性を保つため、または特定の仕様に準拠するため、また現...

MYSQL8.0.13 無料インストール版 設定チュートリアル例 詳細説明

1. ダウンロード、例として8.0を取り上げますダウンロードアドレス: https://dev.my...

CSSはコンテンツの高さが足りない場合にフッターを自動的に下部に固定します

UI カットのプロセスでは、ページはヘッダー、コンテンツ、フッターの 3 つの部分で構成されることが...

MySQL GROUP_CONCAT 制限の解決

効果: GROUP_CONCAT関数は、フィールド値を文字列に連結することができます。デフォルトの区...

MySQLデータベースのbinlogクリーンアップコマンドの詳細な説明

概要今日は主に、MySQL データベースから binlog ログを正しく削除する方法を紹介します。ロ...

VMware Workstation のインストール Linux システム

始める段階から初心者になるまで、Linux オペレーティング システムは不可欠です。最初のステップは...

Ubuntu 20.04 LTS で Java 開発環境を構成する

Java開発キットjdkをダウンロードするJDK のダウンロード アドレスはhttp://www.o...

C++ を使用して MySQL に接続する方法

C++でMySQLに接続する際の参考情報です。具体的な内容は以下のとおりです。 MySQLCon ク...

乱数、文字列、日付、検証コード、UUIDを生成するMySQLメソッド

目次乱数を生成する0から1までの乱数を生成する指定された範囲内で乱数を生成します6桁のモバイル認証コ...

MySQL でトリガーを無効化および有効化するチュートリアル [推奨]

MYSQL を使用する場合、トリガーがよく使用されますが、不適切な使用によって問題が発生する場合が...

MySQL で乱数を生成し、文字列を連結する方法の例

この記事では、MySQL が乱数を生成し、文字列を連結する方法について例を使用して説明します。ご参考...

vue+rem カスタムカルーセル効果

vue+remを使用したカスタムカルーセルチャートの実装は参考までに。具体的な内容は以下のとおりです...