MySQL基礎練習
5081 ワード
MySQLベース#1.検索定数SELECT 100;
SELECT
#4.複数フィールドSELECT
#5.すべてのフィールドSELECT*FROM employeesを検索する.
F 12:整列フォーマットSELECT
#7.別名#方式1:asキーワードの使用
SELECT USER()ASユーザー名;
SELECT last_name AS‘名前’FROM employees;
#方式2:スペース
#八,–需要:first_のクエリーnameとlast_nameのフルネームは、最終的には別名:名前
SELECT CONCAT(first_name,last_name)AS‘氏名’FROM employees;
SELECT first_name,last_name FROM employees;
#9.distinctの使用デマンド:従業員が関連する部門番号を問い合わせる
SELECT DISTINCT department_id FROM employees;
#10.テーブルの構造を表示するDESC employees;SHOW COLUMNS FROM employees;
#ステップ2:条件クエリー/*構文:selectクエリーリストfrmoテーブル名whereフィルタ条件
実行順序:from句2.where句3.select句 select last_name,first_name from emp where salary > 20000;
*/
#1.関係式によるフィルタリング#ケース1、照会部門番号が100でない従業員情報SELECT*FROM employees WHERE department_id <> 100;
#ケース2:給与<15000の氏名を調べ、給与SELECT CONCAT(last_name,first_name)AS‘氏名’FROM employees WHERE salary<15000;
2.論理式によるフィルタ
#ケース1:部署番号が50-100ではない従業員の名前、部署番号、メールボックス#方式1:SELECT last_name,department_id,email FROM employees WHERE department_id<50 OR department_id>100;
#方式2:SELECT last_name,department_id,email FROM employees WHERE NOT(department_id>=50 AND department_id<=100);
#ケース2:ボーナス率照会>0.03または従業員番号60-110の従業員情報SELECT*FROM employees WHERE commission_pct>0.03 OR (employee_id>=60 AND employee_id<=110);
#1.like
#ケース1:最後の文字がeである従業員の名前を問い合わせるSELECT*FROM employees WHERE last_name LIKE ‘%a%’;
#ケース2:名前に最初の文字がeの従業員を含む情報を検索SELECT*FROM employees WHERE last_name LIKE ‘e%’;
#ケース3:名前に3文字目のeを含む従業員の情報を問い合わせるSELECT*FROM employees WHERE last_name LIKE ‘___x%’;
#ケース4:クエリー名に2番目の文字が_従業員情報SELECT*FROM employees WHERE last_name LIKE ‘__%’;
SELECT * FROM employees WHERE last_name LIKE ‘#%’ ESCAPE ‘#’;
#2.in/*機能:あるフィールドの値が指定したリスト内のa in(定数1、定数2.定数3...)a not in(定数1、定数2.定数3...)
in/not in
*/
#ケース1:照会部門番号が30/50/90の従業員名と部門番号SELECT last_name,department_id FROM employees WHERE department_id IN(30,50,90);
#ケース2:照会職種番号がSHでないCLERKまたはIT_PROGの社員情報SELECT*FROM employees WHERE(job_id!=‘SH_CLERK’)AND(job_id!=‘IT_PROG’);
SELECT * FROM employees WHERE job_id NOT IN(‘SH_CLERK’,‘IT_PROG’);
#3.between and/*機能:あるフィールドの値がxxの間にあるかどうかを判断するbetween and/not between and
*/
#ケース1:照会部門番号は30-90間の部門番号、従業員名SELECT department_id,last_name FROM employees WHERE department_id>=30 AND department_id<=90;
SELECT department_id,last_name FROM employees WHERE department_id BETWEEN 30 AND 90;
#ケース2:年俸が100000-20000万でない直接従業員の名前、給料、年俸SELECT lastを調べるname,salary,salary 12(IFNULL(commission_pct,0)+1)年俸FROM employees WHERE salary 12(IFNULL(commission_pct,0)+1)NOT BETWEEN 100000 AND 200000;
SELECT last_name,salary,salary 12(IFNULL(commission_pct,0)+1)AS年俸FROM employees WHERE salary 12(IFNULL(commission_pct,0)+1)<100000 OR salary 12(IFNULL(commission_pct,0)+1)>200000;
#4. is null/is not null
#ケース1:ボーナスのない従業員情報の照会SELECT*FROM employees WHERE commission_pct IS NULL;
#ケース1:ボーナスのある従業員情報の照会SELECT*FROM employees WHERE commission_pct IS NOT NULL;
#1.給与が12000以上の従業員の名前と給与を調べるSELECT last_name,salary FROM employees WHERE salary > 12000;
#2.従業員番号176の従業員の名前と部門番号と年俸を調べるSELECT last_name,department_id,salary 12(IFNULL(commission_pct,0)+1)年俸FROM employees WHERE employee_id = 176;
#3.給料が5000~12000でない従業員の名前と給料を選択するSELECT last_name,salary FROM employees WHERE salary NOT BETWEEN 5000 AND 12000;
#方式2:SELECT last_name,salary FROM employees WHERE NOT(salary>=5000 AND salary<=12000);
#方式3:SELECT last_name,salary FROM employees WHERE salary<5000 OR salary>12000;
#4.20または50番部署に勤務する従業員の名前と部署番号を選択SELECT last_name,department_id FROM employees WHERE department_id=20 OR department_id=50;
#方式二SELECT last_name,department_id FROM employees WHERE department_id IN(20,50);
#5.会社に管理者がいない従業員の名前とjobを選択id SELECT last_name,job_id FROM employees WHERE manager_id IS NULL;
#6.会社にボーナスがある従業員の名前、給与およびボーナスレベルを選択SELECT last_name,salary,commission_pct FROM employees WHERE commission_pct IS NOT NULL;
#7.社員名の3文字目はaの社員名を選択SELECT last_name FROM employees WHERE last_name LIKE ‘__a%’;
#8.名前にアルファベットaとeが入っている従業員の名前を選択SELECT last_name FROM employees WHERE last_name LIKE ‘%a%’ AND last_name LIKE ‘%e%’;
#9.表employees表のfirst_を表示するname'eで終わる従業員情報SELECT*FROM employees WHERE first_name LIKE ‘%e’;
#10.表employees部門番号80-100の氏名職階SELECT last_を表示するname,job_id FROM employees WHERE department_id BETWEEN 80 AND 100;
#方式2:SELECT last_name,job_id FROM employees WHERE department_id>=80 AND department_id<=100;
#11.表employeesを表示するmanager_idは100101110の社員名、ポジションSELECT last_name,job_id FROM employees WHERE manager_id IN(100,101,110);
SELECT last_name,job_id FROM employees WHERE manager_id=100 OR manager_id=101 OR manager_id=110;
SELECT
last_name
FROM employees
; #4.複数フィールドSELECT
last_name
、email
、employee_id
FROM employees;#5.すべてのフィールドSELECT*FROM employeesを検索する.
F 12:整列フォーマットSELECT
last_name
,email
,job_id
#6.クエリ関数(呼び出し関数、戻り値取得)SELECT DATABASE()SELECT VERSION(); SELECT USER(); #7.別名#方式1:asキーワードの使用
SELECT USER()ASユーザー名;
SELECT last_name AS‘名前’FROM employees;
#方式2:スペース
#八,–需要:first_のクエリーnameとlast_nameのフルネームは、最終的には別名:名前
SELECT CONCAT(first_name,last_name)AS‘氏名’FROM employees;
SELECT first_name,last_name FROM employees;
#9.distinctの使用デマンド:従業員が関連する部門番号を問い合わせる
SELECT DISTINCT department_id FROM employees;
#10.テーブルの構造を表示するDESC employees;SHOW COLUMNS FROM employees;
#ステップ2:条件クエリー/*構文:selectクエリーリストfrmoテーブル名whereフィルタ条件
実行順序:
*/
#1.関係式によるフィルタリング#ケース1、照会部門番号が100でない従業員情報SELECT*FROM employees WHERE department_id <> 100;
#ケース2:給与<15000の氏名を調べ、給与SELECT CONCAT(last_name,first_name)AS‘氏名’FROM employees WHERE salary<15000;
2.論理式によるフィルタ
#ケース1:部署番号が50-100ではない従業員の名前、部署番号、メールボックス#方式1:SELECT last_name,department_id,email FROM employees WHERE department_id<50 OR department_id>100;
#方式2:SELECT last_name,department_id,email FROM employees WHERE NOT(department_id>=50 AND department_id<=100);
#ケース2:ボーナス率照会>0.03または従業員番号60-110の従業員情報SELECT*FROM employees WHERE commission_pct>0.03 OR (employee_id>=60 AND employee_id<=110);
#1.like
#ケース1:最後の文字がeである従業員の名前を問い合わせるSELECT*FROM employees WHERE last_name LIKE ‘%a%’;
#ケース2:名前に最初の文字がeの従業員を含む情報を検索SELECT*FROM employees WHERE last_name LIKE ‘e%’;
#ケース3:名前に3文字目のeを含む従業員の情報を問い合わせるSELECT*FROM employees WHERE last_name LIKE ‘___x%’;
#ケース4:クエリー名に2番目の文字が_従業員情報SELECT*FROM employees WHERE last_name LIKE ‘__%’;
SELECT * FROM employees WHERE last_name LIKE ‘#%’ ESCAPE ‘#’;
#2.in/*機能:あるフィールドの値が指定したリスト内のa in(定数1、定数2.定数3...)a not in(定数1、定数2.定数3...)
in/not in
*/
#ケース1:照会部門番号が30/50/90の従業員名と部門番号SELECT last_name,department_id FROM employees WHERE department_id IN(30,50,90);
#ケース2:照会職種番号がSHでないCLERKまたはIT_PROGの社員情報SELECT*FROM employees WHERE(job_id!=‘SH_CLERK’)AND(job_id!=‘IT_PROG’);
SELECT * FROM employees WHERE job_id NOT IN(‘SH_CLERK’,‘IT_PROG’);
#3.between and/*機能:あるフィールドの値がxxの間にあるかどうかを判断するbetween and/not between and
*/
#ケース1:照会部門番号は30-90間の部門番号、従業員名SELECT department_id,last_name FROM employees WHERE department_id>=30 AND department_id<=90;
SELECT department_id,last_name FROM employees WHERE department_id BETWEEN 30 AND 90;
#ケース2:年俸が100000-20000万でない直接従業員の名前、給料、年俸SELECT lastを調べるname,salary,salary 12(IFNULL(commission_pct,0)+1)年俸FROM employees WHERE salary 12(IFNULL(commission_pct,0)+1)NOT BETWEEN 100000 AND 200000;
SELECT last_name,salary,salary 12(IFNULL(commission_pct,0)+1)AS年俸FROM employees WHERE salary 12(IFNULL(commission_pct,0)+1)<100000 OR salary 12(IFNULL(commission_pct,0)+1)>200000;
#4. is null/is not null
#ケース1:ボーナスのない従業員情報の照会SELECT*FROM employees WHERE commission_pct IS NULL;
#ケース1:ボーナスのある従業員情報の照会SELECT*FROM employees WHERE commission_pct IS NOT NULL;
#1.給与が12000以上の従業員の名前と給与を調べるSELECT last_name,salary FROM employees WHERE salary > 12000;
#2.従業員番号176の従業員の名前と部門番号と年俸を調べるSELECT last_name,department_id,salary 12(IFNULL(commission_pct,0)+1)年俸FROM employees WHERE employee_id = 176;
#3.給料が5000~12000でない従業員の名前と給料を選択するSELECT last_name,salary FROM employees WHERE salary NOT BETWEEN 5000 AND 12000;
#方式2:SELECT last_name,salary FROM employees WHERE NOT(salary>=5000 AND salary<=12000);
#方式3:SELECT last_name,salary FROM employees WHERE salary<5000 OR salary>12000;
#4.20または50番部署に勤務する従業員の名前と部署番号を選択SELECT last_name,department_id FROM employees WHERE department_id=20 OR department_id=50;
#方式二SELECT last_name,department_id FROM employees WHERE department_id IN(20,50);
#5.会社に管理者がいない従業員の名前とjobを選択id SELECT last_name,job_id FROM employees WHERE manager_id IS NULL;
#6.会社にボーナスがある従業員の名前、給与およびボーナスレベルを選択SELECT last_name,salary,commission_pct FROM employees WHERE commission_pct IS NOT NULL;
#7.社員名の3文字目はaの社員名を選択SELECT last_name FROM employees WHERE last_name LIKE ‘__a%’;
#8.名前にアルファベットaとeが入っている従業員の名前を選択SELECT last_name FROM employees WHERE last_name LIKE ‘%a%’ AND last_name LIKE ‘%e%’;
#9.表employees表のfirst_を表示するname'eで終わる従業員情報SELECT*FROM employees WHERE first_name LIKE ‘%e’;
#10.表employees部門番号80-100の氏名職階SELECT last_を表示するname,job_id FROM employees WHERE department_id BETWEEN 80 AND 100;
#方式2:SELECT last_name,job_id FROM employees WHERE department_id>=80 AND department_id<=100;
#11.表employeesを表示するmanager_idは100101110の社員名、ポジションSELECT last_name,job_id FROM employees WHERE manager_id IN(100,101,110);
SELECT last_name,job_id FROM employees WHERE manager_id=100 OR manager_id=101 OR manager_id=110;