短いトレーニングデータベースの基本(1)

**

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テーブル

EMPテーブル

DEPTテーブル

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

おすすめ

転載: blog.csdn.net/geekerstar/article/details/77885460