←講義のツボメニューへ
データベースアクセス
2000.12.07 第8回
- データベースアクセスの例
CREATE TABLE student( 学生
student-no NUMBER(8) PRIMARY KEY 学籍番号
student-name CHAR(20) NOT NULL 学生氏名
)
CREATE TABLE courses( 科目
course-no NUMBER(8) PRIMARY KEY 科目番号
course-name VARCHAR(20) NOT NULL 科目名
semester SEMESTER 開講時期
)
CREATE TABLE registrations( 受講
r-student-no NUMBER(8) 学籍番号
CONSTRANT student-no REFERNCES students
r-course-no VARCHAR(20) NOT NULL 科目番号
CONSTRANT teachert-no REFERNCES teachers
grade NUMBER(3) 成績
)
- ここでCREATE TABLEは「表を生成する」というコマンドであるが、複数のCREATE TABLE を集めたものを、データベース定義と呼ぶ。
(このように、データベース定義に使われたコマンドの言語を特に、DDLと呼ぶ)
- データを書き込むには、STORE(ファイルアクセスでのWRITEに似ている。)
- データを呼び出すには、SELECT(ファイルアクセスでのREADには似ていない新しいもの)
- STORE命令
- 学生の登録の場合
STORE ('students', no, name);
プログラム変数と実体レコード型のデータ項目(属性)との対応づけは変数の並び方で決まる。
プログラム内の実体レコード型の変数アドレス/名前を対応づける。
- SELECT命令
- 学生情報の読み出しの場合
SELECT student-name, course-name, grade
FROM students, courses, registrations,
WHERE student-no = '0311999074';
student-no = r-student-no;
course-no = r-course-no;
student-no = '0311999074'であるレコードをstudentsより検索し、student-nameを得る。
student-no = '0311999074'であるレコードをregistrationより検索(複数あり得る)し、course-noとgrade(複数あり得る)を得る。
得られた各々のcourse-noをもつcoursesからレコードを読み、course-noを得る。
以上のstudent-name、course-name,gradeを結果として渡す。