数据库查询与数据库搜索共88页
- 格式:ppt
- 大小:15.12 MB
- 文档页数:88
SQL基础复习03--数据查询SQL语句(单表查询)参考教材《数据库系统:原理、设计与编程(MOOC版)》,陆鑫张凤荔陈安龙终于到查询这⼀块了。
3.4 数据查询SQL语句3.4.1 查询语句基本结构SELECT [ALL/DISTINCT] <⽬标列>[,<⽬标列>...][INTO <新表>]FROM <表名>[,<表名>...][WHERE <条件表达式>][GROUP BY <列名> [HAVING <条件表达式>]ORDER BY <列名> [ASC/DESC]];SELECT语句由多种字句组成:1. SELECT⼦句,⽤来指明从数据库表中需要查询的⽬标列。
ALL是默认操作,获取所有满⾜条件的数据⾏;DISTINCT⽤来去掉结果集中的重复数据⾏;<⽬标列>为被查询表的指定列名,可以有多个。
2. INTO⼦句,⽤来将被查询的结果集数据插⼊新表。
3. FROM⼦句,⽤来指定被查询的数据来⾃哪个表或哪些表。
多表⽤逗号分隔。
4. WHERE⼦句,⽤来给出查询的检索条件,多个条件之间可以⽤AND、OR进⾏连接。
5. GROUP BY⼦句,⽤来对查询结果进⾏分组,并进⾏分组统计等处理,在分组中,还可以使⽤HAVING关键词定义分组条件。
6. ORDER BY⼦句,⽤来对查询结果集进⾏排序。
ASC当然是升序,DESC是降序。
默认为ASC。
从SELECT语句的操作结果看,<⽬标列>实现对关系表的投影操作,WHERE <条件表达式>实现对关系表的元组选择操作。
当前Student表的全部数据:下⾯将会对该表进⾏⼀系列查询操作3.4.2 从单表读取指定列SELECT <⽬标列>[,<⽬标列>...]FROM <表名>;例3-191. 从Student表中读取学⽣的学号、姓名、专业三列数据:SELECT StudentID, StudentName, MajorFROM Student;GO2. 从Student表中查询所有列数据:SELECT *FROM Student;GO3. 只查Major数据:SELECT MajorFROM Student;GO倘若只想查出不同的专业名称,可以消除重复⾏,⽤DISTINCT:SELECT DISTINCT MajorFROM Student;GO3.4.3 从单表读取指定⾏SELECT *FROM <表名>WHERE <条件表达式>;例3-20从Student表中读取专业为“软件⼯程”,性别为“男”的学⽣数据:SELECT *FROM StudentWHERE Major='软件⼯程' AND StudentGender='男';GO3.4.4 从单表读取指定⾏和列SELECT <⽬标列> [,<⽬标列>...]FROM <表名>WHERE <条件表达式>;例3-21从Student表中读取专业为“软件⼯程”,性别为“男”的学⽣的学号、姓名、性别、专业四列的数据:SELECT StudentID, StudentName, StudentGender, MajorFROM StudentWHERE Major='软件⼯程' AND StudentGender='男';GO3.4.5 WHERE⼦句条件在WHERE⼦句条件中,可以⽤BETWEEN...AND关键词来限定列值范围,还可以⽤关键字LIKE与通配符来限定查询范围,NOT LIKE⽤于给出不在范围的条件。
MySQL数据库表的数据插⼊、修改、删除、查询操作及实例应⽤⼀、MySQL数据库表的数据插⼊、修改、删除和查询1CREATE DATABASE db0504;23USE db0504;45CREATE TABLE student (6 sno VARCHAR (10) NOT NULL UNIQUE PRIMARY KEY,7 sname VARCHAR (20) NOT NULL,8 ssex enum ('男', '⼥') NOT NULL DEFAULT'男',9 sbirth date,10 sclass VARCHAR (10),11 zno CHAR (4)12 ) DEFAULT charset = gb2312;13 #添加操作14INSERT INTO student15VALUES('2012010713','丁暖','⼥','1993-9-9','物联⽹12-1','z002');1617INSERT INTO student (sno,sname,ssex,sbirth,sclass,zno)18VALUES('2011010503','孔超','男','1993-9-19','⾃动化11-1','z006');1920INSERT INTO student (sno, sname, ssex, zno)21VALUES('2011010521','韩梅','⼥','z006');2223INSERT INTO student (sname, zno, sno)24VALUES('韩梅2','z006','2011010522');2526INSERT INTO student VALUES27 ('2011010501','孔超1','男','1993-9-19','⾃动化11-1','z006');28 ('2011010505','孔超2','男','1993-9-19','⾃动化11-1','z006');29 ('2011010504','孔超3','男','1993-9-19','⾃动化11-1','z006');30 ('2011010505','孔超4','男','1993-9-19','⾃动化11-1','z006');31 #修改操作32UPDATE student33SET sname ='张三',sbirth ='1993-6-19'34WHERE sname ='丁暖';3536UPDATE student SET zno =LEFT (zno, 3);37 #删除操作38delete from student39where sname='张三';4042 #查询操作43SELECT*FROM student;#查询student表的所有记录44SELECT sno,sname,ssex,sbirth FROM student;#查询部分字段信息45SELECT*FROM student WHERE age BETWEEN25AND30;4647 #清空表操作48truncate student;#⾼效49delete from student;操作SQL语法格式:插⼊:insert修改:update删除:delete查询:select⼆、设计型实验三1.创建表1CREATE DATABASE homework;23USE homework;45CREATE TABLE student (6 Num INT (10) NOT NULL UNIQUE PRIMARY KEY,7 name VARCHAR(20) NOT NULL,8 Sex VARCHAR(4) NOT NULL,9 birthday DATETIME,10 bumen VARCHAR(20) NOT NULL,11 address VARCHAR(50)12 ) DEFAULT charset = gb2312;1314CREATE TABLE score (15 Id INT(10) NOT NULL UNIQUE PRIMARY KEY,16 C_name VARCHAR(20),17 Stu_id INT(10) NOT NULL,18 grade INT(10),19CONSTRAINT score_fk FOREIGN KEY(Stu_id) REFERENCES student(Num)20 ) DEFAULT charset = gb2312;2122INSERT INTO student VALUES23 ('901','张军','男','1985-1-1','计算机系','北京市海淀区'),24 ('902','张超','男','1986-2-2','中⽂系','北京市昌平区'),25 ('903','张美','⼥','1990-2-1','中⽂系','湖南省永州市'),26 ('904','李五⼀','男','1990-2-3','英语系','辽宁省⾩新市'),27 ('905','王芳','⼥','1991-4-6','英语系','福建省厦门市'),28 ('906','王桂','男','1988-6-7','计算机系','湖南省衡阳市');2930INSERT INTO score VALUES31 (1001,'计算机','901','98'),32 (1002,'英语','901','80'),33 (1003,'计算机','902','65'),34 (1004,'中⽂','902','88'),35 (1005,'中⽂','903','95'),36 (1006,'计算机','904','70'),37 (1007,'英语','904','92'),38 (1008,'英语','905','92'),39 (1009,'计算机','906','90'),40 (1010,'英语','906','85');2.查询student表的操作#查询student表的所有记录SELECT*FROM student;SELECT Num,name,Sex,birthday,bumen,address FROM student;#查询student表的第2条到第4条记录SELECT Num,name,Sex,birthday,bumen,address FROM student LIMIT 1,3;#从student表中查询所有学⽣的学号、姓名和院系的信息SELECT Num,name,bumen FROM student;#查询计算机系和英语系学⽣的信息SELECT*FROM student WHERE bumen IN('计算机系','英语系');SELECT*FROM student WHERE bumen='计算机系'OR bumen='英语系';#从student表中查询年龄为18-22岁学⽣的信息ALTER TABLE student ADD age INT(4);ALTER TABLE student MODIFY age INT(4) AFTER Sex;UPDATE student SET age=24WHERE Num=901;UPDATE student SET age=23WHERE Num=902;UPDATE student SET age=19WHERE Num=903;UPDATE student SET age=19WHERE Num=904;UPDATE student SET age=18WHERE Num=905;UPDATE student SET age=21WHERE Num=906;SELECT*FROM student WHERE age BETWEEN18AND22;SELECT*FROM student WHERE age>=18AND age<=22;#从student表中查询每个院系有多少⼈,为统计的⼈数列取别名sum_of_bumenSELECT bumen,COUNT(bumen) AS sum_of_bumen FROM student GROUP BY bumen;3.两表综合查询#从score表中查询每个科⽬的最⾼分SELECT C_name,MAX(grade) FROM score GROUP BY C_name;#查询李五⼀的考试科⽬(C_name)和考试成绩(grade)select C_name,grade from student left join score on student.Num=score.Stu_id where name='李五⼀';#⽤连接查询的⽅式查询所有学⽣的信息和考试信息select*from student left join score on student.Num=score.Stu_id;#计算每个学⽣的总成绩(需显⽰学⽣姓名)select name '姓名',SUM(grade) '总成绩'from student left join score on student.Num=score.Stu_id group by name;#计算每个考试科⽬的平均成绩select C_name '考试科⽬',AVG(grade) '平均成绩'from student left join score on student.Num=score.Stu_id group by C_name; #查询计算机成绩低于95分的学⽣信息select*from student left join score on student.Num=score.Stu_id where grade<95AND C_name='计算机';#将计算机成绩按从⾼到低排序select grade '计算机成绩'from score where C_name='计算机'order by grade desc;#asc升序,desc降序#从student表和score表中查询学⽣的学号,然后合并查询结果select Num '学号'from student union select Stu_id from score;#查询姓张或者姓王的同学的姓名、院系、考试科⽬和成绩select name,bumen,C_name,grade from student left join score on student.Num=score.Stu_id where name like'张%'union select name,bumen,C_name,grade from student left join score on student.Num=score.Stu_id where name like'王%';#查询都是湖南的学⽣的姓名、年龄、院系、考试科⽬和成绩select name,age,bumen,C_name,grade from student left join score on student.Num=score.Stu_id where address like'湖南%';这个查询同时参加计算机和英语考试的学⽣信息难了我好久,下⾯提供三种做法:#查询同时参加计算机和英语考试的学⽣的信息做法⼀select*from student where Num in (select Stu_id from score where C_name ='计算机'and Stu_id in(select Stu_id from score where C_name ='英语'));#查询同时参加计算机和英语考试的学⽣的信息做法⼆SELECT a.*FROM student a,score b,score c WHERE a.Num=b.Stu_id AND b.C_name='计算机'AND a.Num=c.Stu_id AND c.C_name='英语';#查询同时参加计算机和英语考试的学⽣的信息做法三SELECT*FROM student WHERE Num =ANY( SELECT Stu_id FROM score WHERE Stu_id IN (SELECT Stu_id FROM score WHERE C_name='计算机') AND C_name='英语');。
数据库的基本概念及原理数据库是现代信息系统中最重要的组成部分之一,用于存储、管理和访问大量数据。
它是组织结构化数据的集合,能够为用户提供持久化的数据存储和高效的数据检索。
本文将介绍数据库的基本概念和原理,帮助初学者了解数据库的工作原理和相关概念。
1. 数据库的定义与特点一个数据库是由一组相互联系的数据集合组成的,这些数据被组织成表、记录和字段。
数据库的特点包括:数据的持久性:数据库中的数据是长期保存的,不受计算机系统的关机或崩溃等因素的影响。
数据的共享性:数据库可以被多个用户访问和使用,满足多用户并发访问需求。
数据的独立性:数据库允许数据与应用程序分离,使得数据的改变不会影响相关的应用程序。
数据的安全性:数据库提供对数据的访问控制和安全性管理,确保只有授权用户可以访问和修改数据。
2. 数据库的三级模式结构数据库的三级模式结构包括外模式、概念模式和内模式。
外模式是用户所见到和使用的数据库的部分,它定义了用户的视图和对应的操作,使用户能够方便地进行数据的查询、修改和删除等操作。
概念模式是数据库的逻辑结构,定义了数据之间的关系和约束条件,描述了整个数据库的逻辑模型。
内模式是数据库的物理结构,描述了数据在计算机存储器中的存储方式和存取方法。
三级模式结构使得数据库的设计和维护能够相互独立,提高了系统的可扩展性和灵活性。
3. 数据库的基本原理数据库系统的核心原理包括数据模型、数据组织和数据操作三个方面。
数据模型描述了数据的逻辑结构和表示方式,常见的数据模型有层次模型、网状模型和关系模型。
其中,关系模型是最常用的数据模型,它采用基于关系的数据结构,通过表、记录和字段来组织和表示数据。
数据组织指的是数据库中数据的存储方式,包括物理存储结构和索引机制。
物理存储结构定义了数据在存储介质上的存储方式,如表空间、页和块等。
索引机制用于提高数据的检索效率,常见的索引方式有B树索引和哈希索引。
数据操作是用户对数据库进行的操作,包括数据的查询、插入、更新和删除等。
《中国期刊全文数据库》检索指南一、数据库介绍于1999年6月正式开通的中国期刊网,是目前全世界最大的中文期刊文献全文数据库。
该库收录我国1994年以来各学科期刊6600种,其中全文期刊5000种,题录摘要型期刊1600种,内容涵盖自然科学、工程技术、人文社科等各个学科领域。
分理工A(数理科学)理工B(化学化工能源与材料)、理工C(工业技术)、农业、医药卫生、文史哲、经济政治与法律、教育与社会科学、电子技术与信息科学等九大专辑,126个数据库,我院采用镜像、互联网远程访问(包库)两种方式服务。
二、操作说明1、进入数据库进入图书馆主页,点击链接:数字资源——中文电子期刊2、下载全文浏览器首次使用,应先在图书馆主页下载caj全文浏览器。
下载浏览3、进入检索界面02年以前数据:输入用户名:nj0022 密码:0022nj 点击“网上包库用户”登录。
nj00220022nj03年数据:直接点“登录”。
4、初级检索:进入后默认界面即为初级检索界面利用初级检索系统能进行快速方便的查询,适用于不熟悉多条件组合查询的用户。
它为用户提供了详细的导航内容、最大范围的选择空间。
对于一些简单查询,建议使用该检索系统。
该查询的特点是方便快速,执行效率较高,但查询结果有很大的冗余,会检索出一大批检索者所不期望的结果。
如果能在检索结果中进行二次检索或配合高级检索则检索命中率会大大提高。
步骤1:选取检索范围双击专题察看下一层的目录,同样步骤操作直到要找的范围;在要选择的专题前的圆点内点击即可选中。
点击登录步骤2步骤3步骤5 步骤4步骤1在字段的下拉框里选取要进行检索字段,这些字段有:篇名、作者、关键词、机构、中文摘要、引文、基金、全文、中文刊名、ISSN、年、期、主题词。
步骤3:输入检索词在检索词文本框里输入关键词。
关键词为文章检索字段中出现的关键单词,当相关度排列时,其出现的词频越高,数据越靠前排列。
步骤4:进行限制限定检索年代、检索结果显示的顺序等。
数据库题库1. 在需求分析中, 主要定义系统提供给用户什么服务的需求是 ________________ ,而定义系统实 现这些功能所需数据的需求是 ______________ 。
功能需求 信息需求2. 绘制ER 莫型是数据库设计中的哪一步骤:概念设计3. 数据模型不仅要表示事物本身的数据,而且还包括表示 _____________________ 的数据。
事物之间联系4. 表达式 7\2-4>1 的值为 _____ .FALSE 暇数据库对象包括表、查询、窗体、 、宏、模块 . 报表6. 创建 Access 数据库有三种方法 : 第1,自行创建数据库 ;第2, 使用数据库 ________ 创建数据库第3, 通过在另一种文件格式中打开数据文件 ,来创建数据库 . 向导7. 除了利用设计视图创建表外, 还可以使用创建表的方法包括、模板和通过导入和链接外部数据。
数据表视图8. 字段输入掩码的作用是给字段输入数据时设置的某种特定的。
中定义表时,通过定义实现实体完整性约束。
主键10. 创建交叉表查询时 , 必须对行标题和 ______ 进行分组操作。
11. 在成绩表(学号,课程号,成绩,…)中统计每门课程的平均分 Group By 课程号AVG 成绩)12. 查询学生表 (学号,姓名,性别, 籍贯, … )中上海籍的女同学 :Select * FromWhere ____ And 性别 =" 女 "[ 籍贯 ]=" 上海 "13. 在成绩表 ( 学号 , 课程号 , 成绩 , … ) 中统计每门课程不及格的人数 :Select Count (*) From成绩表 Where 成绩 <60 _____GROUP BY 课程号14. 窗体中的数据主要来源于和查询对象。
表15. 缩写OLAP 勺中文含义是联机分析16. 数据模型不仅要表示事物本身的数据,而且还包括表示 _____________________ 的数据。