夢のデータベース実験2:DMDBMSテーブルクエリ操作

実験2DMDBMSテーブルクエリ操作

1.実験の目的:

1.1。クエリで演算子のアプリケーションをマスターする;
2。2.複雑なクエリのクエリ要件の解体と分析をマスターします
3.データベース情報とユーザー情報を照会するためのマスターSQL言語
; SQL言語を理解して習得する:テーブルデータに対して複雑なクエリを実行するために、関連するコマンドのように、個別のAS some_name(エイリアス)、結合、グループ化、順序付け、保持、制限などを使用できます。
5.5。テーブルデータのクエリ、重複排除、グループ化、データ制限、接続クエリなど、サンプルデータの複雑なクエリを完了します。

2.実験要件:

1.1。複雑なクエリのクエリ要件の解体と分析をマスターする
2。3.クエリで演算子のアプリケーションをマスターします

DQL言語4の各パラメーターの使用方法とアプリケーションシナリオに精通している。SQL言語を理解して習得する:テーブルデータに対して複雑なクエリを実行するために、関連するコマンドのように、個別のAS some_name(エイリアス)、結合、グループ化、順序付け、保持、制限などを使用できます。
5.5。クエリのアイデアの例に精通している。

3.実験の要点と難しさ:

実験の焦点:エイリアスの使用、条件付きクエリ、結合クエリ、サブクエリ、データのグループ化、データの並べ替え
実験の難しさ:結合クエリ、サブクエリ、グループクエリ、関数の使用

4.実験内容:

  1. データベース情報、ユーザー情報クエリ
  2. テーブルデータクエリ
    2.1。重複排除クエリ
    2.2。クエリ列の選択
    2.3。エイリアスの使用
    2.4。条件付きクエリ
    2.5。結合クエリ
    2.6.サブクエリ
    2.7.データのグループ化
    2.8。データの並べ替え
    2.9.データの制限

5.実験手順と結果:

説明:実験コンテンツの各部分について、実験プロセスを説明し、実験結果のスクリーンショットと一致させてください

1.データベース情報、ユーザー情報クエリ

1.1

//查看数据库名及创建时间
select name,create_time from v$database;

1.2

//查看数据库里所有使用用户
select username,user_id,default_tablespace,profile from dba_users;

1.3

//查看当前登录用户
SELECT USER

1.4

	//当前用户拥有的表
select table_name from user_tables;

1.5

//所有用户的表
select table_name from all_tables;

1.6

//切换模式
set SCHEMA SYSDBA;

1.7

//查看当前模式
select * from  v$sessions;

2.テーブルデータクエリ

//SQLコマンドと入力結果のスクリーンショット

2.1。重複排除クエリ

例:次の表は、部門の従業員情報(セクション)を示しています。distinctキーワードを使用して、従業員の役職とボーナスを照会し、同じ役職とボーナスのレコードを削除します。

select distinct JOB,BONUS from SYSDBA."sections";

2.2。クエリ列の選択

セクションテーブルで従業員数、役職、ボーナスを表示する

select STAFF_ID,JOB,BONUS from SYSDBA."sections";

2.3。エイリアスの使用

例:テーブル名は、学生IDが10の学生の数学と英語のスコアを照会するための列名を修飾します。
数学のスコアシート

英語スコアシート英語

select SCORE FROM SYSDBA."math" WHERE SID = 10;
select SCORE FROM SYSDBA."English" WHERE SID = 10

2.4.条件付きクエリ

例:上記のbonuses_depaテーブルから、役職が開発者でボーナスが8000を超える従業員の情報をクエリします。
例:上記のbonuses_depaテーブルから、名前がwangでボーナスが8500〜9500の従業員の情報をクエリします。

select STAFF_ID,NAME FROM SYSDBA."bonuses_depa" WHERE JOB = 'developer' AND "bonuses_depa".BONUS>8000;
select STAFF_ID,NAME FROM SYSDBA."bonuses_depa" WHERE  NAME LIKE 'wang%' AND BONUS BETWEEN 8500 AND 9500;
 

2.5。接続クエリ

データの準備:
–テーブルトレーニングを作成します。

CREATE TABLE training(staff_id INT NOT NULL,course_name CHAR(50),exam_date DATETIME,score INT);
--向表training中插入记录。
INSERT INTO training(staff_id,course_name,exam_date,score) VALUES(10,'SQL majorization','2017-06-25 12:00:00',90);
INSERT INTO training(staff_id,course_name,exam_date,score) VALUES(11,'BIG DATA','2018-06-25 12:00:00',92);
INSERT INTO training(staff_id,course_name,exam_date,score) VALUES(12,'Performance Turning','2018-06-29 12:00:00',95);

–テーブル教育を作成します。

CREATE TABLE education(staff_id INT, higest_degree CHAR(8), graduate_school VARCHAR(64), education_note VARCHAR(70));

–テーブル教育にレコードを挿入する

INSERT INTO education(staff_id,higest_degree,graduate_school,education_note) VALUES(11,'master','Northwestern Polytechnical University','211&985');
INSERT INTO education(staff_id,higest_degree,graduate_school,education_note) VALUES(12,‘doctor','Peking University','211&985');
INSERT INTO education(staff_id,higest_degree,graduate_school,education_note) VALUES(13,'scholar','Peking University','211&985');
示例:查询员工ID、最高学历和考试分数。使用training和education两个相关的列(staff_id)做查询操作。
SELECT STAFF_ID,EDUCATION.HIGEST_DEGREE,TRAINING.SCORE
FROM SYSDBA.TRAINING JOIN SYSDBA.EDUCATION USING(STAFF_ID);

2.6。サブクエリ

データの準備:スタッフ
がテーブルを作成する

CREATE TABLE staffs
(
staff_id NUMBER(6) not null,
first_name VARCHAR2(20),
last_name VARCHAR2(25),
email VARCHAR2(25),
phone_number VARCHAR2(20),
hire_date DATE,
employment_id VARCHAR2(10),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
manager_id NUMBER(6),
section_id NUMBER(4),
graduated_name VARCHAR2(60)
);

データの挿入:

insert into staffs (staff_id, first_name, last_name, email, phone_number, hire_date,employment_id, salary, commission_pct, manager_id, section_id)values (198, 'Donald', 'OConnell', 'DOCONNEL', '650.507.9833', to_date('21-06-1999', 'dd-mm-yyyy'), 'SH_CLERK', 2600.00, null, 124, 50);

insert into staffs (staff_id, first_name, last_name, email, phone_number, hire_date,employment_id, salary, commission_pct, manager_id, section_id)values (199, 'Douglas', 'Grant', 'DGRANT', '650.507.9844', to_date('13-01-2000', 'dd-mm-yyyy'), 'SH_CLERK', 2600.00, null, 124, 50);

insert into staffs (staff_id, first_name, last_name, email, phone_number, hire_date,employment_id, salary, commission_pct, manager_id, section_id)values (200, 'Jennifer', 'Whalen', 'JWHALEN', '515.123.4444', to_date('17-09-1987', 'dd-mm-yyyy'), 'AD_ASST', 4400.00, null, 101, 10);

insert into staffs (staff_id, first_name, last_name, email, phone_number, hire_date,employment_id, salary, commission_pct, manager_id, section_id)values (201, 'Michael', 'Hartstein', 'MHARTSTE', '515.123.5555', to_date('17-02-1996', 'dd-mm-yyyy'), 'MK_MAN', 13000.00, null, 100, 20);

insert into staffs (staff_id, first_name, last_name, email, phone_number, hire_date,employment_id, salary, commission_pct, manager_id, section_id)values (202, 'Pat', 'Fay', 'PFAY', '603.123.6666', to_date('17-08-1997', 'dd-mm-yyyy'),
'MK_REP', 6000.00, null, 201, 20);

insert into staffs (staff_id, first_name, last_name, email, phone_number, hire_date,employment_id, salary, commission_pct, manager_id, section_id)values (203, 'Susan', 'Mavris', 'SMAVRIS', '515.123.7777', to_date('07-06-1994', 'dd-mm-yyyy'), 'HR_REP', 6500.00, null, 101, 40);

相関サブクエリを使用して、部門の平均給与よりも高い給与を持つ各部門の人々を見つけます

select STAFFS.first_name,STAFFS.LAST_NAME  
from STAFFS,(select AVG(salary) aver,section_id from STAFFS group by section_id)av
where STAFFS.section_id=av.section_id and STAFFS.salary>av.aver;

2.7。データのグループ化

データの準備:示されているようにテーブル(bonuses_depa)を作成し、データを挿入します

例:部門は役職とボーナスでグループ化され、各グループの従業員数が照会され、結果が昇順で並べ替えられます。

SELECT job,COUNT(*) FROM SYSDBA."bonuses_depa" GROUP 
BY JOB ORDER BY COUNT(*);
SELECT BONUS,COUNT(*) FROM SYSDBA."bonuses_depa" GROUP 
BY BONUS ORDER BY COUNT(*);

2.8。データの並べ替え

例:次の表のbonuses_depaで、さまざまな種類の作業のボーナス情報をクエリします。クエリ結果は、最初にボーナスの昇順で並べ替えられ、次に名前の降順で並べ替えられます。

SELECT NAME,JOB,BONUS FROM SYSDBA."bonuses_depa"  ORDER BY BONUS;
SELECT NAME,JOB,BONUS FROM SYSDBA."bonuses_depa"  ORDER BY NAME DESC;
 

2.9.データの制限

例:次の表のbonus_depaで従業員情報を照会します。LIMIT 2 OFFSET 1を追加して、最初の行をスキップするようにクエリを制限することにより、合計2行のデータがクエリされます。

SELECT *FROM SYSDBA."bonuses_depa" LIMIT 2 OFFSET 1;

おすすめ

転載: blog.csdn.net/david2000999/article/details/122504503