SQL-数据定义及查询)
实验二SQL语言——数据查询操作
![实验二SQL语言——数据查询操作](https://img.taocdn.com/s3/m/17628c6cec630b1c59eef8c75fbfc77da269979a.png)
实验二SQL语言——数据查询操作SQL (Structured Query Language) 是一种用于管理关系数据库系统的标准语言。
在数据查询操作方面,SQL 可以帮助用户从数据库中检索想要的数据,通过下面的实验,我们将深入了解 SQL 语言在数据查询操作中的应用。
一、SELECT语句SELECT语句是SQL中最常用的语句之一,它用于从数据库中选择需要查询的数据。
SELECT语句的基本语法如下:```SELECT列名1,列名2,...FROM表名;```例如,我们有一个名为 "Students" 的表,其中包含了学生的姓名、年龄和性别等信息。
要查询学生的姓名和年龄,我们可以使用以下SELECT 语句:```SELECT 姓名, 年龄 FROM Students;```二、WHERE子句WHERE子句用于在SELECT语句中添加过滤条件,只返回满足条件的数据。
下面是WHERE子句的基本语法:```SELECT列名1,列名2,...FROM表名WHERE条件;```例如,我们要查询年龄大于等于18岁的学生信息,可以使用以下SELECT语句:```SELECT * FROM Students WHERE 年龄 >= 18;```三、ORDERBY子句ORDERBY子句用于按照指定的列进行排序,可以按照升序或降序排列。
下面是ORDERBY子句的基本语法:```SELECT列名1,列名2,...FROM表名ORDERBY列名[ASC,DESC];```例如,我们要按照学生的年龄从小到大排序,可以使用以下SELECT语句:```SELECT * FROM Students ORDER BY 年龄 ASC;```四、GROUPBY子句GROUPBY子句用于将查询结果按照一个或多个列进行分组,并对每个组进行聚合操作。
下面是GROUPBY子句的基本语法:```SELECT列名1,列名2,...FROM表名GROUPBY列名1,列名2,...;```例如,我们要统计每个性别的学生人数```SELECT 性别, COUNT(*) FROM Students GROUP BY 性别;```五、HAVING子句HAVING子句用于在GROUPBY子句中添加过滤条件,只返回满足条件的分组。
sql 基础语法
![sql 基础语法](https://img.taocdn.com/s3/m/9dea4778590216fc700abb68a98271fe910eafff.png)
sql 基础语法
摘要:
1.SQL 简介
2.SQL 的基本语法
2.1 数据定义
2.2 数据操作
2.3 数据查询
2.4 数据控制
正文:
【1.SQL 简介】
SQL(Structured Query Language,结构化查询语言)是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL 是高级的非过程化编程语言,可以使程序员忽略系统的具体实现细节,只需指定数据的存储位置和存储方式,而不需要指定具体的存储方式和存取路径。
【2.SQL 的基本语法】
SQL 的基本语法包括数据定义、数据操作、数据查询和数据控制。
【2.1 数据定义】
数据定义主要是对数据库中的表进行定义,包括表名、列名、数据类型、主键和外键等。
数据定义的常用SQL 语句有CREATE TABLE、ALTER TABLE 和DROP TABLE 等。
【2.2 数据操作】
数据操作主要是对数据库中的数据进行添加、修改和删除等操作。
数据操作的常用SQL 语句有INSERT、UPDATE 和DELETE 等。
【2.3 数据查询】
数据查询是SQL 语言中最重要的功能之一,可以查询数据库中的数据,包括SELECT 语句和子查询等。
SELECT 语句是最基本的数据查询语句,可以查询表中的所有数据或者某一列的数据,也可以使用WHERE 子句进行条件查询。
【2.4 数据控制】
数据控制主要是对数据库中的数据进行控制,包括数据的访问权限、数据的备份和恢复等。
数据控制的常用SQL 语句有GRANT、REVOKE 和BACKUP 等。
第3章 SQL语言
![第3章 SQL语言](https://img.taocdn.com/s3/m/1c3bd61ca76e58fafab003c0.png)
SELECT SNO, CNO, SCORE FROM SC WHERE CNO=‘C1’ OR CNO= ‘C2’ 利用“NOT IN”可以查询指定集合外的元组。 例11 查询没有选修C1,也没有选修C2的学生的学号、课 程号和成绩。 SELECT SNO, CNO, SCORE FROM SC WHERE CNO NOT IN(‘C1’, ‘C2’) 等价于: SELECT SNO, CNO, SCORE FROM SC WHERE CNO!=‘C1’ AND CNO!= ‘C2’
注意:函数SUM和AVG只能对数值型字段进行计算。
23
例16 求选修C1号课程的最高分、最低分及之间相差的分 数 SELECT MAX(SCORE) AS MaxScore, MIN(SCORE) AS MinScore, MAX(SCORE) - MIN(SCORE) AS Diff FROM SC WHERE (CNO = 'C1') 例17 求计算机系学生的总数 SELECT COUNT(SNO) FROM S WHERE DEPT='计算机'
1. SQL语言类似于英语的自然语言,简洁易用。 2. SQL语言是一种非过程语言,即用户只要提出“干什 么”即可,不必管具体操作过程,也不必了解数据的 存取路径,只要指明所需的数据即可。 3. SQL语言是一种面向集合的语言,每个命令的操作对 象是一个或多个关系,结果也是一个关系。 4. SQL语言既是自含式语言,又是嵌入式语言。可独立 使用,也可嵌入到宿主语言中。 自含式语言可以独立使用交互命令,适用于终端 用户、应用程序员和DBA; 嵌入式语言使其嵌入在高级语言中使用,供应用 程序员开发应用程序。
10
例1 查询全体学生的学号、姓名和年龄。 SELECT SNO, SN, AGE FROM S 例2 查询学生的全部信息。 SELECT * FROM S 用‘ * ’表示S表的全部列名,而不必逐一列出。
数据库常用sql语句有哪些
![数据库常用sql语句有哪些](https://img.taocdn.com/s3/m/84d42391a1116c175f0e7cd184254b35eefd1a7b.png)
数据库常用sql语句有哪些数据库常用sql语句有哪些结构化查询语言简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
下面是店铺整理的数据库常用sql语句有哪些,欢迎大家分享。
数据库常用sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname,T#) 课程表SC(S#,C#,score) 成绩表Teacher(T#,Tname) 教师表问题:1、查询“001”课程比“002”课程成绩高的所有学生的学号;select a.S# from (select s#,score from SC where C#='001') a,(select s#,scorefrom SC where C#='002') bwhere a.score>b.score and a.s#=b.s#;2、查询平均成绩大于60分的同学的学号和平均成绩;select S#,avg(score)from scgroup by S# having avg(score) >60;3、查询所有同学的学号、姓名、选课数、总成绩;select Student.S#,Student.Sname,count(SC.C#),sum(score)from Student left Outer join SC on Student.S#=SC.S#group by Student.S#,Sname4、查询姓“李”的老师的个数;select count(distinct(Tname))from Teacherwhere Tname like '李%';5、查询没学过“叶平”老师课的同学的学号、姓名;select Student.S#,Student.Snamefrom Studentwhere S# not in (select distinct( SC.S#) from SC,Course,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;select S#,Snamefrom Studentwhere S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher where Teacher.T#=Course.T# and Tname='叶平'));8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2 from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2<score;9、查询所有课程成绩小于60分的同学的学号、姓名;select S#,Snamefrom Studentwhere S# not in (select Student.S# from Student,SC whereS.S#=SC.S# and score>60);10、查询没有学全所有课的同学的学号、姓名;select Student.S#,Student.Snamefrom Student,SCwhere Student.S#=SC.S# group by Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;select distinct SC.S#,Snamefrom Student,SCwhere Student.S#=SC.S# and C# in (select C# from SC where S#='001');13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;SC set score=(select avg(SC_2.score)from SC SC_2where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select S# from SC where C# in (select C# from SC where S#='1002')group by S# having count(*)=(select count(*) from SC where S#='1002');15、删除学习“叶平”老师课的SC表记录;Delect SCfrom course ,Teacherwhere Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、号课的平均成绩;Insert SC select S#,'002',(Select avg(score)from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分SELECT S# as 学生ID,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理,(SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语,COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩FROM SC AS tGROUP BY S#ORDER BY avg(t.score)18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分FROM SC L ,SC AS RWHERE L.C# = R.C# andL.score = (SELECT MAX(IL.score)FROM SC AS IL,Student AS IMWHERE L.C# = IL.C# and IM.S#=IL.S#GROUP BY IL.C#)ANDR.Score = (SELECT MIN(IR.score)FROM SC AS IRWHERE R.C# = IR.C#GROUP BY IR.C#);19、按各科平均成绩从低到高和及格率的百分数从高到低顺序SELECT t.C# AS 课程号,max(ame)AS 课程名,isnull(AVG(score),0) AS 平均成绩,100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数FROM SC T,Coursewhere t.C#=course.C#GROUP BY t.C#ORDER BY 100 * SUM(CASE WHEN isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004)SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分,100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数,SUM(CASE WHEN C# = '002' THEN score ELSE 0END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分,100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数,SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分,100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数,SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分,100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数FROM SC21、查询不同老师所教不同课程平均分从高到低显示SELECT max(Z.T#) AS 教师ID,MAX(Z.Tname) AS 教师姓名,C.C# AS 课程ID,MAX(ame) AS 课程名称,AVG(Score) AS 平均成绩FROM SC AS T,Course AS C ,Teacher AS Zwhere T.C#=C.C# and C.T#=Z.T#GROUP BY C.C#ORDER BY AVG(Score) DESC22、查询如下课程成绩第 3 名到第 6 名的学生成绩单:企业管理(001),马克思(002),UML (003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩SELECT DISTINCT top 3SC.S# As 学生学号,Student.Sname AS 学生姓名 ,T1.score AS 企业管理,T2.score AS 马克思,T3.score AS UML,T4.score AS 数据库,ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) as 总分FROM Student,SC LEFT JOIN SC AS T1ON SC.S# = T1.S# AND T1.C# = '001'LEFT JOIN SC AS T2ON SC.S# = T2.S# AND T2.C# = '002'LEFT JOIN SC AS T3ON SC.S# = T3.S# AND T3.C# = '003'LEFT JOIN SC AS T4ON SC.S# = T4.S# AND T4.C# = '004'WHERE student.S#=SC.S# andISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)NOT IN(SELECTDISTINCTTOP 15 WITH TIESISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0)FROM scLEFT JOIN sc AS T1ON sc.S# = T1.S# AND T1.C# = 'k1'LEFT JOIN sc AS T2ON sc.S# = T2.S# AND T2.C# = 'k2'LEFT JOIN sc AS T3ON sc.S# = T3.S# AND T3.C# = 'k3'LEFT JOIN sc AS T4ON sc.S# = T4.S# AND T4.C# = 'k4'ORDER BY ISNULL(T1.score,0) + ISNULL(T2.score,0) + ISNULL(T3.score,0) + ISNULL(T4.score,0) DESC);23、统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[<60]SELECT SC.C# as 课程ID, Cname as 课程名称,SUM(CASE WHEN score BETWEEN 85 AND 100 THEN 1 ELSE 0 END) AS [100 - 85],SUM(CASE WHEN score BETWEEN 70 AND 85 THEN 1 ELSE 0 END) AS [85 - 70],SUM(CASE WHEN score BETWEEN 60 AND 70 THEN 1 ELSE 0 END) AS [70 - 60],SUM(CASE WHEN score < 60 THEN 1 ELSE 0 END) AS [60 -] FROM SC,Coursewhere SC.C#=Course.C#GROUP BY SC.C#,Cname;24、查询学生平均成绩及其名次SELECT 1+(SELECT COUNT( distinct 平均成绩)FROM (SELECT S#,AVG(score) AS 平均成绩FROM SCGROUP BY S#) AS T1WHERE 平均成绩 > T2.平均成绩) as 名次,S# as 学生学号,平均成绩FROM (SELECT S#,AVG(score) 平均成绩FROM SCGROUP BY S#) AS T2ORDER BY 平均成绩 desc;25、查询各科成绩前三名的记录:(不考虑成绩并列情况)SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 3 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;26、查询每门课程被选修的学生数select c#,count(S#) from sc group by C#;27、查询出只选修了一门课程的全部学生的学号和姓名select SC.S#,Student.Sname,count(C#) AS 选课数from SC ,Studentwhere SC.S#=Student.S# group by SC.S# ,Student.Sname having count(C#)=1;28、查询男生、女生人数Select count(Ssex) as 男生人数 from Student group by Ssex having Ssex='男';Select count(Ssex) as 女生人数 from Student group by Ssex having Ssex='女';29、查询姓“张”的学生名单SELECT Sname FROM Student WHERE Sname like '张%';30、查询同名同性学生名单,并统计同名人数select Sname,count(*) from Student group by Sname having count(*)>1;;31、1981年出生的学生名单(注:Student表中Sage列的类型是datetime)select Sname, CONVERT(char (11),DATEPART(year,Sage)) asagefrom studentwhere CONVERT(11),DATEPART(year,Sage))='1981';32、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列Select C#,Avg(score) from SC group by C# order by Avg(score),C# DESC ;33、查询平均成绩大于85的所有学生的学号、姓名和平均成绩select Sname,SC.S# ,avg(score)from Student,SCwhere Student.S#=SC.S# group by SC.S#,Sname having avg(score)>85;34、查询课程名称为“数据库”,且分数低于60的`学生姓名和分数Select Sname,isnull(score,0)from Student,SC,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# and ame='数据库'and score<60;35、查询所有学生的选课情况;SELECT SC.S#,SC.C#,Sname,CnameFROM SC,Student,Coursewhere SC.S#=Student.S# and SC.C#=Course.C# ;36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数;SELECT distinct student.S#,student.Sname,SC.C#,SC.scoreFROM student,ScWHERE SC.score>=70 AND SC.S#=student.S#;37、查询不及格的课程,并按课程号从大到小排列select c# from sc where scor e<60 order by C# ;38、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;select SC.S#,Student.Sname from SC,Student where SC.S#=Student.S# and Score>80 and C#='003';39、求选了课程的学生人数select count(*) from sc;40、查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩select Student.Sname,scorefrom Student,SC,Course C,Teacherwhere Student.S#=SC.S# and SC.C#=C.C# and C.T#=Teacher.T# and Teacher.Tname='叶平' and SC.score=(select max(score)from SC where C#=C.C# );41、查询各个课程及相应的选修人数select count(*) from sc group by C#;42、查询不同课程成绩相同的学生的学号、课程号、学生成绩select distinct A.S#,B.score from SC A ,SC B whereA.Score=B.Score and A.C# <>B.C# ;43、查询每门功成绩最好的前两名SELECT t1.S# as 学生ID,t1.C# as 课程ID,Score as 分数FROM SC t1WHERE score IN (SELECT TOP 2 scoreFROM SCWHERE t1.C#= C#ORDER BY score DESC)ORDER BY t1.C#;44、统计每门课程的学生选修人数(超过10人的课程才统计)。
《数据库原理及应用》第五章SQL查询
![《数据库原理及应用》第五章SQL查询](https://img.taocdn.com/s3/m/4e37076b0b1c59eef8c7b426.png)
SQL语言
SQL功能 命令动词
数据查询
数据定义 数据操纵
SELECT
CREATE、DROP、ALTER INSERT、UPDATE、DELETE
数据控制
GRANT、REVOKE
SQL语言
SQL语言的优点在于SQL不是面向过程的 语言,使用SQL语言只需描述做什么,而 不需要描述如何做,为使用者带来极大的 方便。本章将以讨论SQL的数据查询语言 为主,同时介绍数据定义语言和数据操纵 语言。本章中大部分例题使用“学生管理” 数据库,并假定数据库在Access的当前目录 下。
简单查询----选择记录
WHERE子句通过指定查询条件,可以在表中找出满足条件 的记录。查询条件可以是任意复杂的逻辑表达式。 当WHERE子句需要指定一个以上的查询条件时,要使用逻 辑运算符AND、OR和NOT将其连接成复合的逻辑表达式。 其优先级由高到低为:NOT、AND、OR,可以使用括号改 变优先级。 条件查询还可以使用LIKE或NOT LIKE进行部分匹配查询。* 表示任意长度的字符串;?表示任意单个字符。 在查询中还可以使用查询谓词,查询谓词IN 和NOT IN用于 检索属于(IN)或不属于(NOT IN)指定集合的记录。 例10 查询成绩在60分以下(不包括60分)、90分以上(含 90分)学生的学号。
连接查询(多表查询)
例13 查询会计系学生选修课程及成绩,要求查询结果中含 属性学号、姓名、课程名称和成绩。 SELECT student.学号,姓名,课程名称,成绩 FROM student,course,grade WHERE 所属院系='会计学院' and student.学号=grade. 学号 and grade.课程编号=course.课程编号 这个查询涉及到两个表,查询所要求的结果来自两个表,查 询的条件也涉及到两个表,所以有“FROM student,grade”; 这两个表之间是有联系的,这种联系是通过父表的主关键字 (student中的学号)和子表的外部关键字(grade表的学号) 建立的,所以有命令子句WHERE中的筛选条件“student. 学号=grade.学号”。 由于student表和grade表都有学号属性,因此在SELECT子 句中要用前缀的形式“student.学号”指明取自哪个表中的 学号;此例中用“grade.学号”的形式,查询结果是一样的。
第6讲SQL语言基础及数据定义功能
![第6讲SQL语言基础及数据定义功能](https://img.taocdn.com/s3/m/39f6ad4fc850ad02de804159.png)
3、简洁易用
SQL功能极强,完成核心功能只需9个动词。
表 3.1 SQL 语言的动词 SQL 功 能 数 据 查 询 数 据 定 义 数 据 操 纵 数 据 控 制 动 词 SELECT CREATE, DROP, ALTER INSERT,UPDATE DELETE GRANT,REVOKE
4、面向集合的操作方式
PRIMARY KEY ( Sno, Cno ),
FOREIGN KEY ( Sno ) REFERENCES Student ( Sno ), FOREIGN KEY ( Cno ) REFERENCES Course ( Cno ) )
二、删除表
删除表的语句格式为: DROP TABLE <表名> 例:删除test表的语句为: DROP TABLE test { [, <表名> ] „ }
课程号 Cno 1 2 3 4 5 6 7
课程名 Cname 数据库 数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言
先行课 Cpno 5 1 6 7 6
学分 Ccredit 4 2 4 3 4 2 4
4、SC表数据
学号 Sno 200215121 200215121 200215121 200215122 200215122
第6讲 SQL语言基础及数据定义功能
本讲内容
1 2 3 4
SQL概述
学生课程数据库简介
SQL语言功能概述
数据定义
6.1 SQL概述
SQL(Structured Query Language)
结构化查询语言,是关系数据库的标准语言 SQL是一个通用的、功能极强的关系数据库语言 现在所有的关系数据库管理系统都支持SQL,就连 个人计算机上使用的数据库也不例外。
数据库第4章 SQL语言基础及数据定义功能
![数据库第4章 SQL语言基础及数据定义功能](https://img.taocdn.com/s3/m/7bb7cc8614791711cd791730.png)
第4章SQL语言基础及数据定义功能用户使用数据库时需要对数据库进行各种各样的操作,如查询数据,添加、删除和修改数据,定义、修改数据模式等。
DBMS必须为用户提供相应的命令或语言,这就构成了用户和数据库的接口。
接口的好坏会直接影响用户对数据库的接受程度。
数据库所提供的语言一般局限于对数据库的操作,它不是完备的程序设计语言,也不能独立地用来编写应用程序。
SQL(Structured Query Language,结构化查询语言)是用户操作关系数据库的通用语言。
虽然叫结构化查询语言,而且查询操作确实是数据库中的主要操作,但并不是说SQL只支持查询操作,它实际上包含数据定义、数据查询、数据操作和数据控制等与数据库有关的全部功能。
SQL已经成为关系数据库的标准语言,所以现在所有的关系数据库管理系统都支持SQL。
本章将主要介绍SQL语言支持的数据类型以及定义基本表和索引的功能。
4.1 SQL语言概述SQL语言是操作关系数据库的标准语言,本节介绍SQL语言的发展过程、特点以及主要功能。
4.1.1 SQL语言的发展最早的SQL原型是IBM的研究人员在20世纪70年代开发的,该原型被命名为SEQUEL (Structured English QUEry Language)。
现在许多人仍将在这个原型之后推出的SQL语言发音为“sequel”,但根据ANSI SQL委员会的规定,其正式发音应该是“ess cue ell”。
随着SQL语言的颁布,各数据库厂商纷纷在其产品中引入并支持SQL语言,尽管绝大多数产品对SQL语言的支持大部分是相似的,但它们之间还是存在一定的差异,这些差异不利于初学者的学习。
因此,我们在本章介绍SQL时主要介绍标准的SQL语言,我们将其称为基本SQL。
从20世纪80年代以来,SQL就一直是关系数据库管理系统(RDBMS)的标准语言。
最早的SQL标准是1986年10月由美国ANSI(American National Standards Institute)颁布的。
数据库第3章
![数据库第3章](https://img.taocdn.com/s3/m/6b9b5c0102020740be1e9bbc.png)
使用DROP子句删除指定的完整性约束条件 【例3-7】 删除student表学生姓名必须取惟一值的约束 条件。 ALTER TABLE student DROP UNIQUE(name); 使用MODIFY子句修改基本表的列定义 【例3-8】 将student 表name列的数据类型改为定长字符 串型。 ALTER TABLE student MODIFY name char(8) NOT NULL; 注意: (1)修改列定义时,要将原来的列级约束条件写上,否则 原有的列级约束会不起作用。 (2)修改列定义时,有可能会破坏已有的数据,应事先作 好备份工作。 (3)SQL未提供删除属性列的语句,只能采取间接的方法
3.2 数据定义
表3-1 SQL的数据定义语句 操作对象 数据库 操作方式 创建语句 CREATE DATABASE CREATE TABLE 删除语句 DROP DATABASE 修改语句 ALTER DATABASE
基本表 索引
视图
DROP
TABLE INDEX
VIEW
ALTER TABLE
CREATE INDEX DROP
3.2.4 建立索引 索引的概念 索引是建立在列上的一种数据库对象,它 对表中的数据提供逻辑顺序,当在数据库表中 搜索某一行时,可以通过使用索引来找到它的 物理位置。索引建立后,什么时候使用索引以 及使用哪一个索引(当有多个索引存在时), 由DBMS内部根据情况自行决定,不需要人员干 预。索引是动态的,每当数据库表的数据更新 一次,相应的索引也随之更新。
CREATE VIEW DROP
3.2.1 数据库的创建与删除 创建数据库 SQL使用命令CREATE DATABASE创建数据库,其一般语法 如下: CREATE DATABASE <数据库名>; 【例3-1】创建一个简单数据库。 CREATE DATABASE MyDb; 删除数据库 SQL使用命令DROP DATABASE删除一个或多个数据库,其 一般语法如下: DROP DATABASE <数据库名1> [,<数据库名2>][,…]; 【例3-2】删除数据库MyDb。 DROP DATABASE MyDb;
SQL教程(四)
![SQL教程(四)](https://img.taocdn.com/s3/m/775e1631b90d6c85ec3ac655.png)
数据查询-空行常量列 数据查询 空行常量列
查询空行 SELECT SName FROM Students WHERE SEmail IS NULL
思考:非空行怎么查?
使用常量列 SELECT 姓名=SName,地址= SAddress,'河北新龙' AS 学校 名称 FROM Students
7/38
7
数据查询-基础 数据查询 基础
查询全部的行和列 SELECT * FROM Students 查询部分行 SELECT SCode,SName,SAddress FROM Students WHERE SAddress = '河南新乡' SELECT SCode,SName,SAddress FROM Students WHERE SAddress <> '河南新乡'
2/38
2
目标
理解查询的机制 使用SELECT语句进行条件查询 使用 语句进行条件查询 在查询中返回限制行, 在查询中返回限制行,进行查询排序 在查询中使用表达式, 在查询中使用表达式,运算符和函数
3/38
3
什么是查询? 什么是查询?
SELECT * FROM SALES
查询请求 查询结果集 Application Logic SQL SERVER
17/38 17
系统函数
函数名 CONVERT 描述 用来转变数据类型 举例 SELECT CONVERT (VARCHAR (5), 12345) 返回:字符串12345 SELECT CURRENT_USER 返回:你登录的用户名 SELECT DATALENGTH ('中国A盟') 返回:7 SELECT HOST_NAME() 返回:你所登录的计算机的名字 SELECT SYSTEM_USER 返回:你当前所登录的用户名 SELECT USER_NAME(1) 返回:从任意数据库中返回"dbo"
第4章 标准查询语言SQL
![第4章 标准查询语言SQL](https://img.taocdn.com/s3/m/71abc0b3050876323112129c.png)
(2)<列名>:规定了该列(属性)的名称。一个表中不能有两列同名。 (3)<数据类型>:规定了该列的数据类型。各具体DBMS所提供的数据类型是不同的; 本书使用的是SQL Server 2005中规定的数据类型。 (4)完整性约束:完整性约束规则在该命令中较为复杂,为了学习方便,没有把命令 的全部内容一次写出来,这里主要用到下列三类子句:
SQL语言的主பைடு நூலகம்特点
(2)高度非过程化。 SQL语言与各种关系数据库DBMS中的语言一样是一 种高度非过程化语言。使用时,只要指明“做什么?” 不必像高级语言那样指明“怎样做?”,因此用户无 需了解文件与数据的存取路径,这种存取路径的SQL 语句的操作过程是由系统自动来完成。这不仅大大减 轻了编程人员的负担,还有利于提高数据的独立性。
定义数据库内基本表
实例说明: (1)“教师”表:T,由教师编号(TNO)、姓名(TN)、性别(SEX)、 年龄(AGE)、职称(ZC)和所在专业(DEPT)6个属性组成。可记为: T(TNO,TN,SEX,AGE,ZC,DEPT) (2)“课程”表:C,由课程号(CNO)、课程名(CN)、课程性质 (CX)和学分(CT)4个属性组成。可记为: C(CNO,CN,CX,CT) (3)“教师授课”表:TC,由教师编号(TNO)、课程号(CNO)、教 龄(YEAR)3个属性组成,这里的教龄是指教授这门课的教龄。可记为: TC(TNO,CNO,YEAR)
SQL语言-数据类型+数据定义
![SQL语言-数据类型+数据定义](https://img.taocdn.com/s3/m/e646a374f242336c1eb95e73.png)
例4.15 给book_manage 数据库中添加一个数据文件。 alter database book_manage add file ( name = book_manage_second, filename="c:\mydatabase\newfile.sdf" ) 例4.15 删除book_manage 数据库中的次要数据文件 alter database book_manage remove file book现方式做保护处理对用户上传分享的文档内容本身不做任何修改或编辑并不能对任何下载内容负责
第4讲 SQL语言
4.1 SQL概述 (P21教材2.1-2.2)
4.1 SQL概述
• SQL(Structured Query Language)
结构化查询语言,是关系数据库的标准语言
MAXSIZE:指定 文件可以增长到的最大大小。 可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 为单位。默认为 MB。指定一个整 数,不要包含小数位。如果没有指定 max_size,那么 文件将增长到磁盘变满为止。 UNLIMITED:指定文件将增长无上限,到磁盘变满 为止。
1.创建及修改数据库 (1) 创建新数据库 基本语法如下: CREATE DATABASE database_name [ ON [ PRIMARY ] [< filespec > [ ,...n ] ] ] [ LOG ON { < filespec > [ ,...n ] } ] 其中< filespec > 语法如下:
(2) 用系统存储过程显示数据库结构 可以使用系统提供的系统存储过程sp_helpdb 来显示 数据库信息,其语法如下: sp_helpdb [[@dbname=] 'name']
SQL数据定义与数据查询
![SQL数据定义与数据查询](https://img.taocdn.com/s3/m/94eb766e1eb91a37f1115cae.png)
数据库上机报告——数据定义与数据查询一、写明实验所采用的实验环境:硬件环境:普通联网的PC机;操作系统:Windows 2000或者Windows XP;数据库管理系统:MS SQL Server 2005。
二、给出实验内容与完成情况:(一)使用命令行方式建立学生课程数据库(1) 用SQL语言建立学生课程数据库,数据库命名:SC_学号后四位及姓名,如SC_3112liyan;CREATE DATABASE SC_1224cxjON(NAME= SC_1224cxj_dat,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\SC_1224cxj_dat.mdf')LOG ON(NAME= SC_1224cxj_log,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\ SC_1224_log.ldf');(2) 用SQL语言在学生课程数据库中建立3个表,要求进行完整性定义:学生关系Student(Sno,Sname,Ssex,Sage,Sdept)其中Sno不能为空,值是唯一的,并且Sname取值也唯一,Sage自定义约束“大于16”课程关系Course(Cno,Cname,Cpno,Ccredit) 其中Cno不能为空,值是唯一的,并且Cname取值也唯一教师关系Teacher(Tno,Tname,Department,Email,Salary) 其中Tno不能为空,值是唯一的选修关系SC(Sno,Cno,Grade) 其中Sno和Cno不能为空,(Sno, Cno)为主码,Grade的数据类型为int建立Student表:CREATE TABLE Student(Sno CHAR(9)PRIMARY KEY,Sname CHAR(40)UNIQUE,Ssex CHAR(2),Sage SMALLINT CHECK(Sage>16),Sdept CHAR(20));建立Course表:CREATE TABLE Course(Cno CHAR(4)PRIMARY KEY,Cname CHAR(40)UNIQUE,Cpno CHAR(4),Credit SMALLINT,CONSTRAINT FK_C FOREIGN KEY(Cpno)REFERENCES Course(Cno));建立Teacher表:CREATE TABLE Teacher(Tno CHAR(4)PRIMARY KEY,Tname CHAR(40),Department CHAR(20),Email CHAR(100),Salary INT);建立SC表:CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY(Sno,Cno),CONSTRAINT FK_SC1 FOREIGN KEY(Sno)REFERENCES Student(Sno),CONSTRAINT FK_SC2 FOREIGN KEY(Cno)REFERENCES Course(Cno));(3) 修改数据表:✓将SC表中Grade的数据类型改为float;ALTER TABLE SC ALTER COLUMN Grade FLOAT;✓在Student表中增加一个属性Scome记录学生的入学时间,其数据类型为DATETIME;ALTER TABLE Student ADD Scome DATETIME;✓删除Student表中新增加Scome属性;ALTER TABLE Student DROP COLUMN Scome;✓删除表Teacher表中的Email属性;ALTER TABLE Teacher DROP COLUMN Email;✓删除Student表中对Sname属性创建的Unique约束。
通俗易懂解释sql查询
![通俗易懂解释sql查询](https://img.taocdn.com/s3/m/c45dc0b9c9d376eeaeaad1f34693daef5ef713fd.png)
通俗易懂解释sql查询SQL查询是一种用于从数据库中检索特定数据的技术。
它允许用户利用结构化查询语言(SQL)编写查询语句,并根据特定条件从数据库中检索出所需的数据。
本文将一步一步地解释SQL查询,并提供示例说明。
第一步:连接到数据库要开始执行SQL查询,首先需要连接到数据库。
数据库是一个存储和组织数据的仓库,可以是关系型数据库(如MySQL、Oracle等)或非关系型数据库(如MongoDB、Redis等)。
连接到数据库通常涉及提供数据库的连接信息,例如主机名、端口号、用户名和密码。
一旦成功连接到数据库,就可以开始执行SQL查询。
第二步:选择要查询的表在SQL查询中,表是存储数据的基本单位。
表由一系列行和列组成,并包含特定类型的数据。
在执行查询之前,需要明确指定要查询的表。
可以使用SELECT语句从单个表或多个表中检索数据。
例如,要从名为"students"的表中检索所有学生的信息,可以使用以下语句:SELECT * FROM students;这将返回“students”表中的所有数据。
第三步:筛选所需的数据在真实的情况下,我们往往需要筛选出符合特定条件的数据,而不是返回所有数据。
为了实现这个目的,可以使用WHERE子句。
WHERE子句允许我们提供条件,以便在查询中只返回满足条件的数据。
例如,如果我们只想检索年龄大于18岁的学生的信息,可以使用以下语句:SELECT * FROM students WHERE age > 18;这将返回满足条件(年龄大于18岁)的所有学生的信息。
第四步:指定要返回的列有时候我们只对表中的特定列感兴趣,而不是返回所有列的数据。
为了实现这一点,可以在SELECT语句中明确指定要返回的列。
例如,如果我们只对学生的姓名和年龄感兴趣,可以使用以下语句:SELECT name, age FROM students;这将返回只包含姓名和年龄列的学生信息。
07_SQL-数据定义及操纵-25
![07_SQL-数据定义及操纵-25](https://img.taocdn.com/s3/m/b99cd86fb84ae45c3b358c8e.png)
INTO子句 指定要插入数据的表名及属性列,属性列的顺序可与表定义中 的顺序不一致。 若未指定属性列:表示要插入的是一条完整的元组,且属性 若未指定属性列 列属性与表定义中的顺序一致。否则,若指定部分属性列 若指定部分属性列: 若指定部分属性列 插入的元组在其余属性列上取空值 VALUES子句 提供的值必须与INTO子句匹配
SQL数据定义语言
例:建立一个“学生选课”表SC,它由学号 Sno、课程号Cno,修课成绩Grade组成,其 中(Sno, Cno)为主码。
CREATE TABLE SC( Sno CHAR(7) , Cno CHAR(4) , Grade int, Primary key (Sno, Cno), Foreign key (Sno) References student(Sno), Foreign key (Cno) References Course(Cno));
Ssm
SQL数据定义语言
例:创建一个学生表 建立一个“学生”表Student,它由学号Sno、姓名 Sname、性别Ssex、年龄Sage、所在系Sdept五个 属性组成。其中学号不能为空,值是唯一的,并且姓 名取值也唯一。
CREATE TABLE Student( Sno CHAR(9) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(2), Sage NUMERIC(2,0), Sdept CHAR(20) );
ALTER TABLE student DROP unique(sname);
Ssm
数据操纵语言
插入数据 两种插入数据方式
¤ 插入单个元组 ¤ 插入子查询结果(参见子查询内容)
Ssm
数据库原理及应用-(第12章 SQL语句)
![数据库原理及应用-(第12章 SQL语句)](https://img.taocdn.com/s3/m/bb783ad226fff705cc170a58.png)
网状模型和层次模型的数据操作语言都是过
程化的,其使用难度大,因而应用范围受到 限制。
12.1.3 SQL 特 点
相反,作为关系数据库标准语言的SQL语言,
由于其高度的非过程化而极大地方便了用户
的使用,获得了用户的青睐。
12.1.3 SQL 特 点
3、完备而强大的功能 多数非关系数据库的数据库语言都只能适
外语系的学生的学号和姓名
12.2.2 条件查询
答: SELECT SNO,SNAME FROM STUDENT WHERE SSEX=„女’ AND SAGE<19 AND SDEPA=„外语系’
12.2.2 条件查询
查询结果:
12.2.2 条件查询
例3:查询所有性别为女或者年龄小于19岁
语言,又可以作为嵌入式语言嵌入宿主语言
中与宿主语言的语句进行交互。
12.1.3 SQL 特 点
在关系数据库管理系统中,SQL可以在交互
环境下供终端用户使用
如:Visual FoxPro 6.0就可以在命令窗口中
直接键入Select-SQL命令进行查询。
12.1.3 SQL 特 点
在高级语言如:Fortran、Cobol、Pascal、
12.2.2 条件查询
查询结果:
多表查询
两个乃至多个表中获得所需的查询信息,这 就需要多表查询
多表查询
例:列出全部学生的名字和他们所选修科目
的名称和成绩
多表查询
答: SELECT STUDENT.SNAME, AME,SC.GRADE FROM STUDENT,COURSE,SC WHERE STUDENT.SNO=SC.SNO AND O=O
如何使用SQL进行数据库查询
![如何使用SQL进行数据库查询](https://img.taocdn.com/s3/m/d8eb568d81eb6294dd88d0d233d4b14e84243e06.png)
如何使用SQL进行数据库查询第一章:SQL概述SQL(Structured Query Language)是一种用于管理和操作关系型数据库的编程语言。
它可以帮助用户向数据库发送查询请求,并且从中检索所需的数据。
本章将介绍SQL的基本概念和一些常用术语。
1.1 SQL语句SQL语句是由关键字和操作符组成的指令,用于对数据库进行增删改查操作。
常见的SQL语句包括SELECT、INSERT、UPDATE和DELETE。
1.2 数据库表数据库表是SQL中最基本的概念,它由行和列组成。
表中的每一行代表一个记录,每一列代表不同的字段或属性。
表的结构由字段名和字段类型定义。
1.3 SELECT语句SELECT语句用于从数据库表中检索数据。
它可以指定要检索的字段、过滤条件和排序方式。
例如,可以使用SELECT语句检索某个表中所有的记录,或者检索满足特定条件的记录。
第二章:基本查询操作本章将介绍一些常用的基本查询操作,包括检索数据、排序和过滤。
2.1 检索数据使用SELECT语句可以检索数据库表中的数据。
可以指定要检索的字段,也可以使用通配符*检索所有字段。
例如,可以使用SELECT语句检索某个表中所有记录的编号和姓名字段。
2.2 排序使用ORDER BY子句可以对查询结果进行排序。
可以按照一个或多个字段进行升序或降序排序。
例如,可以使用SELECT语句检索某个表中所有记录,并按照年龄字段降序排序。
2.3 过滤使用WHERE子句可以设置查询的过滤条件。
可以使用比较运算符、逻辑运算符和通配符来设定条件。
例如,可以使用SELECT语句检索某个表中满足特定条件的记录,如年龄大于30岁的所有员工。
第三章:高级查询操作本章将介绍一些高级的查询操作,包括聚合函数、分组和联接。
3.1 聚合函数聚合函数用于对数据进行统计计算,如求平均值、求和、计数等。
常见的聚合函数包括SUM、AVG、COUNT和MAX/MIN。
例如,可以使用SELECT语句计算某个表中某一列的平均值。
数据库课件 第四章 结构化查询语言
![数据库课件 第四章 结构化查询语言](https://img.taocdn.com/s3/m/e6db97add1f34693daef3e39.png)
4.2.2 基本表的修改
【例4.4】向抢修工程计划表salvaging增加‚工程项目负 责人‛列,数据类型为字符型。
注意:不论基本表中原来是否已有数据,新增加的列一律为空值。
4.3 数据查询
执行过程:
(1)读取FROM子句中基本表、视图的数据,执行笛卡 儿积操作;
(2)选取满足WHERE子句中给出的条件表达式的元组; (3)按GROUP子句中指定列的值分组,同时提取满足 HAVING子句中组条件表达式的那些组;
(4)按SELECT子句中给出的列名或列表达式求值输出;
(5)ORDER子句对输出的目标表进行排序,可选择升序 或降序.
• 结果集
– 查询操作的对象是关系,结果还是一个关系, 是一个结果集,而且是一个动态数据集。
4.3 数据查询
我们以电力抢修工程数据库 为例说明SELECT语 句的各种用法.
(a) stock表
4.3 数据查询
(b) salvaging表
4.3 数据Βιβλιοθήκη 询(c) out_stock表
4.3.1 单表查询
4.2.1 基本表的定义
(3)配电物资领料出库表: out_stock(prj_num, mat_num, amount, get_date, department) 主码为(prj_num, mat_num) 各属性含义如下: 工程项目编号(prj_num) 物资编号(mat_num) 领取数量(amount) 领料日期(get_date) 领料部门(department)
4.2.1 基本表的定义
第03章-关系数据库标准语言SQL
![第03章-关系数据库标准语言SQL](https://img.taocdn.com/s3/m/16dc062b0242a8956aece4c1.png)
语句 CREATE
功能 创建数据库或数据库对象
ALTER
修改数据库或数据库对象
DROP
删除数据库或数据库对象
说明 不同数据库对象参数不同 不同数据库对象参数不同 不同数据库对象参数不同
SQL的组成(续) ❖ 数据操纵语言DML(Data Manipulation Language):用于执行对数据库检索和更新。
定义基本表(续)
❖ 表的完整性约束条件 创建表时可指定表的完整性约束条件,也称为约束: 列级完整性约束条件 完整性约束条件涉及到该表的当前一个属性列 表级完整性约束条件 完整性约束条件涉及到该表的一个或多个属性列
➢ RDBMS自动检查对表的操作是否违背表的完整性约束条件
学生表Student
数据库 模式
表 视图
模式 表
索引
定义模式(续)
❖ 基本格式: CREATE SCHEMA [<模式名>] AUTHORIZATION <用户名> CREATE、SCHEMA 、AUTHORIZATION为保留字 保留字习惯使用大写 CREATE SCHEMA 为定义模式的语句 <模式名>为所创建的模式的名称 尖括号表示用户提供的参数 方括号表示参数可选 AUTHORIZATION <用户名> 子句用于指定模式的所有者 <用户名>指定一个用户
❖ 也可以使用带指定参数值的命令创建数据库
3.3 数据定义
3.3.1 模式的定义与删除 3.3.2 基本表的定义、删除与修改 3.3.3 索引的建立与删除
定义模式
❖ 模式(SCHEMA) 定义模式实际上是定义了一个命名空间(或容器)。 在这个空间中可以定义该模式包含的数据库对象 例如基本表、视图、索引、存储过程等。 定义模式能更好的管理数据库中的对象
SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,是一个综合的、通用数据库3.2.1
![SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,是一个综合的、通用数据库3.2.1](https://img.taocdn.com/s3/m/f45794c56137ee06eff9185e.png)
SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,是一个综合的、通用的、功能极强,同时又简洁易学的语言。
其主要特点如下:1.综合统一非关系模型(层次模型、网状模型)的数据语言一般分为模式数据定义语言(Data Definition Language,简称模式DDL)、外模式数据定义语言(外模式DDL)、子模式数据定义语言(子模式DDL)以及数据操纵语言(Data Manipulation Language,简称DML),它们分别完成模式、外模式、内模式的定义和数据存取、处置功能。
而SQL语言则集数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据以建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作的要求,这就为数据库应用系统开发提供了良好的环境。
2.高度非过程化非关系数据模型的数据操纵语言是面向过程的语言,要完成某项请求,必须指定存取路径。
而用SQL语言进行数据操作,用户只需提出“做什么”,而不必指明“怎么做”。
因此用户无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。
这不但大大减轻了用户负担,而且有利于提高数据独立性。
3.用同一种语法结构提供两种使用方式SQL语言既是自含式语言,又是嵌入式语言。
作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C、COBOL、FORTRAN、PL/1)程序中,供程序员设计程序时使用。
而在两种不同的使用方式下,SQL语言的语法结构基本上是一致的。
这种以统一的语法结构提供两种不同的使用方式的作法,为用户提供了极大的灵活性与方便性。
4.语言简洁,易学易用SQL语言功能极强,但由于设计巧妙,语言十分简洁,完成数据定义、数据操纵、数据控制的核心功能只用了9个动词:CREA TE、DROP、ALTER、SELECT、INSERT、UPDA TE、DELETE、GRANT、REVOKE,如表3-1所示。
结构化查询语言SQL(2)——数据定义语言
![结构化查询语言SQL(2)——数据定义语言](https://img.taocdn.com/s3/m/f7f74ddf6f1aff00bed51eec.png)
例2:建立一个“学生”表Student,它由学号 :建立一个“学生” ,它由学号Sno、姓名 、姓名Sname、 、 性别Ssex、年龄 五个属性组成。 性别 、年龄Sage、所在系 、所在系Sdept五个属性组成。其中学号不 五个属性组成 能为空,姓名取值唯一。 能为空,姓名取值唯一。 CREATE TABLE Student(Sno CHAR(5) NOT NULL, ( ( ) Sname CHAR(8)UNIQUE, ( ) 表名 Ssex CHAR(2), 数据类型 ( ) Sage INT, 列名(字段名) 列名(字段名) Sdept CHAR(20)); ( ));
SQL的数据定义语句 的数据定义语句
操作对象 表 视图 索引
操作方式 创建 create table create view create index 删除 drop table drop view drop index 修改 alter table
定义数据库 创建、 创建、修改和撤消数据库 定义基本表 定义、 定义、修改与删除基本表 定义索引 建立与删除索引
例6:建立一个“成绩”表chengji,它由学号 、课程号 :建立一个“成绩” ,它由学号sno、课程号cno、 、 成绩cj三个属性组成 定义此表并定义相应的主键和外键。 三个属性组成。 成绩 三个属性组成。定义此表并定义相应的主键和外键。 CREATE TABLE chengji (sno CHAR(5), cno CHAR(3), cj INT, primary key (sno,cno), foreign key (sno) references student(sno), foreign key (cno) references cullum(cno) );
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据库原理》实验报告姓名学号日期201.04.23实验室A205 指导教师设备编号M10实验题目实验单元二SQL 数据定义及查询一、实验目的1)熟悉SQL数据定义语言,能够熟练的用SQL语句创建数据库、基本表、索引。
2)熟悉SQL Server 2000中提供的数据类型和T-SQL数据定义语句CREATE的语法格式。
3)熟练的用SQL语句进行单表查询、多表连接查询、嵌套查询、集合查询。
二、实验内容1)还原数据库student2)向student表中增加备注列Comment,数据类型是字符型,固定长度50个字符,并且允许该列为空3)把student中的备注列的数据类型改为变长字符型,长度255字符4)使用SQL语句在SPJ数据库中创建S、P、J、SPJ四个关系模式。
5)按教材第二章习题(5)的数据,创建S、P、J、SPJ四个关系模式。
6)求供应工程J1零件的供应商号码SNO;7)求供应工程J1零件P1的供应商号码SNO;8)找出使用供应商S1所供应零件的工程号;9)找出工程项目J2使用的各种零件的名称及其数量;10)找出上海厂商供应的所有零件号码;11)在D盘以自己名字建立文件夹,将SPJ数据库备份到该文件夹中。
三、实验要求1)创建四个表时,首先要规划好字段类型及长度。
2)创建四个表时,要指定主码、外码及对其他字段设置约束。
3)实验报告中要求列出操作步骤以及创建表的SQL语句。
4)实验总结中写出实验中遇到的问题和解决方案以及实验的收获。
四、实验结果2)alter table student add coment char(50);3)alter table student alter column varchar(255); 4)创建S、P、J、SPJ四个关系模式:S表:create table s(sno char(9)primary key,sname char(20),status smallint,city char(20));P表:create table p(pno char(9)primary key,pname char(20),color char(2),weight smallint);J表:create table j(jno char(9)primary key,jname char(20),city char(20));SPJ表:create table spj(sno char(9),pno char(9),jno char(9),qty smallint,primary key(sno,pno,jno),foreign key(sno)references s(sno), foreign key(pno)references p(pno), foreign key(jno)references j(jno));5)创建S、P、J、SPJ四个关系模式:S表:insert into dbo.s (sno,sname,status,city) values('s1','精益',20,'天津')insert into dbo.s (sno,sname,status,city) values('s2','盛锡',10,'北京')insert into dbo.s (sno,sname,status,city) values('s3','东方红',30,'北京')insert into dbo.s (sno,sname,status,city) values('s4','丰泰盛',20,'天津')insert into dbo.s (sno,sname,status,city) values('s5','为民',30,'上海')P表:insert into dbo.p (pno,pname,color,weight) values('p1','螺母','红',12)insert into dbo.p (pno,pname,color,weight) values('p2','螺栓','绿',17)insert into dbo.p (pno,pname,color,weight) values('p3','螺丝刀','蓝',14)insert into dbo.p (pno,pname,color,weight) values('p4','螺丝刀','红',14)insert into dbo.p (pno,pname,color,weight) values('p5','凸轮','蓝',40)insert into dbo.p (pno,pname,color,weight) values('p6','齿轮','红',30)J表:insert into dbo.j (jno,jname,city)values('j1','三建','北京')insert into dbo.j (jno,jname,city)values('j2','一汽','长春')insert into dbo.j (jno,jname,city)values('j3','弹簧厂','天津')insert into dbo.j (jno,jname,city)values('j4','造船厂','天津')insert into dbo.j (jno,jname,city)values('j5','机车厂','唐山')insert into dbo.j (jno,jname,city) values('j6','无线电厂','常州')insert into dbo.j (jno,jname,city) values('j7','半导体厂','南京')SPJ表:insert into dbo.spj (sno,pno,jno,qty) values('s1','p1','j1',200)insert into dbo.spj (sno,pno,jno,qty) values('s1','p1','j3',100)insert into dbo.spj (sno,pno,jno,qty) values('s1','p1','j4',700)insert into dbo.spj (sno,pno,jno,qty) values('s1','p2','j2',100)insert into dbo.spj (sno,pno,jno,qty) values('s2','p3','j1',400)insert into dbo.spj (sno,pno,jno,qty) values('s2','p3','j2',200)insert into dbo.spj (sno,pno,jno,qty) values('s2','p3','j4',500)insert into dbo.spj (sno,pno,jno,qty) values('s2','p3','j5',400)insert into dbo.spj (sno,pno,jno,qty) values('s2','p5','j1',400)insert into dbo.spj (sno,pno,jno,qty) values('s2','p5','j2',100)insert into dbo.spj (sno,pno,jno,qty) values('s3','p1','j1',200)insert into dbo.spj (sno,pno,jno,qty) values('s3','p3','j1',200)insert into dbo.spj (sno,pno,jno,qty)values('s4','p5','j1',100)insert into dbo.spj (sno,pno,jno,qty) values('s4','p6','j3',300)insert into dbo.spj (sno,pno,jno,qty) values('s4','p6','j4',200)insert into dbo.spj (sno,pno,jno,qty) values('s5','p2','j4',100)insert into dbo.spj (sno,pno,jno,qty) values('s5','p3','j1',200)insert into dbo.spj (sno,pno,jno,qty) values('s5','p6','j2',200)insert into dbo.spj (sno,pno,jno,qty) values('s5','p6','j4',500)6)求供应工程J1零件的供应商号码SNO:select distinct snofrom spjwhere jno='j1';7)求供应工程J1零件P1的供应商号码SNO:select distinct snofrom spjwhere jno='j1'and pno='p1';8)找出使用供应商S1所供应零件的工程号:select jnofrom spjwhere sno='s1';。