MySQLとSQL言語基礎学習(二)
28045 ワード
二SQL言語の勉強
SQL(Structure Query Language)言語は、構造化クエリ言語です.SQL言語は次のように分類できます.DQL(Data Query Language):データ問合せ言語-select DML(Data Manipulate Language):データ操作言語——insert,update,delete DDL(Data Define Language):データ定義言語——create,alter,drop TCL(Transaction Control Language):トランザクション制御言語-commit,rollback (一)DQL(Data Query Language)言語の学習ベースクエリーselectクエリーオブジェクト【fromテーブル名】javaで使用する:System.out.println(印刷オブジェクト);①クエリの結果は仮想的なテーブルであり、メモリに実際に存在するテーブルではない②クエリするものは定数値、式、フィールドまたは関数の例:
補足:条件クエリーselectクエリーリストfromテーブル名whereフィルタ条件フィルタ条件元のテーブルのデータをフィルタ条件に基づいてフィルタリングし、必要なデータフィルタ条件の分類をクエリーします:1条件式:salary>10000条件演算子のように:>,<,=,<=,>=,!=,<>,<=,<>,<=>,<=>,<=>,<=>②論理式:salary>1000&&salary<12000論理演算子あり:|,&,!,and,not,or 3ファジイクエリ:select name from employees where name like'%a%';like,between and,in,is null/is not null%と_ワイルドカードとして使用すると、前者は任意の複数の文字にマッチすることができ、後者は任意の単一文字にしかマッチできない注意is nullと<=>を区別する区別is nullは、ある通常タイプの値であるか否かを判断するのに使用できず、空<=>であるか否かを判断するのに使用できる通常クラス値またはnull値 ソートクエリーselectクエリーリストfromテーブル名order byソート条件【asc|desc】ソートリストは、単一フィールド、複数フィールド、関数、式、別名をサポートします.order by文の場所一般的にクエリ文の最後(limit文以外)の例: SQL共通関数SQLの共通関数javaのメソッドと同様に、コードの再利用性を向上させ、実装の詳細を隠すことができます.呼び出し方法:select関数名(パラメータリスト)1、単行関数(1)文字関数
(2)数学関数
(3)日付関数
(4)フロー制御関数
(5)その他の関数
二、グループ関数
特徴:1以上の5つのパケット関数はcount()を除いてnull値をすべて無視する.2 sumとavgは一般的に処理数値型、max、min、countで任意のデータ型を処理することができる.③いずれもdistinctと組み合わせて使用することができ、重量除去後の結果を統計するために使用される.④countのパラメータはフィールド、定数値(1)をサポートできますが、count(*)を使用することをお勧めします.パケットクエリselectパケット関数、パケット後のフィールドfromテーブル【whereフィルタ条件】groupbyパケットフィールド【havingパケット後のフィルタ】【order byソートリスト】
特徴:1単一フィールドでグループ化できる;②グループ関数とともに検索するのは、グループ化後のフィールドが望ましい.③グループ化前にフィルタリングし、元のテーブルに対してwhereキーワードを使用する.グループ化後にフィルタリングし、グループ化後の結果セットに対してhavingキーワードを使用する.④複数のフィールドでグループ化でき、フィールド間はカンマで区切られる.⑤ソートをサポートする;⑥havingとgroupbyの後に別名を使うことができます接続クエリークエリークエリー複数のテーブルのフィールドがクエリーに含まれている場合、複数のテーブルをクエリーしても有効な接続条件が追加されていない場合、複数のテーブルのすべての行が完全に接続されます.すなわち、デカルト積接続(1)sql 92接続が発生します.②非等値接続③自己接続④一部の外部接続selectクエリーリストfrom表1別名、表2別名where接続条件【andフィルタ条件】【group byパケットフィールド】【havingパケット後フィルタ条件】【order byソート条件】特徴:一般的には表から別名とすることができ、複数の表の順序の間で置き換えることができ、n表の接続には少なくともn-1個の接続条件が必要である.等値接続の結果、マルチテーブルの交差部分(2)sql 99【推奨使用】:1内接続:等値、非等値、自己接続;②外部接続:左外部、右外部、全外部接続(MySQLはサポートしていません)①内部接続selectクエリーリストfromテーブル1別名【inner】joinテーブル2別名on接続条件【inner】joinテーブル3別名on接続条件…whereフィルタ条件group byパケットリストhavingパケット後フィルタ条件order byソート条件limit文例:
特徴:内部接続中の表の順序は変えることができて、内部接続の結果=多表の交差、n表接続は少なくともn-1個の接続条件が必要です②外部接続selectクエリーリストfrom表1別名left|right|full【outer】join表2別名on接続条件whereフィルタ条件group byパケット条件havingパケット後のフィルタ条件order byソートリスト
例
特徴:クエリーの結果はメインテーブルのすべてのローで、テーブルの一致と一致する精から一致するローが表示され、テーブルから一致するデータがない場合nullが表示されます.left joinの左側のテーブルはメインテーブルで、逆も同様です.外部ジョイン・クエリーは、一般的に、交差部分以外の一致しない行をクエリーするために使用されます.
③クロスコネクションselectクエリーリストfromテーブル1別名cross joinテーブル2別名デカルト積に類似サブクエリが他の文にネストするselect文をサブクエリまたは内部クエリ外部の文と呼ぶのはinsert、update、delete、selectなどであるが、一般的にselectが外部文としてよく見られる外部文がselectである場合、外部クエリーまたはメインクエリー・スケール量子クエリー(単行サブクエリー):結果セットは1行1列のサブクエリー(複数行サブクエリー):結果セットは1列の複数行サブクエリ:結果セットは1行の複数リストサブクエリ:結果セットは複数列の複数行①select後のサブクエリは、スケール量子クエリのみをサポート②from後のサブクエリサポートテーブルサブクエリインスタンス
③whereまたはhavingの後には、標量子クエリー、行サブクエリー、列サブクエリーの例がサポートされています.ページングクエリクエリクエリクエリ結果エントリ数が多すぎて、1ページの表示が不完全でページング表示が必要な場合
表示するページ数をpageとし、各ページのエントリ数をsize selectクエリーリストfromテーブルlimit size*(page-1)、size連合クエリーは、複数回のクエリー結果を1つの印刷 にマージします.
複数のクエリー文クエリーのカラムタイプは一致する必要があります.複数のクエリ文のカラム数が一致する必要があります.unionは再表示を表し、union allは再表示しないことを表します.統合クエリーを使用すると、複雑なクエリー文を複数のクエリー文に分割できます.複数のテーブルのほぼ同じカラムをクエリーする場合に使用します.
したがってDQL言語の要素は以下のように集約される.
SQL(Structure Query Language)言語は、構造化クエリ言語です.SQL言語は次のように分類できます.
//
select from ;
//
select , from ;
//
select * from ;
//
select ;// , ,
//
select ( );
//
select 100/321;
// , as
select name as , age as from
students as ;
//
select distinct from
//+
select + ;//
select + ;// , 0
select null + ;// null 0
補足:
//concat ,
select concat(frist_name , last_name) as from employees;
//ifnull , null, null
select ifnull(salary , 0) from employees; // 0 0
//isnull , null, 1, 0
select isnull(salary) from employees;
select from where order by ;
concat()//
select concat('ni' , ' ' , 'hao!');
substr()//
select substr('123456789' , 6);// SQL 1
upper()//
select upper('join');
lower()//
select lower('join');
trim()//
select trim('a' from 'aaa1234sasaa8apaa');
ltrim()//
rtrim()//
replace()//
select replace('123456' , '4' , '9');// 4 9
lpad()//
select lpad('12345' , 10 , '*');// :*****12345
rpad()//
instr()//
select instr('1235690' , '90');
length()//
select length('woaibeijingtiananmen');
(2)数学関数
round()//
select round(87.75);//
select round(19.2588 , 2);// :19.26
rand()//
select round();// 0-1
floor()//
select floor(16.9330);
ceil()//
select ceil(15.1);
mod()//
select mod(15,2);// select 15%2;
truncate()//
select truncate(15.666666,3);// 15.666, ,
(3)日付関数
now()// +
select now();
select year(now());
select month(now());
curdate()//
select curdate();
curtime()//
select curtime();
str_to_date//
select str_to_date('9-13-1999' , '%m-%d-%Y');
date_format//
select date_format(curdate(),'%Y %m %d ');//
(4)フロー制御関数
if //
case //
(5)その他の関数
version()//
database()//
user()//
二、グループ関数
sum()
select sum(salary) from employees;
max()
select max(salary) from employees;
min()
avg()
count()
select count(employee_id) from employees;
select count(*) from employees;
特徴:1以上の5つのパケット関数はcount()を除いてnull値をすべて無視する.2 sumとavgは一般的に処理数値型、max、min、countで任意のデータ型を処理することができる.③いずれもdistinctと組み合わせて使用することができ、重量除去後の結果を統計するために使用される.④countのパラメータはフィールド、定数値(1)をサポートできますが、count(*)を使用することをお勧めします.
select count(*) , e.department_id
from employees e
where e.salary > 12000
group by e.department_id
having e.employee_id > 100
特徴:1単一フィールドでグループ化できる;②グループ関数とともに検索するのは、グループ化後のフィールドが望ましい.③グループ化前にフィルタリングし、元のテーブルに対してwhereキーワードを使用する.グループ化後にフィルタリングし、グループ化後の結果セットに対してhavingキーワードを使用する.④複数のフィールドでグループ化でき、フィールド間はカンマで区切られる.⑤ソートをサポートする;⑥havingとgroupbyの後に別名を使うことができます
//
select bo.name as , b.name as
from boys as bo
join beauty as b on b. boyfriend_id = bo.id
where bo.id > 10;
//
select e.last_name , m.last_name
from employees e
join employee m
on e.employees_id = m.manager_id;
特徴:内部接続中の表の順序は変えることができて、内部接続の結果=多表の交差、n表接続は少なくともn-1個の接続条件が必要です②外部接続selectクエリーリストfrom表1別名left|right|full【outer】join表2別名on接続条件whereフィルタ条件group byパケット条件havingパケット後のフィルタ条件order byソートリスト
例
select b.name , bo.name
from beauty b
left join boys bo
on bo.id = b.boyfriend_id
where b.id > 10;
特徴:クエリーの結果はメインテーブルのすべてのローで、テーブルの一致と一致する精から一致するローが表示され、テーブルから一致するデータがない場合nullが表示されます.left joinの左側のテーブルはメインテーブルで、逆も同様です.外部ジョイン・クエリーは、一般的に、交差部分以外の一致しない行をクエリーするために使用されます.
③クロスコネクションselectクエリーリストfromテーブル1別名cross joinテーブル2別名デカルト積に類似
select name
from (select * from employees
where salary > 12000) as ag
where id > 100;
③whereまたはhavingの後には、標量子クエリー、行サブクエリー、列サブクエリーの例がサポートされています.
select * from employees
where name in (
select name from employees
where salary > 1000
)
SELECT COUNT(*) , department_id
FROM employees
WHERE department_id != 10
GROUP BY department_id
HAVING department_id IN (SELECT e.department_id FROM employees e
WHERE salary > 10000)
select
from
limit offset , size;
//offset , 0 ,size
select * from employees
limit 0 , 10 ;
表示するページ数をpageとし、各ページのエントリ数をsize selectクエリーリストfromテーブルlimit size*(page-1)、size
select | | 【from 】 【where 】 union 【all】
select | | 【from 】 【where 】 union 【all】
select | | 【from 】 【where 】 union 【all】
......
select last_name from employees union all
select first_name from employees union all
select department_id from departments
複数のクエリー文クエリーのカラムタイプは一致する必要があります.複数のクエリ文のカラム数が一致する必要があります.unionは再表示を表し、union allは再表示しないことを表します.統合クエリーを使用すると、複雑なクエリー文を複数のクエリー文に分割できます.複数のテーブルのほぼ同じカラムをクエリーする場合に使用します.
したがってDQL言語の要素は以下のように集約される.
select from
join 2 on
where
group by
having
order by
limit , ;