MySQLデータベースの高度なSQLステートメント
準備オーケー
use test;
create table city (Region char (20),Name char(20));
insert into city values('south','shanghai');
insert into city values ('south','hunan');
insert into city values ('north','beijing');
insert into city values ('north','tianjin');
create table tickets (Store_Name char(20),Sales int(10),Date char(10));
insert into tickets values('beijing','1250','2021-1-28');
insert into tickets values ('tianjin','750','2021-1-29');
insert into tickets values('beijing','500','2021-1-30');
insert into tickets values('shanghai','1800','2021-1-31');
1つは、MySQLの高度なSQLステートメントです。
選択する
テーブルの1つまたは複数のフィールドにすべてのデータを表示します
構文:SELECT“ field” FROM“ table name”;
例:select Store_Name FROM tickets;
DISTINCT
重複データを表示しません。
構文:SELECT DISTINCT“ field” FROM“ table name”;
例:select distinct Store_Name FROM tickets;
どこ
条件付きクエリ
構文:SELECT "field" FROM "table name" WHERE "condition";
例:select Store_Name FROM tickets where Sales > 1500;
およびまたは
およびまたは
構文:SELECT "field" FROM "table name" WHERE "condition 1" {[AND | OR] "condition 2"} +;
例:select Store_Name FROM tickets where Sales > 1500 or (Sales < 1000 and Sales > 500);
に
既知の値のデータを表示します
構文:SELECT“ field” FROM“ table name” WHERE“ field” IN( 'value 1'、 'value 2'、…);
select * from tickets where Store_Name in('tianjin','shanghai');
の間に
2つの値の範囲でデータを表示します。
構文:SELECT "field" FROM "table name" WHERE "field" BETWEEN'value 1'AND'value 2 ';
select * from tickets where Date between '2021-1-29' and '2021-1-31';
ワイルドカード
通常、ワイルドカードはLIKE
%と一緒に使用されます:パーセント記号はゼロ、1つ以上の文字を意味します
_:アンダースコアは単一の文字
「A_Z」を意味します:「A」で始まり、任意の値を持つ別の文字で、「Z」で始まるすべての文字は終了文字列。たとえば、「ABZ」と「A2Z」はどちらもこのパターンに準拠していますが、「AKKZ」は準拠していません(AとZの間に1つではなく2つの文字があるため)。
'ABC%' :: 'ABC'で始まるすべての文字列。たとえば、「ABCD」と「ABCABC」の両方がこのパターンに準拠しています。
'%XYZ': 'XYZ'で終わるすべての文字列。たとえば、「WXYZ」と「ZZXYZ」の両方がこのパターンに準拠しています。
'%AN%':パターン 'AN'を含むすべての文字列。たとえば、「LOSANGELES」と「SANFRANCISCO」はどちらもこのモデルに準拠しています。
「_AN%」:2番目の文字が「A」で3番目の文字が「N」のすべての文字列。たとえば、「SAN FRANCISCO」はこのモデルに適合しますが、「LOSANGELES」はこのモデルに適合しません。
お気に入り
パターンに一致して、必要なデータを見つけます。
構文:SELECT "field" FROM "table name" WHERE "field" LIKE {pattern};
select * from tickets where Store_Name like '%an%';
ORDER BY
キーワードで並べ替え
構文:SELECT "column" FROM "table name" [WHERE "condition"] ORDER BY "column" [ASC、DESC];
#ASCは、デフォルトの並べ替え方法である昇順で並べ替えられます。
#DESCは降順でソートされます。
select Store_Name,Sales,Date from tickets order by Sales desc;
select Store_Name,Sales,Date from tickets order by Sales asc;
二、機能
数学関数
abs(x) | xの絶対値を返します |
---|---|
rand() | 0から1までの乱数を返します |
mod(x、y) | xをyで割った余りを返します |
パワー(x、y) | xをyの累乗に戻します |
round(x) | xに最も近い整数を返します |
round(x、y) | 丸め後、xのyの小数点以下の桁数を維持します |
sqrt(x) | xの平方根を返します |
truncate(x、y) | 小数点以下y桁に切り捨てられた数値xの値を返します(小数点以下のy桁のみが保持されます) |
ceil(x) | x以上の最小の整数を返します |
床(x) | x以下の最大の整数を返します |
最大(x1、x2…) | コレクション内の最大値を返します |
最小(x1、x2…) | セット内の最小値を返します |
例:
集計関数
avg() | 指定された列の平均値を返します |
---|---|
カウント() | 指定された列のNULL以外の値の数を返します(空でない行番号) |
最小() | 指定された列の最小値を返します。 |
max() | 指定された列の最大値を返します |
sum(x) | 指定された列のすべての値の合計を返します |
例:
select avg(Sales) from tickets;
select count(Sales) from tickets;
select min(Sales) from tickets;
select max(Sales) from tickets;
select sum(Sales) from tickets;
文字列関数
トリム() | 指定された形式なしで値を返します |
---|---|
concat(x、y) | 提供されたパラメーターxおよびyを文字列に連結します |
substr(x、y) | 文字列xのy番目の位置から文字列を取得します。これはsubstring()関数と同じ効果があります。 |
substr(x、y、z) | 文字列xのy番目の位置から始まる長さzの文字列を取得します |
長さ(x) | 文字列xの長さを返します |
replace(x、y、z) | 文字列xの文字列zを文字列yに置き換えます |
アッパー(x) | 文字列xのすべての文字を大文字に変更します |
lower(x) | 文字列xのすべての文字を小文字に変更します |
left(x、y) | 文字列xの最初のy文字を返します |
right(x、y) | 文字列xの最後のy文字を返します |
繰り返し(x、y) | 文字列をxy回繰り返します |
スペース(x) | Xスペースが返されます |
strcmp(x、y) | xとyを比較すると、戻り値は-1,0,1になります。 |
reverse(x) | 逆文字列x |
例:
select trim(leading 'ab' from 'abcde');
select trim(trailing 'de' from 'abcde');
select trim(both 'a' from 'abcde');
select trim(both 'e' from 'abcde');
select concat(Region,Name) from city where Region = 'north';
select substr(Store_Name,5,2) from tickets;
select length(Name) from city;
select replace(Region,'th','abc') from city;
select upper(Name) from city;
select lower(ABCDE);
select left(Name,2) from city;
select right(Name,2) from city;
select repeat(Name,3) from city;
select space(3);
select strcmp(10,50);
select strcmp(50,10);
select strcmp(10,10);
select reverse(Region) from city;
つづく...