收藏 分享(赏)

php培训之mysql数据库设计.ppt

上传人:精品资料 文档编号:8520115 上传时间:2019-07-01 格式:PPT 页数:136 大小:3.08MB
下载 相关 举报
php培训之mysql数据库设计.ppt_第1页
第1页 / 共136页
php培训之mysql数据库设计.ppt_第2页
第2页 / 共136页
php培训之mysql数据库设计.ppt_第3页
第3页 / 共136页
php培训之mysql数据库设计.ppt_第4页
第4页 / 共136页
php培训之mysql数据库设计.ppt_第5页
第5页 / 共136页
点击查看更多>>
资源描述

1、MySQL数据库设计,主讲人:熊启锰E-mail:版权所有:大聪网络科技PHP培训部,报名咨询:13737734419 QQ:657211160,MySQL数据库设计,1. 数据库概述 2. MySQL数据类型 3. MySQL运算符 4. SQL语句 5. 数据库设计步骤 6. 使用PHP脚本向MySQL服务器发送SQL,一、 MySQL数据库概述,1.1 数据库基本概念 1.2 MySQL数据库 1.3 MySQL基本操作,1.1 数据库基本概念,数据(Data) 数据库(Database) 数据库管理系统(DBMS) 数据库系统(DBS),数据,数据(Data)的定义:对客观事物的符号表

2、示,如图形符号、数字、字母等,数据是数据库中存储的基本对象。在日常生活中,人们直接用语言来描述事物;在计算机中,为了存储和处理这些事物,就要将事物的特征抽象出来组成一个记录来描述。 数据的种类 文字、图形、图象、声音 数据的特点 数据与其语义是不可分的,数据举例,学生档案中的学生记录 (李明,男,1972,江苏,计算机系,1990) 数据的形式不能完全表达其内容 数据的解释 语义:学生姓名、性别、出生年月、籍贯、所在系别、入学时间 解释:李明是个大学生,1972年出生,江苏人,1990年考入计算机系,这些客观存在的、可以被描述事物都是“实体”,数据库,数据库(Database,简称DB)的定义

3、:按照数据结构来组织、存储和管理数据的仓库 J.Martin给数据库下了一个比较完整的定义:数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务,数据库的优点,数据按一定的数据模型组织、描述和储存 可为各种用户共享 冗余度较小,节省存储空间 易扩展,编写有关数据库应用程序,数据库的类型,纯文本数据库:纯文本数据库是只用空格符、制表符和换行符来分割信息的文本文件。适用于小型应用,对于大中型应用来说它存在诸多限制: 只能顺序访问,不能进行随机访问。 查找数据和数据关系或多用户同时访问进行写操作时非常困难。 关系数据库:由于纯文本数据库存在诸多局限,所以人

4、们开始研究数据模型,设计各种类型的使用方便的数据库。在数据库的发展史上,最具影响的数据库模型有:层次模型、网状模型和关系模型。其中,关系模型是目前应用最广泛和最有发展前途的一种数据模型,其数据结构简单,当前主流的数据库系统几乎都采用关系模型。,数据库管理系统,数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称DBMS。 关系型数据库管理系统称为RDBMS,R指Relation DBMS的作用 它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。,时下流行的DBMS,Oracle 应用广泛、功能强大

5、,分布式数据库系统 “关系-对象”型数据库 MySQL 快捷、可靠 开源、免费、与PHP组成经典的LAMP组合 SQL Server 针对不同用户群体的五个特殊的版本 易用性好 DB2 应用于大型应用系统,具有较好的可伸缩性,DBMS的主要功能For程序员,数据定义功能:提供数据定义语言(DDL)定义数据库中的数据对象 数据操纵功能:提供数据操纵语言(DML)操纵数据实现对数据库的基本操作(查询、插入、删除和修改),DBMS的主要功能For数据库管理员,数据库的运行管理保证数据的安全性、完整性、多用户对数据的并发使用发生故障后的系统恢复 数据库的建立和维护功能(实用程序)数据库数据批量装载数据

6、库转储介质故障恢复数据库的重组织性能监视等,数据库系统,数据库系统(Database System,简称DBS)是一个实际可运行的存储、维护和应用系统提供数据的软件系统 数据库系统构成 DBMS DB 应用软件 数据库管理员 用户,1.2 MySQL数据库,什么是MySQL MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型 网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。,MySQl特征,性能快捷、优化SQL语言 容易使

7、用 多线程和可靠性 多用户支持 可移植性和开放源代码 遵循国际标准和国际化支持 为多种编程语言提供API,MySQL5特性,子查询 视图 存储过程 触发器 事务处理 热备份 二进制Bit类型 等等,MySQL不足,不能直接处理XML数据 一些功能上支持的不够完善和成熟 不能提供任何OLAP(实时分析系统)功能等等.,MySQL应用,MySQL的官方网站引述MySQL是“世界上最受欢迎的开放源代码数据库”。这不是狂妄之语,数字可以证明它:目前,有超过1000万份的MySQL被安装用于支付高负荷的网站和其他关键商业应用,包括像阿尔卡特、爱立信、朗讯、亚马逊、Google、纽约证券交易所、迪斯尼、Y

8、ahoo、美国宇航局等这样的产业领袖。在下述网页你还能查看到MySQL和它竞争对手进行了短兵相接的比较。 http:/ http:/ MySQL基本操作,mysql、mysqladmin和mysqldump MySQL管理工具和用户操作界面在Windows系统DOS界面下安装版MySQL服务的启动与关闭: 启动:net start mysql 关闭:net stop mysql,mysql命令,mysql命令 mysql -h host_name -u user_name ppassword h:当连接MySQL服务器不在同台主机时,填写主机名或IP地址 u:登录MySQL的用户名 p:登录M

9、ySQL的密码 注意:密码如果写在命令行中时候一定不能有空格。如果使用的系统为linux并且登陆用户名字与MySQL的用户名相同即可不用输入用户名密码,linux默认是以root登陆,windows默认用户是ODBC,mysql程序常用命令,选定默认数据库:use dbname; 显示所有数据库:show databases; 显示默认数据库中所有表:show tables; 放弃正在输入的命令:c 显示命令清单:h 退出mysql程序:q 查看MySQL服务器状态信息:s,处理SQL文件,mysql命令 处理存放在文件里的SQL命令 格式:mysql option dbname file.s

10、ql mysql u root p -default-character-set=latin1 dbname backup.sql 注:latin1是MySQL4.0的默认字符集或者utf-8是MySQL5.0的默认字符集,如果不知道使用什么字符集的时候,可以选用这两个其中一个,使用的几点提示,字符集 Windows命令窗口默认字符集为cp850或者gbk,因此存在许多字符显示不出来的问题。 可以在mysql命令加入-default-character-set=cp850或gbk选项,cp850字符集需要再追加一个 -character-sets-dir= C:/MySQL/share/cha

11、racters选项,mysqladmin命令,mysqladmin命令 完成许多系统管理任务,如创建或删除一个数据库、修改密码等格式:mysqladmin option admincommand 创建数据库mysqladmin u root p create newdb 删除数据库mysqladmin u root p drop newdb 更改密码mysqladmin u root p password “newpasswd”,mysqldump命令,mysqldump命令 用于为数据库创建备份格式:mysqldump option dbname bak.sqlmysqldump u roo

12、t p tmpdb backuptmp.sql 备份出来的是一个文本文件,默认为utf-8字符集,如果想使用另外一种字符集,必须使用 -default-character-set=gbk选项来设置,总结,MySQL是一种功能非常强大的关系型客户服务器数据库系统,它的安全性和稳定性足以满足许多应用程序的要求,而且有着非常高的性价比。,二、MySQL数据类型,2.1 数据类型种类 2.2 数值列类型 2.3 字符串列类型 2.4 日期和时间列类型,2.1 数据类型种类,数值型:分为整型和浮点型 整型:可以由十进制和十六进制表示整数由数字序列组成,如:1,100。由十六进制表示方法:0x且后面加19

13、和AF 的任意数字或字母,并且0x中的X不能大写。 浮点型:浮点数由一个数字加一个小数点再加上一个数字组成。两个数字序列不能同时为空。,字符串:由单引号或者双引号括起来的字符或者数字。如:”abc”,abc10 字符串中要用转义字符才能表示的特殊符号,日期和时间值是存储如”2005 -1-1” 或者”12:00:00”这样的数值的值。在MySQL中日期是按”年-月-日”的顺序。 NULL值是一种无类型的值,表示”空,什么也没有”。,2.2 数值列类型,MySQL为除了NULL值外的所有通用数据类型提供了列类型。列类型一种手段,通过这种手段可以描述表的列可以包含什么样类型的值。 数值列类型所有数

14、值列类型的类型名及其说明和所占的字节数见下表:,值列类型包括整型和浮点型说明:TINYINT, SAMLLINT, MEDIUMINT, INT, BIGINT每个数据类型的取值范围不同,故分别可以表示不同的数值范围在定义整型列时,可以指定可选的显示尺寸M(见上表),M是从1到255的值,它表示显示列中值的字符数。,例如:MEDIUMINT(4) 意思是指定了一个具有4个字符显示宽度的MEDIUMINT列。如果定义了一个没有明确宽度的整数列,则会分配缺省的宽度,缺省值为每种类型的最长值的长度。 对于每种浮点型,可指定一个最大的显示尺寸和小数位数D,M的取值应该是0-30,但不应该大于M-2。即

15、M是精度,D是小数点位数,M和D对于DECIMAL是必须的。,数值列的列属性 AUTO_INCREMENT 在需要产生唯一标志符号或者顺序值时候,可用此属性。值一般从1始,每行增加1,在插入NULL到一个AUTO_INCREMENT列时,MySQL会插入一个比该列中当前最大值大1 的值,一个表中最多能有一个有此属性的列。对于想使用此属性的列应该定义为NOT NULL,并定义为PRIMARY KEY 或者定义为UNIQUE键。举例:create table a(I int auto_increment not null primary key); UNSIGNED 此属性禁用负值,是将数值的取值

16、范围从零开始,即前移了取值范围而已.举例:Create table test(num tinyint , num2 tinyint unsigned);,NULL和NOT NULL缺省为NULL,即插入值时没有在此字段插入值,默认为NULL值,如果指定了NOT NULL,则必须在插入值时在此字段添入值。 DEFAULT可以通过此属性来指定一个缺省值,即如果没有在此列添加值,那么默认添加此值。 如果指定了ZEROFILL 属性,则用前导零填充数值类型值以达到列的显示宽度。 举例:Create table test2(num int , num2 int default 1, num3 int d

17、efault null);,2.3 字符串列类型所有字符串列类型的类型名及其说明和所占的字节数见下表:,说明: 对于可变长的字符串类型,其长度取决于实际存放在列中的值的长度。此长度在上表中用来表示。以外所需要的额外字节为存放该值的长度所需要的字节数。,CHAR和VARCHAR类型CHAR类型和VARCHAR类型长度范围都是0255之间的大小。他们之间的差别在于MySQL处理这个指示器的方式:CHAR把这个大小视为值得准确大小(用空格填补比较短的值,所以达到了这个大小),而VARCHAR类型把它视为最大值并且只使用了存储字符串实际上需要的字节数(增加了一个额外的字节记录长度)。因而,较短的值当被

18、插入一个语句为VARCHAR类型的字段时,将不会用空格填补(然而,较长的值仍然被截短 )。,BLOB和TEXT类型BLOB是可以存放任意大数据的数据类型,而TEXT与之相同,只是前者区分大小写,后者不区分大小写。 ENUM 和SET类型是特殊的串类型,其列值必须从固定的串集中选择,二者差别为前者必须是只能选择其中的一个值,而后者可以多选。,字符串列类型的属性 BINARY使用此属性可以使列值作为二进制串处理,即比较和排序时区分大小写。 NOT 和NOT NULL同数值型功能相同 DEFAULT同数值型功能相同,2.4 日期和时间列类型所有时间和日期列类型的类型名及其说明和所占的字节数见下表 :

19、,说明: 每个时间和日期列类型都有一个零值,当插入非法数值时就用零值来添加 表示日期时必须先按:年,月,日的顺序给出 DATE ,TIME ,DATETIME分别是存储日期,时间与日期和时间的组合,其格式为”YYYY-MM-DD”,”hh:mm:ss”和”YYYY-MM-DD hh:mm:ss”,对于DATETIME类型,日期和时间部分都需要 TIMESTAMP时间戳列类型以YYYYMMDDhhmmss的格式来表示值,其取值范围是19700101000000到2037年的某个时间,主要用于记录更改或创建某个记录,三、MySQL运算符,3.1 算数运算符 3.2 比较运算符 3.3 逻辑运算符

20、3.4 位运算符,3.1 算数运算符,用字符串表示的数字在任何可能便于计算的地方都被自动地转换为字符串。当执行转换时,MySQL遵循两个基本规则: 如果第一位是数字的字符串被用于一个算数运算中,那么它被转换为这个数字的值。 如果一个包含字符和数字混合的字符串不能被正确的转换为数字,那么它被转换成0。,mysql select 1+2,4-2,2*3,4/2; +-+-+-+-+ | 1+2 | 4-2 | 2*3 | 4/2 | +-+-+-+-+ | 3 | 2 | 6 | 2.0000 | +-+-+-+-+ 1 row in set (0.00 sec)mysql select 1.2+

21、0.8,0.6-0.4,8.9*10,1.2/0.3; +-+-+-+-+ | 1.2+0.8 | 0.6-0.4 | 8.9*10 | 1.2/0.3 | +-+-+-+-+ | 2.0 | 0.2 | 89.0 | 4.00000 | +-+-+-+-+ 1 row in set (0.00 sec)mysql select 500+200,90Aa-10,aa90*8,(a+10x)/2; +-+-+-+-+ | 500+200 | 90Aa-10 | aa90*8 | (a+10x)/2 | +-+-+-+-+ | 700 | 80 | 0 | 5 | +-+-+-+-+ 1 row

22、in set, 4 warnings (0.00 sec),3.2 比较运算符 比较运算符允许我们对表达式的左边和右边进行比较。一个比较运算符的结果总是1(真),0(假),或是为NULL(不能确定)。 比较运算符可以用于比较数字和字符串。数字作为浮点值比较,而字符串以不区分大小写的方式进行比较(除非使用特殊的BINARY关键字) 例:mysql select 6 = 6a, a = 6a;+-+-+| 6 = 6a | a = 6a |+-+-+| 1 | 0 |+-+-+1 row in set, 1 warning (0.00 sec),对于运算符,如果表达式两边不相等返回真值,相等返回假

23、值。还可以比较字符串,BETWEEN运算符 用于检验一个值(或者一个求值表达式)是否存在一个指定的范围内:,运算符用于检验一个值(或者一个求值表达式)是否包含在一个指定的值集合中。,还可以使用特殊的运算符,MySQL称之为”NULL安全的等于”运算符。这意味着即使当包含在比较运算符中的表达式含有一个NULL值时,在一个正常的偏差下,MySQL也会为比较运算符返回一个真值或假值。,如果想执行通配符数据搜索,应该使用LIKE运算符。它通过在表达式中允许使用专门的通配字符,可以找出与指定搜索字符串全部或部分匹配的记录。,默认情况下,比较时不区分大小写的方式执行的。然而,以前我们注意到,可以添加BIN

24、ARY关键字让MySQL执行区分大小写的比较。,REGEXP运算符 允许我们执行更复杂的字符串比较运算,在这里使用UNIX正则表达式。,3.3 逻辑运算符,3.4 位运算符,如下表所示:“” 表示按位取反。“” 表示异或。,实例:,显示世界中的应用处理IP地址,求出其网络段。,MySQL数据库中的通配符,“%” (百分号) 代表任意长度(长度可以为0)的字符串 举例:a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab 等都满足该匹配串 “_ “(下横线) 代表任意单个字符 举例:a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串,四、S

25、QL语句,4.1 SQL概述 4.2 SQL语句,4.1 SQL概述,什么是SQL?SQL是Structured Quevy Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的 命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。,SQL语言的特点: 1. 综合统一 2. 高度非过程化 3. 面向集合的操作方式 4. 以同一种语法结构提供两种使用方法 5. 语言简洁,易学易用,SQL语言包含四个部分: 数据定义语言(D

26、DL):用于定义和管理数据对象,包括数据库、数据表等。例如:CREATE、DROP、ALTER等语句 数据操作语言(DML):用于操作数据库对象中所包含的数据。例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。 数据查询语言(DQL):用于查询数据库对象中所包含的数据,能够进行单表查询、连接查询、嵌套查询,以及集合查询等各种复杂程度不同的数据库查询,并将数据返回到客户机中显示。例如:SELECT语句。 数据控制语言(DCL):是用来管理数据库的语言,包含管理权限及数据更改。例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。SQL语言包括三种主要程序

27、设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。,使用SQL语言的几点说明 在mysql中输入一个SQL语句时,一定要在末尾加上一个“;“号,否则mysql认为语句没有输完。 -符号的含义:意为本语句没有输完,等待继续输入。 可以用c来取消输入 mysql中的关键字和函数名不区分大小写,但是如果要是表名或者是数据库的名则区分大小写(分系统,windows不区分) 在查询中输入一个函数,函数名和后面的括号是不能有空格的. 可以用mysql file_name.sql输入查询,.sql文件代表mysql文件,4.2 SQL语句,1、 建表(数据库)操作

28、2、 显示表(数据库)操作 3、 使用数据库操作 4、 显示表结构操作 5、 删除表(数据库)操作 6、 更新表结构 7、 插入记录操作 8、 更改记录操作 9、 删除记录操作 10、查询记录操作 11、使用集函数 12、复制表,4.2.1 建立表(数据库)操作,建立数据库操作: 语法:create database 数据库名 叙述:创建一个具有指定名称的数据库。如果要创建的数据库已经存在,或者没有创建它的适当权限,则此语句失败。 实例:建立一个student库。mysql create database student;,建立表操作: 语法:create table 表名( 列名1 列类型

29、, 列名2 列类型 , . . ); 叙述:在当前数据库下新创建一个数据表。 列类型:表示该列的数据类型。 实例:建立一个表book,其由两列组成,第一列属性为非空,并做为主键,并自增 create table book( bid int primary key auto_increment,bname varchar(16));,常见完整性约束: PRIMARY KEY 主码约束(主键) UNIQUE 唯一性约束 NOT NULL 非空值约束 AUTO_INCREMENT 用于整数列默认自增1 DEFAULT default_value 默认值约束 PRIMARY KEY 与UNIQUE 指

30、定必须包含唯一值的索引。INDEX 和KEY 意义相同,它们都指定可以包含重复值的索引。,例:要建立一个学生情况表(student) CREATE TABLE student: /创建基本表student (st_class CHAR(8), / 定义列st_class班级,数据类型为8位定长字符串 st_no CHAR(10) NOT NULL, /定义列st_no学号,类型为10位定长字符串,非空 st_name CHAR(8) NOT NULL, /定义列st_name姓名,类型为8位定长字符串,非空 st_sex CHAR(2), /定义列st_sex性别,类型为2位定长字符串 st_

31、age SMALLINT, /定义列st_age年龄,类型为短整型 PRIMARY KEY (st_no) ; /定义st_no学号为主键。,4.2.2 显示表(数据库)操作,显示数据库操作 语法: show databases; 叙述:列出服务器主机上可用的数据库。 显示表操作 语法: show tables; 叙述:显示数据库中表的清单。,4.2.3 使用数据库操作,语法: use 数据库名; 叙述:选择此数据库成为当前数据库(即不包含明确的数据库名的表引用中的缺省数据库)。如果数据库不存在或没有访问它的权限,则USE语句将失败。,4.2.4 显示表结构操作,语法: describe 表名

32、;或 desc 表名; 叙述:用于显示表的创建结构。,4.2.5 删除表(数据库)操作,删除表操作 语法:drop table if exists tab_name ,tab_name. 叙述:从数据库中删除制定的表。如果给出if exists 子句,则删除不存在的表不会出错。 删除数据库操作 语法:drop database if exists db_name 叙述:删除给定的数据库。在删除一个数据库后,它就永远没有了,因此要特别小心。如果要删除的数据库不存在,则此语句将会失败(除给出了 if exists)。,4.2.6 更改表结构操作,语法: alter table 表名 action;

33、 说明:action 可以是如下语句: add 列名 (first | after 列名) 可以为表添加一列,如果没指定first或者after,则在列尾添加一列,否则在指定列添加新列 add primary key (列名) 为表添加一个主键,如果主键已经存在,则出现错误 alter 列名 set default 默认值 可以更改指定列默认值,change (modify) 列名 (first | after) 可以更改列类型,如果原列的名字和新列的名字相同,则change和Modify的作用相同 drop 列名 可以删除一列 drop primary key 可以删除主键 drop ind

34、ex index_name; 可以删除索引 rename as 新表名 可以将表名更改,举例1: 向people表中添加字段address2,类型为varchar,最大长度为100 alter table people add address2 varchar(100); 举例2: 将people表中的name列默认值改为100: alter table people alter name set default 100; 举例3: 向Student表增加“入学时间”列,其数据类型为日期型。alter table student add scome date; 论基本表中原来是否已有数据,新增

35、加的列一律为空值。 举例4: 将年龄的数据类型改为半字长整数。alter table student modify sage smallint; 注:修改原有的列定义有可能会破坏已有数据,4.2.7 插入记录操作,语法: insert into 表名(字段名,字段名, . ) values(字段值,字段值,.); 叙述:如果表名后面没写字段名,则默认是向所有的字段添加值字符串值应该用引号括起来 举例1:向people表中添加一条记录: insert into people(name,age) values(“zhangsan”,20); 举例2: 向people表中添加三条记录: insert

36、 into people values (“zhangsan”,20),(“lisi”,10),(“wangwu”,40);,4.2.8 更改记录操作,语法: update 表名 set 列名=数据值 where子句; 叙述: where 子句是判断语句,用来设定条件,限制只更新匹配的行。 举例: 将people表中的所有名称“JoHn“改为“Tom“: update people set name=“Tom“ where name=“JoHn “;,4.2.9 删除记录操作,语法: delete from 表名 where子句; 叙述:此语句删除表中的行,如果不带where子句,则删除整个表

37、中的记录,但是表不被删除。 举例: 删除people表中的所有名字与record表中name相同的记录: delete from people where people.name = record.name; 说明: 表和字段的引用方式有两种:绝对引用和相对引用 绝对引用:数据库名.表名(.字段名) 相对引用:表名.(字段名),4.2.10 查询记录操作,语法: select 字段名,字段名, . (*) from 表名 where 子句 group by子句having子句 order by子句 limit子句 desc(asc) group by子句是对匹配where子句的查询结果进行分组

38、 having子句是对分组后的结果进行条件限制 order by子句是对查询结果结果进行排序,后面跟desc或asc。 limit子句是对查询的显示结果限制数目 desc是将最终结果进行降序排列,asc是将最终结果进行升列。,举例1 : 查询全体学生的学号与姓名。 select sno,sname from student; 举例2 : 查询全体学生的详细记录。 select sno,sname,ssex,sage,sdept from student; 或select * from student; 举例3 : 查全体学生的姓名及其出生年份。 select sname,2004-sage f

39、rom student; 举例4 : 查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名。 select sname,year of birth: ,2004-sage,islower(sdept) from student 举例5:查询选修了课程的学生学号(去掉重复的记录) select distinct sno from sc;说明:使用distinct可以将查询结果中的重复记录只显示一次.,使用列别名: select long_field_name_are_annoying as myfield from thizlinux 使用表别名: select myfield fr

40、om long_table_name_are_my_table as thizlinux 查询所有年龄在20岁以下的学生姓名及其年龄。 select sname,sage from student where sage=20;,在WHERE子句中使用谓词 :BETWEEN AND: 在两数之间NOT BETWEEN AND:不在两数之间IN : 是否在特定的集合里(枚举)NOT IN : 与上面相反LIKE : 是否匹配于一个模式IS NULL(为空的) 或 IS NOT NULL(不为空的REGEXP : 检查一个值是否匹配一个常规表达式。,查询年龄在2023岁(包括20岁和23岁)之间的学

41、生的姓名、系别和年龄 。 select sname,sdept,sage from student where sage between 20 and 23; 查询年龄不在2023岁之间的学生姓名、系别和年龄。 Select sname,sdept,sage from student where sage not between 20 and 23; 查询信息系(is)、数学系(ma)和计算机科学系(cs)学生的姓名和性别。 select sname,ssex from student where sdept in (is,ma,cs);,查询学号为95001的学生的详细情况。 select

42、* from student where sno like 95001; 等价于:select * from student where sno=95001; 查询所有姓刘学生的姓名、学号和性别。select sname,ano,ssex form student where sname like 刘%; 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。 Select sno,cno from sc where grade is null; 查所有有成绩的学生学号和课程号。select sno,cno from sc where grad

43、e is not null; 查询计算机系年龄在20岁以下的学生姓名。 select sname from student where sdept=cs and sage20;,查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。 select sname,ssex from student where sdept in (IS,MA,CS); 可改写为: Select sname,ssex from student where sdept=IS or sdept=MA or sdept=CS; 查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。 selec

44、t sno,grade from sc where cno=3 orber by grade desc; 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。 select * from student order by sdept,sage desc;,连接查询: 同时涉及多个表的查询称为连接查询 用来连接两个表的条件称为连接条件 举例:select name ,id from people ,record where people.name = record.name 外连接 外连接与普通连接的区别 普通连接操作只输出满足连接条件的元组 外连接操作以指定表为连接

45、主体,将主体表中不满足连接条件的元组一并输出: 举例:select student.sno,sname,ssex,sage,sdept,cno,grade from student.sc where student.sno=sc.sno;,嵌套查询: 将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询一个SELECT-FROM-WHERE语句称为一个查询块 例如: select sname 外层查询/父查询 from student where sno in (select sno 内层查询/子查询 from sc where cno=2);,带有IN谓

46、词的子查询(并构成嵌套查询)查询选修了课程名为“信息系统”的学生学号和姓名 select sno,sname from student where sno inselect sno from sc where cno in(select sno from course where cname= 信息系统);,4.2.11 使用集函数,SQL提供的统计函数称为集函数. 主要的集函数: 记数函数: count(列名) 计算元素的个数 求和函数: sum(列名) 对某一列的值求和,但属性必须是整型 计算平均值:avg(列名) 对某一列的值计算平均值 求最大值: max(列名) 找出某一列的最大值 求

47、最小值: min(列名) 找出某一列的最小值,举例: 1:查询学生总人数。 SELECT COUNT(*) FROM Student; 2:查询选修了课程的学生人数。 SELECT COUNT(DISTINCT Sno) FROM SC说明:DISTINIC代表去除重复的值 3: 计算1号课程的学生平均成绩。 SELECT AVG(Grade) FROM SC WHERE Cno= 1 ;,4.2.12 复制表,复制表,我们来创建一个副本:,复制表,可以通过在SELECT查询中指定字段来限制出现在附表中的字段,复制表,通过使用SELECT 语句创建已存在表的空副本,并且返回一个空结果集。,五、数据库的设计步骤,5.1 需求分析 5.2 概念设计 5.3 逻辑设计,5.1 需求分析,1.收集信息需求 收集资料的工作是由数据库设计人员和用户共同完成的任务。 信息需求,即用户要从数据库获得的信息内容。 处理需求,即完成什么处理功能及处理的方式。 安全性和完整性要求。 以网上书店的信息需求收集信息如下: 商家经营系统(后台):添加、修改、删除书的类别和图书信息的相关管理,在线订购协议、提供的服务和结算方式等。还有客户信息检索、订单处理以及销售统计等。 顾客支持系统(前台):包括顾客信息注册、图书检索、在线订购、订单查询和结算方式处理等。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报