MySQLデータベース-SQLステートメント(1)(高レベルのアプリケーション)(詳細なグラフィックとテキスト)


1.準備

1.ソースコードからMySQLをコンパイルしてインストールします

2.例として2つのテーブルを作成します

mysql -uroot -p123123

create database train_ticket;
#创建库

use train_ticket;
create table REGION(region varchar(10),site varchar(20));
create table FARE(site varchar(20),money int(10),date varchar(15));
#创建表

desc REGION;
desc FARE;
#查看表结构

マーク

insert into REGION values ('south','shenzhen');
insert into REGION values ('south','hongkong');
insert into REGION values ('north','beijing');
insert into REGION values ('north','tianjin');
#在表一中插入数据
select * from REGION;
#查看表中的所有数据

マーク

insert into FARE values ('shenzhen',1000,'2021-01-30');
insert into FARE values ('hongkong',1500,'2021-01-30');
insert into FARE values ('beijing',800,'2021-01-30');
insert into FARE values ('tianjin',500,'2021-01-30');
insert into FARE values ('hongkong',2000,'2021-02-05');
select * from FARE;

マーク


2つのSQLステートメントの高レベルの使用

1.SELECT

  • テーブルの1つまたは複数のフィールドにすべてのデータを表示します
  • 使用法:
SELECT 字段 FROM 表名

例:
select region from REGION;
select money from FARE;

マーク

2.DISTINCT

  • 重複データを表示せず、重複を削除します
  • 使用法:
ELECT DISTINCT 字段 FROM 表名

例:
select distinct region from REGION;
select distinct date from FARE;

マーク

3.どこで

  • 条件付きクエリ
  • 使用法:
SELECT 字段 FROM 表名 WHERE 条件

例:
select site from FARE where money > 1000;
select site from FARE where money = 1000;
select site from FARE where money < 1000;

マーク

4.AND、または

  • そしてそしてまたは
  • 使用法:
SELECT 字段 FROM 表名 WHERE 条件1 [AND|OR] (条件2);

例:
select site from FARE where money > 800 and (money < 2000);
select site,money from FARE where money < 600 or (money < 2100 and money >700);
select site,money,date from FARE where money >= 500 and (date < '2021-02-07' and moneyy < 1000);

マーク

5.IN

  • 既知の情報を表示する
  • 使用法:
SELECT 字段 FROM 表名 WHERE 字段 IN ('值1','值2',...);

例:
select site,money from FARE where money in (1500,500);
select money,date from FARE where money in (800,2000);

マーク

6.間

  • 2つの値の範囲内でデータを表示する
  • 使用法:
SELECT 字段 FROM 表名 WHERE 字段 BETWEEN '值1' and '值2';

例:
select * from FARE where money between 500 and 2000;
select * from FARE where money between 666 and 1888;

マーク

7.ワイルドカード(LIKE)

  • 通常、ワイルドカードはLIKEと一緒に使用されます
  • %:パーセント記号は、ゼロ、1つ以上の文字を意味します
  • _:アンダースコアは単一の文字を表します
  • LIKE:パターンを照合して情報を見つけるために使用されます
  • 使用法:
SELECT 字段 FROM 表名 WHERE 字段 LIKE ‘模式’;

例:
select * from FARE where site LIKE 'be%';
select * from FARE where site LIKE 'ho%';

マーク

select site,money from FARE where site LIKE '%jin_';
select site,money from FARE where site LIKE '%kon_';

マーク

8.注文者

  • キーワードで並べ替え
  • 使用法:
SELECT 字段 FROM 表名 [WHERE 条件] ORDER BY 字段 [ASC,DESC];
#ASC:按照升序进行排序,默认的排序方式
#DESC:按照降序进行排序

例:
select * from FARE order by money desc;
select * from FARE order by money asc;

マーク

select date,money from FARE order by money desc;
select date,money from FARE where money > 999 order by money asc;

マーク


三、機能

1.数学関数

  • 具体的な使用法を次の表に示します。
関数 説明
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の値を返します
ceil(x) x以上の最小の整数を返します
床(x) x以下の最大の整数を返します
最大(x1、x2…) コレクション内の最大値を返します
east(x1、x2…) セット内の最小値を返します
  • 例:
select abs(-1),rand(),mod(5,3),power(2,3),round(1.567);
select sqrt(9),truncate(1.2345,2),ceil(1.3);
floor(1.7),greatest(1,2,3,4,5),least(1,2,3,4,5);

マーク

2.集計関数

  • 具体的な使用法を次の表に示します。
関数 説明
avg() 指定された列の平均値を返します
カウント() 指定された列のNULL以外の値の数を返します
最小() 指定された列の最小値を返します
max() 指定された列の最大値を返します
sum(x) 指定された列のすべての値の合計を返します
  • 例:
select avg(money) from FARE;
select count(money) from FARE;
select min(money) from FARE;
select max(money) from FARE;
select sum(money) from FARE;

マーク

3.文字列関数

関数 説明
トリム() 指定された形式なしで値を返します
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
  • [位置]:値は、LEADING(開始)、TRAILING(終了)、BOTH(開始と終了)のいずれかになります。
  • [削除する文字列]:文字列の最初、最後、または最初と最後から削除する文字列。デフォルトはスペースです。
  • 例:
select trim(leading 'be' from 'beijing');
select trim(trailing '--' from 'beijing--');
select trim(both '--' from '--shenzhen--');

マーク

select concat(region,site) from REGION where region = 'south';
select concat(region,' ',site) from REGION where region = 'south';

マーク

select substr(money,1,2) from FARE;
select substr(money,1,3) from FARE;

マーク

select length(site) from FARE;
select length(date) from FARE;

マーク

select replace(site,'zhen','--') from FARE;
select replace(site,'on','--') from FARE;

マーク

select upper(site) from FARE;
select upper(region) from REGION;

マーク

select lower('ABCDERG');

マーク

select left(site,2) from FARE;
select right(site,3) from FARE;

マーク

select repeat(site,2) from FARE;
select repeat(region,3) from REGION;

マーク

select space(2);

マーク

select strcmp(100,200);
select strcmp(200,100);
select strcmp(200,200);

マーク

select reverse(site) from FARE;
select reverse(date) from FARE;

マーク

4. '||'コネクタ

  • mysql構成ファイルでsql_modeがオンになっていて、PIPES_AS_CONCATがオンになっている場合、「||」はOR演算子ではなく文字列連結演算子と見なされます。
  • 文字列連結関数Concatに似ています。これは、Oracleデータベースの使用と同じです。
    マーク
mysql -uroot -p123123
use train_ticket;

select region || ' ' || site from REGION where region = 'north';
select site || ' ' || money || ' ' || date from FARE;

マーク

5.GROUP BY

  • BYの後の列のクエリ結果は要約およびグループ化され、通常は集計関数と組み合わされます
  • GROUP BYには原則があります。つまり、SELECTの後のすべての列で、集計関数を使用しない列はGROUPBYの後に表示される必要があります。
  • 使用法:
select site,sum(money) from FARE group by site;
select site,sum(money),date from FARE group by site order by money desc;
select site,count(money),sum(money),date from FARE group by site order by money desc;

マーク

6.持っている

  • GROUP BYステートメントによって返されるレコードのセットをフィルタリングするために使用され、通常はGROUPBYステートメントと組み合わされます
  • HAVINGステートメントの存在は、WHEREキーワードを集計関数と組み合わせて使用​​できないという欠点を補います。
  • 関数列のみが選択されている場合、GROUPBY句は必要ありません。
  • 使用法:
SELECT 字段1,SUM(字段2) FROM 表名 GROUP BY 字段1 HAVING(函数条件);

例:
select site,count(money),sum(money),date from FARE group by site having sum(money) >=800;

マーク

7.エイリアス

  • フィールドエイリアスとテーブルエイリアスに使用されます
  • 使用法:
SELECT “表格別名”.“字段1” [AS] “字段1別名” FROM “表格名” [AS] “表格別名”;

例:
select RE.region  AS reg, count(site) from REGION AS RE group by reg;

select FA.site AS si,sum(money),count(money),date AS da from FARE AS FA group by si;

マーク

8.サブクエリ

  • テーブルを接続し、WHERE句またはHAVING句に別のSQLステートメントを挿入します
#可以是符号的运算符
#例:=、>、<、>=、<=

#也可以是文字的运算符
#例:LIKE、IN、BETWEEN

例:
select A.site,region from REGION AS A where A.site in(select B.site from FARE AS B where money<2000);

select B.site,money,date from FARE AS B where site in(select A.site from REGION AS A where region = 'north');

マーク

おすすめ

転載: blog.csdn.net/weixin_51486343/article/details/113771762