**
1テーブルを作成する構文:
**
CREATE TABLE STUDENT(
SID NUMBER NOT NULL PRIMARY KEY,
STUNAME VARCHAR(30) NOT NULL,
STUAGE NUMBER ,
ADDRESS VARCHAR(100),
TEL NUMBER
);
2.情報を挿入する
INSERT INTO STUDENT(SID,STUNAME,STUAGE,ADDRESS,TEL)VALUES(1,'张三',20,'天津空港',17602684398)
3.指定された情報を挿入します
INSERT INTO STUDNET(SID,STUNAME,TEL)VALUES(2,'李四',82374879328)
4.クエリ情報
SELECT * FROM STUDENT
5.テーブルを変更する
添加列
ALTER TABLE XX ADD(CLASS NUMBER)
修改列
ALTER TABLE 表名 MODIFY(列名VARCHAR(50) )
删除列
ALTER TABLE 表名 DROP(列名)
6.テーブルを削除する
DROP TABLE 表名
7.テーブルの名前を変更します
RENAME 旧表名 TO 新表名
8.DML言語
EMPテーブル
DEPTテーブル
データ操作言語INSERT、UPDATE、DELETE
UPDATE 表名 SET 列名 = 新值 WHERE 列名=XXX
DELETE FROM 表名 WHERE 列名 = XXX
演習
1.クエリの位置は、セールスマンの従業員番号、マネージャー番号、および勤務地です。
SELECT EMPNO,MGR,LOC FROM EMP,DEPT WHERE JOB = 'SALESMAN' AND EMP.DEPTNO=DEPT.DEPTNO
2.部門番号が部門10にない従業員の名前と部門番号を照会します。
SELECT ENAME,DEPTNO FROM EMP WHERE DEPTNO <> 10
9.オペレーター
コネクタ||
SELECT ENAME || JOB EMPLY FROM EMP
重複行を排除する
SELECT DISTINCT DEPTNO FROM EMP
*
1000-1500の部署番号と給与の間の賃金の従業員名のクエリ*
SELECT ENAME DEPTNO,SAL FROM EMP
WHERE SAL>=1000 AND SAL<=1500
----------
SELECT ENAME DEPTNO,SAL FROM EMP
WHERE SAL BETWEEN 1000 AND 1500
番号が7369 7521および7698である従業員の番号、名前、およびボーナスを照会します
SELECT EMPNO,ENAME,COMM FROM EMP
WHERE EMPNO IN(7369,7521,7698)
名前にSが含まれる従業員の名前、番号、仕事を問い合わせる
SELECT ENAME,EMPNO,JOB FROM EMP
WHERE ENAME LIKE '%S%'
名前がWで始まる従業員名を照会します
SELECT ENAME FROM EMP
WHERE ENAME LIKE 'W%'
最後から2番目の文字がTである従業員の名前を照会します
SELECT ENAME FROM EMP
WHERE ENAME LIKE '%T_'
ボーナスが空の従業員の名前を照会します。
SELECT ENAME COMM FROM EMP
WHERE COMM IS NULL
給与が2000を超え、役職がMANAGER、または役職がSALESMANである従業員の名前、役職、給与を照会します
SELECT ENAME,JOB,SAL FROM EMP
WHERE SAL > 2000 AND JOB= 'MANAGER' OR JOB = 'SALESMAN'
給与が2000を超え、役職がMANAGERまたはSALESMANである従業員の名前、役職、給与を照会する
S1ELECT ENAME,JOB,SAL FROM EMP
WHERE SAL >2000 AND JOB IN ('MANAGER','SALESMAN')
部署が10または20で、給与が3000〜5000の従業員の名前、部署、給与を照会します
SELECT ENAME,DEPTNO,SAL FROM EMP
WHERE DEPTNO IN (10,20) AND SAL BETWEEN 3000 AND 5000
クエリの位置はSALESMANまたはMANAGER、部門番号は10または20、名前には従業員の名前、役職、部門番号が含まれます
SELECT ENAME,JOB,DEPTNO FROM EMP
WHERE JOB IN ('SALESMAN','MANAGER') AND DEPTNO IN (10,20) AND ENAME LIKE '%A%'
部門が20または30である従業員の名前と部門番号をクエリし、給与の昇順に並べ替えます
SELECT ENAME,DEPTNO,SAL FROM EMP
WHERE DEPTNO IN (20,30) ORDER BY SAL
給与が2000〜3000で、部門が10番ではない従業員の名前、部門番号、および給与を照会し、部門および昇給の昇順で並べ替えます。
SELECT ENAME,DEPTNO,SAL FROM EMP
WHERE SAL BETWEEN 2000 AND 3000 AND DEPTNO <> 10 ORDER BY DEPTNO,SAL DESC
10.外部リンク(+)
すべての従業員名、部門番号、部門名を照会し、従業員のいない部門も表示する必要があります
SELECT ENAME,E.DEPTNO ,DNAME FROM EMP E ,DEPT D WHERE E.DEPTNO(+) = D.DEPTNO
11.自己接続
各従業員の名前と直属の上司の名前を照会します
SELECT E.ENAME 员工姓名,M.ENAME 经理姓名 FROM EMP E ,EMP M WHERE E.MGR = M.EMPNO
*演習
1. NEWYORKとCHICAGOで働くすべての従業員の名前と従業員番号、およびその上司の名前と上司の番号を照会します*
SELECTE E.ENAME 员工姓名,E.EMPNO 员工编号,M.ENAME 经理姓名 ,M.EMPNO 经理编号,LOC FROM EMP E,EMP M,DEPT D
WHERE E.DEPTNO = D.DEPTNO AND E.MGR = M.EMPNO AND LOC IN ('NEWYORK' , 'CHICAGO')
2.前の質問に基づいて、マネージャーなしで従業員キングを追加し、従業員番号で並べ替えます
SELECTE E.ENAME 员工姓名,E.EMPNO 员工编号,M.ENAME 经理姓名 ,M.EMPMO 经理编号,LOC FROM EMP E,EMP M,DEPT D
WHERE E.DEPTNO = D.DEPTNO AND E.MGR = M.EMPNO(+) AND LOC IN ('NEWYORK' , 'CHICAGO') ORDER BY E.EMPNO
3.部署のない従業員を含むすべての従業員番号、名前、部署名をクエリすると、それらも表示されます
。
12.デカルト積
従業員の名前、番号、勤務地を問い合わせる
SELECT ENAME,EMPNO,LOC FROM EMP,DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
13.クロス結合(2つのテーブルの積)クロス結合
SELECT ENAME,EMPNO,LOC FROM EMP CROSS JOIN DEPT
14. NATURALジョイン
SELECT ENAME,EMPNO,LOC FROM EMP NATURAL JOIN DEPT
15.using句は接続条件を指定します
部門番号が20である従業員の名前、部門名、給与を照会する
SELECT ENAME,DNAME,SAL FROM EMP
JOIN DEPT USING(DEPTNO)
WHERE DEPTNO = 20
16. on句は接続条件を指定します
SELECT ENAME,DNAME,LOC FROM EMP
JOIN DEPT ON EMP.DEPTNO=DEPT.DEPTNO
WHERE EMP.DEPTNO = 20
演習
1. using句を使用して、シカゴで働く従業員の名前、部門名、および勤務地を表示します。
SELECT ENAME,DNAME,LOC FROM EMP
JOIN DEPT USING(DEPTNO)
WHERE LOC = 'CHICAGO'
2. On句を使用して、シカゴで働いている従業員の名前、部門の名前、場所、および給与レベルを表示します。
SELECT ENAME,DNAME,LOC FROM EMP
JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO
WHERE LOC = 'CHICAGO'
3.左側のリンクを使用して、各従業員の名前、マネージャーの名前、およびマネージャーなしのKINGも照会します。
SELECT E.ENAME,M.ENAME FROM EMP E
LEFT OUTER JOIN EMP M ON E.MGR = M.EMPNO
4.適切な接続を使用して、各従業員の名前、マネージャーの名前、およびマネージャーなしのKINGも照会する必要があります。
SELECT E.ENAME,M.ENAME FROM EMP E
RIGHT OUTER JOIN EMP M ON E.MGR = M.EMPNO
17.宿題
1.従業員SMITHの名前、部門の名前、および直属の上司の名前を表示します。
SELECT E.ENAME,DNAME,M.ENAME FROM EMP E,EMP M, DEPT D
WHERE E.MGR = M.EMPNO AND E.DEPTNO = D.DEPTNO AND E.ENAME = 'SMITH'
2. KINGとFORDが管理する従業員とそのマネージャーの名前を表示します。
SELECT E.ENAME , M.ENAME FROM EMP E,EMP M
WHERE E.MGR = M.EMPNO AND (M.ENAME = 'KING' OR M.ENAME = 'FORD')
3. 3番目の文字がaである従業員の名前を照会します。
SELECT ENAME FROM EMP
WHERE ENAME LIKE '__A%'
4.部門10と20を除く従業員の名前と部門番号を照会します。
SELECT ENAME,DEPTNO FROM EMP
WHERE DEPTNO <> 10 AND DEPTNO <> 20
5.部門番号30の従業員の情報をクエリします。最初に給与で降順に並べ替え、次に名前で昇順に並べ替えます。
SELECT ENAME,DEPTNO,SAL FROM EMP
WHERE DEPTNO =30
ORDER BY SAL DESC,ENAME ASC
6.上司のいない従業員の名前を照会します(マネージャー番号は空です)。
SELECT ENAME FROM EMP
WHERE MGR IS NULL
7.給与が4500以上で部門が10または20である従業員の名前、給与、部門番号をクエリします。
SELECT ENAME,SAL,DEPTNO FROM EMP
WHERE SAL >= 4500 AND DEPTNO IN (10,20);
8.クエリを記述して、すべての従業員名、部門番号、部門名を表示します。
SELECT ENAME,DEPTNO,DNAME FROM EMP,DEPT AND EMP.DEPTNO = DEPT.DEPTNO
9. CHICAGOで働いており、ボーナスが空ではないすべての従業員の名前、場所、およびボーナスを表示するクエリを作成します
SELECT E.ENAME,LOC,E.COMM FROM EMP,DEPT
WHERE EMP.COMM<>0 AND DEPT.DEPTNO=EMP.DEPTNO
10.クエリを記述して、名前にA文字が含まれるすべての従業員の名前と勤務地を表示します。
SELECT E.ENAME,LOC FROM EMP
JOIN DEPT ON DEPT.DEPTNO = EMP.DEPTNO
WHERE EMP.ENAME LIKE '%A%'
2017.9.6