2023第三章SQL最新
第三章SQL语言目 录一、任务二、建表、删除表及修改表(数据定义DDL:CREATE,DROP) 三、插入值及导入值(数据操纵DML:INSERT,UPDATE,DELETE)四、SQL查询(数据查询DQL:SELECT)1. 概述2. 单表投影查询SELECT(1) 查询指定列(2) 查询全部列(3) 查询经过计算的值(4) 选取查询WHERE(5) 排序查询ORDER BY(6) 库函数(集函数)查询(7) 分组查询GROUP BY3.多表查询4.嵌套查询5.集合的并、交、差操作6.查询小结五、SQL授权(数据控制DCL:GRANT,REVOKE)六、存储过程、触发器第四章 关系规范化一、任务现有一学校欲建立其教务信息系统,要求对其学生的学号、姓名、年龄、性别、所在系部以及课程的编号、课程名称、课程学分、授课教师、学生学习各门课程的成绩进行管理。试给出ER图。为查询学生姓名、课程名称、所得成绩提供方便。考虑这一数据库的设计。SNOSNAMEDEPTSEXAGEStudentMGRADEStudyNCourseCNAMETEACHERCREDITCNO范关系模式General_R(SNO, SNAME,AGE,SEX,DEPT,CNO,CNAME , CREDIT, TEACHER, GRADE)关系模式S(SNO , SNAME ,AGE,SEX ,DEPT)SC(SNO,CNO,GRADE)C(CNO, CNAME ,CREDIT,TEACHER)视图CNAME_SNAME_GRADE(CN,SN,GRADE)二、建表、删除表及修改表(数据定义DDL:CREATE,DROP)MSDN 参考SyntaxCREATE TABLECREATE TABLE STUDENT( sno char(4), sname char(8), age int, sex char(2)SyntaxALTER TABLEUSE sc ALTER TABLE student ADD dept char(4)-CONSTRAINT ALTER TABLE student ADD phone int CONSTRAINT ck1 CHECK (phone>1 and phone <1000000000 )ALTER TABLE student DROP COLUMN sexALTER TABLE student ADD sex int CONSTRAINT ck2 DEFAULT 'M'-Primary KeyALTER TABLE student ADD CONSTRAINT sid PRIMARY KEY (sno)ALTER TABLE student DROP CONSTRAINT sid ALTER TABLE student ADD CONSTRAINT sid PRIMARY KEY (sno,sname)-重命名基本表RENAME TABLEEXEC sp_rename 'student','stu'SyntaxDROP TABLEEXEC sp_rename 'student','stu'建表CREATE TABLE STUDENT( sno char(20) PRIMARY KEY, sn char(8) NOT NULL, age int CHECK (age>15 AND age<45), sex char(2) DEFAULT '男', dept char(8)CREATE TABLE COURSE( cno char(5) PRIMARY KEY, cn char(100) NOT NULL,credit numeric(3,1), teacher char(8) CREATE TABLE SC( sno char(20) FOREIGN KEY REFERENCES student(sno),cno char(5) FOREIGN KEY REFERENCES course(cno), grade INT CHECK (grade>=0 AND grade<=100), CONSTRAINT scidPRIMARY KEY (sno,cno)建视图(修改视图)CREATE VIEW cn_sn_grade_view AS SELECT sn, cn, grade FROM student, course, sc WHERE student.sno=sc.sno and o=oSee the data in the view三、插入值及导入值(数据操纵DML:INSERT,UPDATE,DELETE)SyntaxINSERT INTOINSERT INTO STUDENT (SNO,SN,AGE, SEX,DEPT) VALUES ('S1', 'John', 18, '男','计算机')INSERT INTO STUDENT (SNO,SN,AGE, SEX,DEPT) VALUES ('S2', 'Johnson', 18, '男','计算机')UPDATE Student SET age =28 WHERE SNO='S1'DELETE FROM student WHERE SNO='3'日期的插入INSERT INTO sss (id, ddd) VALUES ('3022', 1111-11-11)导入值 从 excel 或word1EXCEL S_C_SC综合表(DATA PROBLEM : INSERT INTO COURSE TABLE 43106 DATA MINING 2 CHEN) TO DB IT WILL BE OK . (Foreign key question)2PROVE THAT VIEW IS A VIRTUAL RELATION3TXT DOES NOT WORK, IT NEED COLUMN SEPARATE MARKS.STUDENTsnosnagesexdeptS1赵毅18男计算机S2钱20男数学S3孙20女计算机S4李小红22男英语S5李键19女计算机S6吴课21男数学SCsnocnogradeS1C177S2C168S3C188S1C265S2C358S1C582S3C490S5C366S4C255S3C280COURSEcnocncreditteacherC1Database3周C2Network 2吴C3JAVA4郑C4Math2吴C5Algorithms2王C6Grafics2陈四、SQL查询(数据查询DQL:SELECT)4.1. 概述1) 检索 不改变数据本身2) 对现成的基本表(关系)和视图(虚表)进行数据查询3) SQL语言的格式查询语法SELECT查询的一般格式(1) SELECT ALL | DISTINCT <目标(2) 列表表达式> 别名(3) , <目标(4) 列表表达式> 别名(5) FROM <表/视图> 别名(6) ,<表/视图> 别名(7) WHERE <条件表达式>GROUP BY <列名(8) 1> HAVING <条件>ORDER BY <列名(9) 2> ASC | DESCENDING2) SELECT中<目标列表达式>的格式(1) *(2) <表名(3) >.*(4) <集函数> (DISTINCT | ALL *)1. 集函数:SUM、AVG、COUNT、MAX、MIN(5) <表名(6) .<属性列名(7) 表达式> , <表名(8) >.<属性列名(9) 表达式>4) WHERE中<条件表达式>的格式(1) <属性列名(2) > q <属性列名(3) > | <常量> | ANY/ALL (SELECT语句)(4) <属性列名(5) > NOT BETWEEN <属性列名(6) > | <常量> | (SELECT语句) AND <属性列名(7) > | <常量> | ANY/ALL (SELECT语句)(8) <属性列名(9) > NOT IN (<值1> ,<值2>) | (SELECT语句)(10) <属性列名(11) > NOT LIKE <匹配串>(12) <属性列名(13) > IS NOT NULL(14) NOT EXISTS (SELECT语句)(15) <条件表达式> AND | OR <条件表达式> (AND | OR <条件表达式>)4.2. 单表投影查询SELECT(1) 查询指定列a. 查询学生的姓名年龄和性别 SELECT Sn,Age,Sex FROM Studentb. 查询被学生选修课的课程号* SELECT Cno FROM Sc 消除重复的行:DISTINCT(ALL L(默认))SELECT DISTINCT Cno FROM Sc (2) 查询全部列1. 查询全体学生的详细记录 SELECT * FROM Student2. 按人为次序显示全体学生的详细记录 SELECT Sn,Dept,Age,Sex,Sno FROM Student(3) 查询经过计算的值1. 查询全体学生的出生年份 SELECT Sn,2014-Age FROM StudentSELECT Sn,2014-Age AS Birth FROM Student列标题使用别名 查询全体学生的出生年份,并使用别名. SELECT Sn