MySQLデータベースの高度なSQLステートメント(3)

MySQLデータベースの高度なSQLステートメント

ここに画像の説明を挿入

トリムを選択

SELECT TRIM(「元の文字」から「削除する文字」を
配置します); #[位置]:値は、LEADING(開始)、TRAILING(終了)、BOTH(開始と終了)のいずれかになります。
#[文字を削除したい]:文字列の先頭、末尾、または先頭と末尾から削除された文字列。デフォルトはスペースです。

select trim(leading '.' from '..abc..');
select trim(trailing '.' from '..abc..');
select trim(both '.' from '..abc..');

ここに画像の説明を挿入

接続クエリ

修改下表内数据,方便观察
update tickets set Store_Name='hunan' where Sales=500;
insert into city (Region,Name) values('south','fujian');
insert into tickets(Store_Name,Sales,Date) values('chengdu','2000','2021-2-01');

ここに画像の説明を挿入

内部結合(等しい値の結合):2つのテーブルで等しい結合フィールドを持つ行のみを返します。
構文:SELECTフィールドFROMテーブル1 INNERJOINテーブル2ONテーブル1。フィールド=テーブル2。フィールド。

左結合(左結合):左テーブルのすべてのレコードと、結合フィールドが等しい右テーブルのレコードを含む戻り値。
構文:SELECTフィールドFROMテーブル1 LEFTJOINテーブル2ONテーブル1。フィールド=テーブル2。フィールド;

右結合(右結合):結合フィールドと等しい、右テーブルのすべてのレコードと左テーブルのレコードを含む戻り値。
構文:SELECTフィールドFROMテーブル1 RIGHTJOINテーブル2ONテーブル1。フィールド=テーブル2。フィールド;

select * from city A inner join tickets B on A.Name = B.Store_Name;
select * from city A left join tickets B on A.Name = B.Store_Name;
select * from city A right join tickets B on A.Name = B.Store_Name;

ここに画像の説明を挿入

ビューの作成

ビューは、仮想テーブルまたは保存されたクエリとして扱うことができます。
ビューとテーブルの違いは、テーブルには実際に保存されたデータがあり、ビューはテーブル上に構築された構造であり、実際にはデータを保存しないことです。

ユーザーが終了するか、データベースとの接続が切断されると、一時テーブルは自動的に消え、ビューは消えません。

ビューにはデータが含まれず、その定義のみが保存されます。その目的は通常、複雑なクエリを単純化することです。たとえば、複数のテーブルを接続してクエリを実行するだけでなく、統計的な並べ替えやその他の操作も実行する場合、SQLステートメントを作成するのは非常に面倒です。ビューを使用して複数のテーブルを接続してから、このビューでクエリ操作を実行します。テーブルのようにクエリは同じで、非常に便利です。

構文:CREATEVIEWビューテーブル名ASSELECTステートメント。

select A.Region,sum(B.Sales) from city as A inner join tickets as B on A.Name = B.Store_Name group by Region;
create view C as select A.Region,sum(B.Sales) from city as A inner join tickets as B on A.Name =  B.Store_Name group by Region;

ここに画像の説明を挿入

連合

ユニオン、2つのSQLステートメントの結果を組み合わせると、2つのSQLステートメントによって生成されるフィールドは同じデータ型である必要があります

UNION:生成された結果のデータ値は繰り返されず、フィールドの順序に従ってソートされます。
構文:[SELECTステートメント1] UNION [SELECTステートメント2];

select Region from city union select Store_Name from tickets;

ここに画像の説明を挿入

UNION ALL:重複があるかどうかに関係なく、生成された結果のすべてのデータ値を一覧表示します。
構文:[SELECTステートメント1] UNION ALL [SELECTステートメント2];

select Region from city union all select Store_Name from tickets;

ここに画像の説明を挿入

交差値

簡単に観察できるようにテーブル構造とデータレコードを変更します

alter table city change Name Store_Name char(20);
delete from city where Store_Name='fujian';
insert into tickets(Store_Name,Sales,Date) values('chengdu',2000,'2021-2-01');

ここに画像の説明を挿入

2つのSQLステートメントの結果の共通部分を取ります

select A.Store_Name from city as A inner join tickets as B on A.Store_Name = B.Store_Name;
select A.Store_Name from city as A inner join tickets as B using(Store_Name);

ここに画像の説明を挿入

select Store_Name from city union all select Store_Name from tickets;
 select Store_Name from(select Store_Name from city union all select Store_Name from tickets) A group by A.Store_Name having count(*) > 1;

ここに画像の説明を挿入
2つのテーブルに重複する行がなく、実際に交差がある場合

select Name from (select Name from city union all select Store_Name from tickets) A group by A.Name having count(*) > 1;

ここに画像の説明を挿入
補足:
ここに画像の説明を挿入
重複することなく、2つのSQLステートメントの結果の共通部分を取得します

select Store_Name from(select A.Store_Name from city A inner join tickets B on A.Store_Name =B.Store_Name) C group by C.Store_Name;
select distinct A.Store_Name from city as A inner join tickets as B using(Store_Name); 

ここに画像の説明を挿入

select distinct A.Store_Name from city as A inner join tickets as B using(Store_Name);
select distinct Store_Name from city where (Store_Name) in (select Store_Name from tickets);
select distinct A.Store_Name from city A left join tickets B using(Store_Name) where B.Store_Name is not null;

ここに画像の説明を挿入

交差値なし

最初のSQLステートメントの結果、2番目のSQLステートメントとの交差がなく、重複がない結果を表示します

select distinct Store_Name from tickets where(Store_Name) not in (select Store_Name from city);

ここに画像の説明を挿入

select A.*,B.* from tickets A left join city B using(Store_Name);
select Store_Name from tickets A left join city B using(Store_Name) where B.Store_Name is null;
select distinct Store_Name from tickets A left join city B using(Store_Name) where B.Store_Nameore_Name is null;

ここに画像の説明を挿入

場合

SQLは、IF-THEN-ELSEなどのロジックのキーワードとして使用されます。
構文:
SELECT CASE( "column name")
WHEN "Condition 1" THEN "Result 1"
WHEN "Condition 2" THEN "Result2"

[ELSE "結果N "]
END
FROM"テーブル名 ";

「条件」は、値または式にすることができます。ELSE句は必要ありません。

select case Store_Name
when 'beijing' then Sales + 1000
when 'shanghai' then Sales - 1000
else Sales * 10
end
TEST,Store_Name                                                                        
from tickets;

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_51613313/article/details/114001187