119
基基基 SQL 基基

基本的 SQL 语句

  • Upload
    zaria

  • View
    204

  • Download
    0

Embed Size (px)

DESCRIPTION

基本的 SQL 语句. 目标. 列出 SELECT 语句的功能 执行基本的 select 语句 区分 SQL 语句和 SQL*PLUS 命令. select 语句的功能. Projection 投影. Selection 选择. Table 1. Table 1. Join 联结. Table 2. Table 1. 基本 select 语句. select 确定处理哪些列 from 确定处理哪些表 DISTINCT 禁止重复 column|expression 选定的列或者表达式 alias 别名. - PowerPoint PPT Presentation

Citation preview

  • SQL

  • SELECT

    select

    SQLSQL*PLUS

  • selectSelection Projection Table 1Table 2Table 1Table 1Join

  • selectselectfrom DISTINCT column|expressionalias SELECT *|{[DISTINCT] column|expression [alias],...}FROM table;

  • SQL

  • fromMultiply *Divide /Subtract -Add +DescriptionOperator

  • SELECT EMPNO, SAL, SAL + 300FROM EMP;SAL+300 EMP

  • SELECT EMPNO, SAL, 12*SAL+100FROM EMP;SELECT EMPNO, SAL, 12*(SAL+100)FROM EMP;

  • "NOT NULLPRIMARY KEY)

  • AS

  • SELECT ENAME AS , JOB FROM EMP;

  • ||SELECTENAME||EMPNO AS "Employees"FROM EMP;SELECT ENAME ||' is a '||EMPNO AS "Employee Details"FROM EMP;

  • SELECT DEPTNOFROM emp;SELECT DISTINCT DEPTNOFROM emp;

  • SQLPLUS DESCRIBE emp

  • WHEREWHEREFROM

    SELECT *|{[DISTINCT] column|expression [alias],...}FROM table;

  • DD-MON-RRSELECT EMPNO, ENAME, JOB, DEPTNOFROM empWHERE DEPTNO = 90 ;SELECT EMPNO, ENAME, JOB, DEPTNOFROM empWHERE ENAME = KING ;

  • Not equal to

    Between two values (inclusive)BETWEEN ...AND...Match any of a list of values IN(set)Match a character pattern LIKEIs a null value IS NULLLess than

    Equal to=MeaningOperator

  • select empno, ename, job, sal, deptno from emp where sal < 2000;

    select empno, ename, job, sal, deptno from emp where sal between 1000 and 2000;

    select empno, ename, job, sal, deptno from emp where deptno in (20,30);

    select empno, ename, job, sal, deptno from emp where ename like 'K%';%_

    select empno, ename, job, comm, deptno from emp where comm is NULL;

  • Returns TRUE if the condition is falseNOTReturns TRUE if either component condition is trueORReturns TRUE if both component conditions are trueANDMeaningOperatorselect empno, ename, job, sal, deptno from emp where sal < 3000 and ename like 'J%';

    select empno, ename, job, sal, deptno from emp where sal < 3000 and ename not like 'J%';

  • select empno, ename, job, sal, deptno from emp where sal < 3000 or ename like K%';

    select empno, ename, job, sal, deptno from emp where sal < 3000 and ename not in ('WARD','KING');

  • 1234IS [NOT] NULL LIKE [NOT] IN5[NOT] BETWEEN6NOT7AND8OR

  • select empno, ename, job, sal, deptno from emp where ename = 'KING' or deptno = 20 and sal < 2000;

  • ORDER BY ORDER BYASCDESCORDER BYSELECTORDER BY select empno, ename, sal from emp order by sal;select empno, ename, sal, deptno from emp where deptno=30 order by sal;select empno, ename, sal*12 year, deptno from emp order by year;

  • select empno, ename, sal, deptno from emp order by sal,deptno;

    select empno, ename, sal, deptno from emp order by deptno,sal;

    ORDER BYSELECT

  • 3000SQLlabl. sql7782100030002030"Employee""Monthly Salary1981AE

  • SQL

    SELECT

  • SQLSQL: SQLOracle SQL

  • :

  • LOWER (column / expression)UPPER (column / expression) INITCAP (column / expression) CONCAT(column1 / expression1 , column2 / expression2)SUBSTR(column / expression, m [,n])m nm nLENGTH(column / expression)

  • DD-MON-RROracle47121199991231

    SYSDATE SYSDATESYSDATESYSDATEDUALSYSDATE

    select sysdate from dual;

  • 24

  • '08-SEP-95'NEXT_DAY ('01-SEP-95','FRIDAY')'28-FEB-95'LAST_DAY ('01-FEB-95')19.6774194MONTHS_BETWEEN ('01-SEP-95','11-JAN-94')29-FEB-96'ADD_MONTHS (31-JAN-96',1)ResultFunction

  • NUMBERCHARACTERTO_CHARTO_NUMBERDATETO_CHARTO_DATE

  • TO_CHAR fm

    select ename, to_char(hiredate,'YYYY-MM-FMDD') from emp;TO_CHAR(date, 'format_model')

  • F3(F2(F1(col,arg1),arg2),arg3)Step 1 = Result 1Step 2 = Result 2Step 3 = Result 3

  • NVL (exprl, expr2)NVL2 (exprl, expr2, expr3)NULLIF (exprl, expr2)COALESCE (exprl, expr2, ,exprn)

  • SELECT

  • :---

    WHERE

    select empno, ename, dname from emp,dept;

  • WHERE

    SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column1 = table2.column2;

  • EMPDEPTNODEPTDEPTNOEMPDEPTDEPTNO

  • nn-1

    EMP,DEPT,LOCATIONS

  • ANDWHEREKINGWHERE

    select empno, ename, dname from emp,dept where emp.deptno=dept.deptno and emp.ename=KING;

  • select ename,grade from emp,salgrade where emp.sal between losal and hisal;empSALSALGRADE

  • EMPSMITH

    select worker.ename || ' works for ' || manager.ename from emp worker, emp manager where worker.MGR=manager.empno;

  • GROUP BYHAVING

  • AVGCOUNTMAXMINSUM

  • Maximum salary in EMPLOYEES table

  • EMPAverage salary in EMPLOYEES table for each department

  • HAVINGHAVING1.2.3.HAVING

  • HAVINGHAVINGgroup_condition HAVINGOracle1.2.3.HAVINGHAVINGGROUP BYGROUP BYHAVINGSELECT

  • HAVINGOracleOracleHAVINGSELECT ename, empno, salFROM empWHERE sal = (SELECT MIN(sal) FROM emp);800

  • SELECT empno, enameFROM empWHERE sal = (SELECT MIN(sal) FROM emp GROUP BY deptno);

  • Select empno, ename, salFrom empWhere sal > ANY (select MIN(sal) from emp group by deptno )OracleSelect empno, ename, salFrom empWhere sal in (950, 800, 1300)

  • DML(Data Manipulation Language )

  • INSERTtablecolumn value

  • ()INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)

    VALUES (7935, 'SCOTT', 'CLERK', 7782, '15-1-82', 1400, 0, 10);INSERT

  • INSERTNUMBER

  • VALUESNULLVALUESNULL VALUES( )INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

    VALUES (7936, 'SCOTTB', 'CLERK', 7782, '15-1-82', 1500, 10);

  • SYSDATEINSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)

    VALUES (7937, 'SCOTTB', 'CLERK', 7782, SYSDATE, 1520, 10);INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO)VALUES (7938, 'SCOTTC', 'CLERK', 7782, TO_DATE('2011-11-2','YYYY-MM-DD'), 1520, 10);

  • INSERTVALUESINSERTINSERT INTO BONUS

    SELECT ENAME, JOB, SAL, SAL FROM EMP WHERE ENAME='SCOTT';

  • INSERTINSERTINTOVALUESINSERT INTO (SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM EMP WHERE DEPTNO = 20)VALUES (7939, 'SCOTT6', 'CLERK', 7782, '15-1-82', 1400, 0, 10)

  • WITH CHECK OPTION WITH CHECK OPTIONINSERTUPDATEDELETE WITH CHECK OPTION20 SELECT10

    INSERT INTO (SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM EMP WHERE DEPTNO = 20 WITH CHECK OPTION)VALUES (7940, 'SCOTT6', 'CLERK', 7782, '15-1-82', 1400, 0, 10)

  • UPDATEtable column value condition

  • WHERE WHERE UPDATE EMP SET ENAME = 'SNOWFLY' WHERE EMPNO = 7938;

  • 79387782UPDATE EMPSET JOB = (SELECT JOB FROM EMP WHERE EMPNO = 7782), SAL = (SELECT SAL FROM EMP WHERE EMPNO = 7782)WHERE EMPNO = 7938;

  • table

    condition

    WHERE WHEREDELETE FROM EMPWHERE ENAME = 'SCOTTB';

  • DELETEDELETE FROM EMP WHERE ENAME = (SELECT ENAME FROM BONUS)

  • DMLOracleSQL

  • DML SQL-COMMITROLLBACK-DDLDCL-SQL*Plus-

  • COMMIT ROLLBACK COMMITROLLBACK

  • SQL

  • -DDL-DCL-SQL*Plus,COMMITROLLBACK SQL*PIUS

  • COMMIT ROLLBACK SELECTDMLDML

  • COMMIT

  • ROLLBACK

  • --

  • Oracle

  • ---DML--DDL

  • 1-30 A-Za-z0-9_$ # Oracle

  • CREATE TABLE CREATE TABLE [schema.]table

    (column datatype [DEFAULT expr] [, ...])

  • DEFAULT

    SQL... hiredate DATE DEFAULT SYSDATE, ...

  • Oracle---Oracle Server-

  • CREATE TABLE AS subquery

    CREATE TABLE COPY_EMPASSELECT * FROM EMP;

  • ALTER TABLE ALTER TABLE:

  • ALTER TABLE

  • DROP TABLEDROP TABLEDROP ANY TABLEDDLDROP TABLEDROP TABLE COPY_EMP;

  • rename copy_emp to copy2_emp;

  • TRUNCATE TABLE --TRUNCATE,DELETE

  • DDL

  • -NOT NULL-UNIQUE-PRIMARY KEY-FOREIGN KEY-CHECK

  • OracleSYS_Cn

    ---

  • constraint_name constraint_type

  • NOT NULL

  • UNIQUE

  • PRIMARY KEY PRIMARY KEY

    PRIMARY KEY

  • PRIMARY KEY

  • FOREING KEY

    INSERT INTO (SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM EMP WHERE DEPTNO = 20)VALUES (7939, 'SCOTT6', 'CLERK', 7782, '15-1-82', 1400, 0, 10)INSERT INTO (SELECT EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO FROM EMP WHERE DEPTNO = 20 WITH CHECK OPTION)VALUES (7940, 'SCOTT6', 'CLERK', 7782, '15-1-82', 1400, 0, 10) SELECT INSERTUPDATEDELETE JHDML

    Oracle DMLSELECT(DML)OracleDMLDML DML DML DDLCREATE TABLEDCL) CREATE TABLE COPY_EMPASSELECT * FROM EMP;rename copy_emp to copy2_emp;TRUNCATEDELETETRUNCATE(DDL)TRUNCATE

    OracleSYS_CnnUSER_CONSTRAINTSCREATE TABLE EMP (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,ENAME VARCHAR2(10),JOB VARCHAR2(9) NOT NULL,MGR NUMBER(4),HIREDATE DATE constraint hiredate NOT NULL,SAL NUMBER(7,2),COMM NUMBER(7,2),DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);

    PRIMARY KEYPRIMARY KEYPRIMARY KEYUNIQUEDEPARTMENTSDEPARTMENT_ID!J PRIMARY KEY DEPT_ID_PKPRIMARY KEYUNIQUEFOREIGN KEY (DEPARTMENT_IDEMPLOYEES (DEPARTMENTS (DEPARTMENT_IDNULLREFERENCES: