第 3 章 sql 语言
DESCRIPTION
第 3 章 SQL 语言. 本章概要. SQL 是结构化查询语言( Structured Query Language )的缩写,其功能包括数据查询、数据操纵、数据定义和数据控制四个部分。 SQL 语言简洁、方便实用、功能齐全,已成为目前应用最广的关系数据库语言。 本章要求 了解 SQL 语言的特点, 掌握 SQL 语言的四大功能及使用方法, 重点掌握其数据查询功能及其使用。. 3.1 SQL 语言的基本概念与特点. 3.1.1 SQL 语言的发展及标准化 3.1.1.1 SQL 语言发展史 - PowerPoint PPT PresentationTRANSCRIPT
-
3 SQL
-
SQLStructured Query LanguageSQL SQLSQL
-
3.1 SQL 3.1.1 SQL3.1.1.1 SQL SQL1974CHAMBERLINBOYEESEQUEL(STUCTURED ENGLISH QUERY LANGUAGE)IBMSYSTEM R1981 IBMSQL/DSSQLSQL SYBASEINFORMIX ORACLEDB2INGRESFOXPROACCESS
-
3.1.1.2 SQL SQLSQLSQL1. 1982AMERICAN NATIONAL STANDARD INSTITUTEANSISQL2. 1986SQLSQL863. 1987ISOSQL864. 1989ISOSQL86SQL895. 1992ISOSQL92SQL26. SQL99SQL3
-
3.1.2 SQLBASE TABLEVIEW
-
STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT)STUDENT_MALE(SNO,SNAME,SAGE,SDEPT)STUDENTSSEX=SNO,SNAME,SAGE,SDEPTSTUDENT_MALESTUDENT_MALE
-
3.1 SQL SQL3.1
-
3.1.3 SQLSQLSQLSQLSQLDBA
-
5. SQL:QUERYDEFINITIONMANIPULATIONCONTROL
SQL SERVER 1.12
-
3.2 SQL SQLDATA DEFINITION LANGUAGEDDL3.2.1 SQLSQL SERVER 91. BIT, INT , SMALLINT, TINYINT2. NUMERICDECIMALDECIMAL123.08000.56
-
3. FLOATREAL1.23E+104. DATETIMESMALLDATETIME1998-06-08 15:30:005. CHAR, VARCHAR, TEXT6. UNICODEUNICODENCHAR, NVARCHARNTEXTUNICODE27. BINARY, VARBINARYIMAGE OX5F3C
-
8. MONEY SMALLMONEY123.00009. UNIQUEIDENTIFIER TIMESTAMPTIMESTAMPUNIQUEIDENTIFIER
-
3.2.2
3.2.2.1 SQL ServerSQL SERVERSP_ADDLOGIN sp_addlogin [ @loginame = ] 'login' [ , [ @passwd = ] 'password' ] [ , [ @defdb = ] 'database' ] [@loginame =] 'login' [@passwd =] 'password' [@defdb =] 'database'
-
3.1 ZHANGSAN123 sp_addlogin ZHANGSAN, 123,pubs
3.2.2.2 SP_GRANTDBACCESS sp_grantdbaccess [@loginame =] 'login' [,[@name_in_db =] 'name_in_db'
[@loginame =] login [@name_in_db =] 'name_in_db' [OUTPUT] 3.2 sp_grantdbaccess zhangsan,zhangsan
-
3.2.2.3 / sp_revokedbaccess '' sp_droplogin
3.2.2.4 LOGIN NAME USER NAME login nameuser name user namelogin name
-
3.2.2 CREATE DATABASE 3.2.3 3.2.3.1 1. 1128#AT(@)23.23
-
UNICODEBINARYVARBINARYIMAGE12345.67883
-
NPSBINARY(N) -------- BINARY(10)CHAR(N) -------- CHAR(20)NUMERIC(P,[S]) ------- NUMERIC(8,3)INT41001044NULLDEFAULTDEFAULT
-
2. SQLSQLCREATE TABLECREATE TABLE ([{|}])
128S,SC,C[DEFAULT] [{}]DEFAULT
-
3.4 USE STUDENTCREATE TABLE S(SNO CHAR(8) ,SN VARCHAR(20),AGE INT,SEX CHAR(2) DEFAULT '' ,DEPT VARCHAR(20));SEX
-
3. SQL SERVER,[ CONSTRAINT ]
-
SQL SERVER1NULL/NOT NULLNULLNULL0NULLNOT NULL[CONSTRAINT ][NULL|NOT NULL]
-
3.5 SSNONOT NULLUSE STUDENTCREATE TABLE S(SNO CHAR(10) CONSTRAINT S_CONS NOT NULLSN VARCHAR(20),AGE INT,SEX CHAR(2) DEFAULT ,DEPT VARCHAR(20));SNONOT NULLNULLS_CONS
-
USE STUDENTCREATE TABLE S(SNO CHAR(10) NOT NULL ,SN VARCHAR(20),AGE INT,SEX CHAR(2) DEFAULT '' ,DEPT VARCHAR(20));
-
2UNIQUEUNIQUEUNIQUENULLUNIQUEUNIQUE[CONSTRAINT ] UNIQUE3.6 SSNUSE STUDENTCREATE TABLE S(SNO CHAR(6),SN CHAR(8) CONSTRAINT SN_UNIQ UNIQUE,SEX CHAR(2),AGE NUMERIC(2));
-
SN_UNIQUSE STUDENTCREATE TABLE S(SNO CHAR(6),SN CHAR(8) UNIQUE,SEX CHAR(2),AGE NUMERIC(2));
UNIQUE
[CONSTRAINT ] UNIQUE[{,}]
-
3.7 SSN+SEXUSE STUDENTCREATE TABLE S ( SNO CHAR(5),SN CHAR(8),SEX CHAR(2),CONSTRAINT S_UNIQ UNIQUE(SN,SEX));SN+SEX
3PRIMARY KEYPRIMARY KEYNULL
-
PRIMARY KEYUNIQUEPRIMARY KEYUNIQUEPRIMARY KEYUNIQUEUNIQUEPRIMARY KEYPRIMARY KEY
PRIMARY KEYCONSTRAINT PRIMARY KEY
-
3.8 SSNOSUSE STUDENTCREATE TABLE S(SNO CHAR(5) NOT NULL CONSTRAINT S_PRIM PRIMARY KEY,SN CHAR(8),AGE NUMERIC(2));
PRIMARY KEY [CONSTRAINT ]S PRIMARY KEY ([{}])
-
3.9 SCSNO+CNOSCUSE STUDENTCREATE TABLE SC(SNO CHAR(5) NOT NULL,CNO CHAR(5) NOT NULL,SCORE NUMERIC(3),CONSTRAINT SC_PRIM PRIMARY KEY(SNO,CNO));
-
4FOREIGN KEYFOREIGN KEYFOREIGN KEY[CONSTRAINT ] FOREIGN KEY REFERENCES ([{}])
-
3.10 SCSNO,CNOSCUSE STUDENTCREATE TABLE SC(SNO CHAR(5) NOT NULL CONSTRAINT S_FORE FOREIGN KEY REFERENCES S(SNO),CNO CHAR(5) NOT NULL CONSTRAINT C_FORE FOREIGN KEY REFERENCES C(CNO),SCORE NUMERIC(3),CONSTRAINT S_C_PRIM PRIMARY KEY (SNO,CNO));
- 5CHECKCHECK0-100CHECK[CONSTRAINT ] CHECK ()3.10 SCSCORE 0100USE STUDENTCREATE TABLE SC(SNO CHAR(5),CNO CHAR(5),SCORE NUMERIC(5,1) CONSTRAINT SCORE_CHK CHECK(SCORE>=0 AND SCORE
-
3.11 USE STUDENTCREATE TABLE S(SNO CHAR(6) CONSTRAINT S_PRIM PRIMARY KEY,SN CHAR(8) CONSTRAINT SN_CONS NOT NULL,AGE NUMERIC(2) CONSTRAINT AGE_CONS NOT NULLCONSTRAINT AGE_CHK CHECK (AGE BETWEEN 15 AND 50),SEX CHAR(2) DEFAULT '',DEPT CHAR(10) CONSTRAINT DEPT_CONS NOT NULL);
-
3.2.3.2 SQLALTER TABLE1. ADDCREATE TABLEALTER TABLE ADD |
3.12 SUSE STUDENTALTER TABLE S ADDCLASS_NO CHAR(6),ADDRESS CHAR(40)
-
NULLNOT NULL 3.13 SCSCORE0-100USE STUDENTALTER TABLE SC ADD CONSTRAINT SCORE_CHK CHECK(SCORE BETWEEN 0 AND 100)
-
2. ALTER ALTER TABLEALTER COLUMN [NULL|NOT NULL]
3.14 SSNO8USE STUDENTALTER TABLE S ALTER COLUMNSNO CHAR(8)
-
NOT NULLNULL|NOT NULL
3.DROPALTER TABLEDROP CONSTRAINT
-
3.15 SAGE_CHKUSE STUDENTALTER TABLE SDROP CONSTRAINT AGE_CHK
3.2.3.3 RENAMERENAME TO 3.16 SSTUDENTUSE STUDENT RENAME S TO STUDENT
-
3.2.3.4 DROP TABLE
3.17 STUDENTUSE STUDENT DROP TABLE STUDENT
-
3.2.5 3.2.5.1 SQLSQLSQL SERVER 1. 2.
-
3.2.5.2 1. 2. PRIMARY KEYPRIMARY KEYUNIQUESQL SERVERPRIMARY KEYSQL SERVERPRIMARY KEY3.
-
3.2.5.3 CREATE INDEXCREATE [UNIQUE] [CLUSTER] INDEX ON ( [] [{,}] [])
UNIQUECLUSTERASCDESCASC3.18 SCSNOCNOUSE STUDENTCREATE UNIQUE INDEX SCI ON SC(SNO,CNO)
-
SCSCISNOCNOSCSNOSNOCNOUNIQUE(SNO,CNO)
3.19 TTNCREATE CLUSTER INDEX TI ON T(TN)TTITTN
-
1. 2. 3.2.5.4 DROP INDEXDROP INDEX .
3.20 SCSCIDROP INDEX SC.SCI
-
3.3 SQL3.3.1 SELECTSQLSELECTSELECTSELECT[{}]FROM[{}][WHERE][GROUP BY [HAVING ]][ORDER BY [ASC|DESC]];
-
SELECTSELECT[ALL|DISTINCT][TOP N [PERCENT][WITH TIES]]1 [AS 1][, 2 [ AS 2]][INTO ]FROM 1[[AS] 1][INNER|RIGHT|FULL|OUTER][OUTER]JOIN 2 [[AS] 2]ON
-
SELECT:WHEREFROMSELECTGROUPGROUPHAVINGHAVINGORDER
-
3.21 SELECT SNO, SN, AGE FROM S
3.22 SELECT * FROM S * S
3.23 SELECT DISTINCT SNO FROM SC
WHERE
-
3.24 SELECT SNAME NAME, SNO, AGE FROM SNAMESNAME
-
3.3.2WHEREWHERE1 2 3 3.8
-
3.3.2.1 3.25 C1SELECT SNO,SCORE FROM SC WHERE CNO=C1
3.26 85SELECT SNO,CNO,SCORE FROM SC WHERE SCORE>85
-
3.3.2.2 WHEREANDORNOTNOTANDOR
3.27 C1C285SELECT SNOCNOSCOREFROM SCWHERECNO=C1 OR CNO=C2 AND SCORE>=85
- 3.3.2.3 3.28 10001500SELECT TNO,TN,PROFFROM TWHERE SAL BETWEEN 1000 AND 1500SELECT TNO,TN,PROFFROM TWHERE SAL>=1000 AND SAL
-
3.29 10001500SELECT TNO,TN,PROFFROM TWHERE SAL NOT BETWEEN 1000 AND 15003.2.2.4 IN3.30 C1C2SELECT SNO, CNO, SCORE FROM SC WHERE CNO IN(C1, C2)OR
-
SELECT SNO, CNO, SCORE FROM SC WHERE CNO=C1 OR CNO= C2NOT IN 3.31 C1C2SELECT SNO, CNO, SCORE FROM SC WHERE CNO NOT IN(C1, C2)SELECT SNO, CNO, SCORE FROM SC WHERE CNO!=C1 AND CNO!= C2
-
3.3.2.5 LIKENOT LIKELIKE LIKE %_ 3.32 SELECT TNO, TN FROM TWHERE TN LIKE %
-
3.33 SELECT TNO, TN FROM TWHERE TN LIKE _ _%3.3.2.6NULL
-
3.34 SELECT SNO, CNOFROM SCWHERE SCORE IS NULLIS NULLSCORE=NULL
-
3.2.2SQL3.2
-
3.35 S1SELECT SUM(SCORE) AS TotalScore, AVG(SCORE) AS AveScoreFROM SCWHERE (SNO = 'S1')
SUMAVG
-
3.36 C1SELECT MAX(SCORE) AS MaxScore, MIN(SCORE) AS MinScore, MAX(SCORE) - MIN(SCORE) AS DiffFROM SCWHERE (CNO = 'C1')
3.37 SELECT COUNT(SNO) FROM SWHERE DEPT=''
-
3.38 SELECT COUNT(DISTINCT DEPT) AS DeptNum FROM SDISTINCTDEPTCOUNT
3.39 SELECT COUNT (SCORE) FROM SC
-
3.40 COUNT(*)SELECT COUNT(*) FROM SWHERE DEPT=
COUNT*DISTINCT
-
3.3.3 GROUP BY
3.42 SELECT TNO,COUNT(*) AS C_NUMFROM TCGROUP BY TNO
GROUP BYTNOTNOCOUNT
-
HAVING
3.43 SELECT SNO,COUNT(*) AS SC_NUM FROM SCGROUP BY SNO HAVING COUNT(*)>=2
GROUP BYSNOSNOCOUNTHAVINGCOUNT*>=2
-
SQLWHEREGROUP BY HAVINGWHEREGROUP BY HAVING
WHEREHAVINGWHEREHAVINGGROUP BYGROUP BYHAVING
-
3.3.5 ORDER BYORDER BYDESCASC
3.44 C1 SELECT SNO, SCOREFROM SCWHERE CNO='C1'ORDER BY SCORE DESC
-
3.45 C2C3C4C5SELECT SNO,CNO, SCORE FROM SCWHERE CNO IN ('C2' ,'C3', 'C4','C5')ORDER BY SNO,SCORE DESC
3.46 SELECT SNO,SUM(SCORE) AS TotalScore FROM SCWHERE SCORE>=60GROUP BY SNOHAVING COUNT(*)>=3ORDER BY SUM(SCORE) DESC
-
1.FROMSC2.WHERESCORE>=603.GROUP BYSNO4.HAVING5.SELECT6.ORDER BY
ORDER BY SUM(SCORE) DESC ORDER BY 2 DESC2
-
3.3.6 1FROMWHERE2JOIN
-
INNER JOIN LEFT OUTER JOINNULLRIGHT OUTER JOINNULLFULL OUTER JOINNULLCROSS JOIN
JOIN FROMON
-
3.3.6.1 3.47 1SELECT T.TNO ,TN,CNOFROM T,TCWHERE (T.TNO = TC. TNO) AND (TN=)
TN=T.TNO = TC.TNO TNO[.] [.] ,
-
TNOTNTTNO TCTNOTNTNCNO
2SELECT T.TNO,TN,CNOFROM T INNER JOIN TC ON T.TNO=TC.TNO AND T.TN=''
-
3SELECT R2.TNO,R2.TN, R1.CNO FROM(SELECT TNO,CNO FROM TC ) AS R1INNER JOIN (SELECT TNO ,TN FROM TWHERE TN='') AS R2ON R1.TNO=R2.TNO
-
3.48 SELECT S.SNO,SN,CN,SCOREFROM S,C,SCWHERE S.SNO=SC.SNO AND SC.CNO=C.CNO
WHERE
-
3.3.6.2 3.49 TTXYX, Y T
1SELECT X.TN,X.SAL AS SAL_a,Y.SAL AS SAL_b FROM T AS X ,T AS Y WHERE X.SAL>Y.SAL AND Y.TN=''
-
2SELECT X.TN, X.SAL,Y.SAL FROM T AS X INNER JOIN T AS YON X.SAL>Y.SAL AND Y.TN=''
3SELECT R1.TN,R1.SAL, R2.SAL FROM (SELECT TN,SAL FROM T ) AS R1INNER JOIN (SELECT SAL FROM TWHERE TN='') AS R2ON R1.SAL>R2.SAL
-
3.50 1SELECT SN,AGE,CNFROM S,C,SCWHERE S.SNO=SC.SNO AND SC.CNO=C.CNO2SELECT R3.SNO,R3.SN,R3.AGE,R4.CNFROM(SELECT SNO,SN,AGE FROM S) AS R3INNER JOIN(SELECT R2.SNO,R1.CNFROM(SELECT CNO,CN FROM C) AS R1INNER JOIN (SELECT SNO,CNO FROM SC) AS R2ON R1.CNO=R2.CNO) AS R4ON R3.SNO=R4.SNO
-
3.3.6.3 3.483.483.51 SQL SELECT S.SNO,SN,CN,SCOREFROM SLEFT OUTER JOIN SCON S.SNO=SC.SNOLEFT OUTER JOIN CON C.CNO=SC.CNO
-
3.3.7 WHERESELECT-FROM-WHERE255SQL
- 3.3.7.1 =, >, =,
-
, SELECT TNO,TNFROM TWHERE PROF=
-
3.3.7.2 ANYALL1. ANY3.53 C5SELECT TNFROM TWHERE TNO=ANY (SELECT TNO FROM TC WHERE CNO='C5')
-
C5(T2,T3,T5)ANYT2T3T5
SELECT TNFROM T,TCWHERE T.TNO=TC.TNOAND TC.CNO='C5
-
3.54 SELECT TN,SALFROM TWHERE SAL>ANY (SELECT SAL FROM T WHERE DEPT='') AND DEPT!= '' /**/(1500,900)1500900
-
SELECT TN,SALFROM TWHERE SAL> (SELECT MIN(SAL ) FROM T WHERE DEPT='') AND DEPT!= MIN900900
-
2. ININ=ANY3.553.53SELECT TNFROM TWHERE TNO IN (SELECT TNO FROM TC WHERE CNO='C5')
-
3. ALLALL3.56 SELECT TN,SALFROM TWHERE SAL>ALL (SELECT SAL FROM T WHERE DEPT='') AND DEPT!=
(1500,900)1500
-
SELECT TN,SALFROM TWHERE SAL> (SELECT MAX(SAL )FROM T WHERE DEPT='') AND DEPT!=
MAX1500
-
3.57 C5SELECT DISTINCT TNFROM TWHERE 'C5' !=ALL (SELECT CNO FROM TC WHERE TNO=T.TNO)!=ALLNOT IN!=ALLTTNO
-
TC5 C5
4. EXISTSEXISTSEXISTSWHERENOT EXISTSINEXISTS
-
3.583.53SELECT TNFROM TWHERE EXISTS (SELECT * FROM TC WHERE TNO=T.TNOAND CNO='C5')
TCWHERETN
-
3.59 SELECT SN FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE SNO = S.SNO AND CNO=C.CNO))
SC
-
3.4 SQL SQLDML3.4.1 INSERT INTO
3.4.1.1 INSERT INTO [([,])] VALUES() VALUES
-
VALUES 3.60 SS721INSERT INTO SVALUES ('s7','','',21,'')INTOVALUES
-
3.4.1.2
3.61 SCS7,C1INSERT INTO SC (SNO,CNO)VALUES ('s7',c1')
VALUESINTOINTOSCORENOT NULL
-
3.4.1.3 INSERT INTO [([,])]3.62 AVGSALAVGSALCREATE TABLE AVGSAL(DEPARTMENT VARCHAR(20),AVGSAL SMALLINT)
-
TAVGSALINSERT INTO AVGSALSELECT DEPT,AVG(SAL) FROM TGROUP BY DEPT
-
2.4.2SQLUPDATEUPDATE SET = [,=][WHERE ]SETWHEREWHERE
-
3.4.2.1 3.63 UPDATE T SET DEPT='' WHERE TN=''
3.4.2.2 3.64 1UPDATE S SET AGE=AGE+1
-
3.65 100020%
UPDATE T SET SAL=1.2*SALWHERE PROF='' AND SAL
-
3.4.2.3
3.66 C5100UPDATE T SET COMN=COMN+100WHERE TNO IN (SELECT T.TNO FROM T,TCWHERE T.TNO=TC.TNOAND TC.CNO='C5')
C5
-
3.4.2.4
3.67 1.2
UPDATE TSET SAL =(SELECT 1.2*AVG(SAL) FROM T)
-
3.4.3 DELETEDELETE FROM[WHERE ]WHEREWHERE
-
3.4.3.1 3.68 DELETE FROM T WHERE TN=
3.4.3.2 3.69 DELETE FROM TCTC
-
3.4.3.3
3.70 DELETEFROM TC WHERE TNO= (SELECT TNO FROM T WHERE TN= )
-
3.5 3.5.1 3.5.1.1 CREATE VIEWCREATE VIEW [()]AS
-
1.2.ORDER BY DISTINCT
3.71 SUB_TCREATE VIEW SUB_TAS SELECT TNO,TN,PROFFROM T WHERE DEPT =''
-
SUB_TTNO,TN,PROFSUB_TTNO,TN,PROF
SELECT
-
3.72 S_SC_CCREATE VIEW S_SC_C(SNO, SN, CN, SCORE) AS SELECT S.SNO, SN, CN, SCOREFROM S, C, SCWHERE S.SNO = SC.SNO AND SC.CNO = C.CNO
SSCSNO
-
3.73 S_AVGCREATE VIEW S_AVG (SNO,AVG)AS SELECT SNO, AVG (SCORE)FROM SC GROUP BY SNO
AVG
-
3.5.1.2 DROP VIEW
3.74 SUB_TDROP VIEW SUB_T
-
3.5.2 3.75SUB_TSELECT TNO,TNFROM SUB_T WHERE PROF=''
-
SUB_TTView Resolution,SELECT TNO,TNFROM T WHERE DEPT =AND PROF=
-
3.5.3
-
3.5.3.1 INSERT3.76 SUB_TT6INSERT INTO SUB_TVALUES ('T6','','')SUB_TTINSERT INTO TVALUES (T6, )
-
3.5.3.2 UPDATE3.77 SUB_T UPDATE SUB_T SET PROF = ''WHERE TN =
UPDATE TSET PROF=WHERE TN=AND DEPT=
-
3.5.3.3 DELETE3.78 SUB_TDELETE FROM SUB_TWHERE TN=DELETE FROM TWHERE TN= AND DEPT=
-
1. ,2. 3.753.
-
3.6 SQL SQLDCL(Data Control Language)3.6.1 3.6.1.1SQL
-
SQL SERVERCREATE TABLESELECTINSERTUPDATEDELETE3.6.1.2
-
3.6.2 3.6.2.1 SQLGRANTGRANT | [,|]TO ||PUBLIC[,|][WITH ADMIN OPTION]:PULBICWITH ADMIN OPTION
-
3.79 ZHANGSANCREATE TABLEGRANT CREATE TABLE TO ZHANGSAN
3.6.2.2 REVOKEREVOKE | [,|]FROM ||PUBLIC[,|]3.80 ZHANGSANCREATE TABLEREVOKE CREATE TABLE FROM ZHANGSAN
-
3.6.3 3.6.3.1 SQLGRANTGRANT ALL|[([,])][,]ON TO ||PUBLIC[,|][WITH GRANT OPTION]
-
ALLINSERTUPDATEONWITH ADMIN OPTION
-
3.81 STUSER1USER2GRANT ALLON S,TTO USER1,USER2
3.82 CGRANT SELECTON CTO PUBLIC
-
3.83 TUSER3,GRANT SELECT,UPDATE(PROF)ON TTO USER3WITH grant OPTIONUSER3GRANTUSER3USER4:GRANT SELECT,UPDATE(PROF)ON TTO USER4
-
3.6.3.2 REVOKEREVOKE | [,|]FROM ||PUBLIC[,|]
3.84 USER1CREVOKE SELECT ON CFROM USER1
-
3.85 USER3TREVOKE SELECT,UPDATE(PROF)ON TFROM USER3 cascade
3.83USER3TUSER4USER3TUSER4T
-
SQL SERVERSQLSQLSQL3.393.3 SQL