数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。 数据存储方式 数据库泛型 数据库在开发中作用 SQL语言 数据库访问技术 常见数据库系统 MySQL数据库的介绍 如何学习数据库
数据存储方式 如今数据库已经无处不在了。一个网站需要有数据库来存储数据。一个学校需要用数据库来存储学生和教师的信息。一个公司需要用数据库来存储员工的信息和公司的资料。要学习数据库,必须先要了解数据库是如何存储数据的。本小节将为读者介绍数据的存储方式。数据存储分为三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。 1.人工管理阶段 2.文件系统阶段 3.数据库系统阶段
数据库在开发中作用 现在大部分的管理系统和软件都需要使用数据库来存储数据。在开发过程中,数据库已经成为必不可少的一部分。本小节将为读者简单介绍一下数据库在开发中的作用。 在软件开发过程中,经常需要使用数据库来存储数据。比如,一个学校的学生管理系统就需要数据库来存储学生的学籍信息、考试信息、教师的信息、课程信息等。再比如,银行的管理系统也需要数据库来存储信息。用户的银行账户、存款量、存款和取款的记录等信息都是存储在数据库中的。当用户向自己的账户里存款时,管理系统会在数据库中更新该用户的存款量。
数据库系统 很多读者认为数据库就是数据库系统(DataBase System,简称为DBS)。其实,数据库系统的范围比数据库大很多。数据库系统不是一个单纯的数据库,而是由数据库、数据库管理系统、应用开发工具构成。很多时候,数据库管理员和用户可以当成数据库系统的一份子。本小节将为读者介绍数据库系统的内容。 前面的章节对数据库已经进行了简单的介绍,数据库就是存储数据的地方。数据库管理系统(DataBase Management System,简称为DBMS)是用来定义数据、管理和维护数据的软件。它是数据库系统的一个重要的组成部分。应用系统是需要使用数据库的软件。比如学员管理系统就是一个应用系统,这个应用系统需要数据库来管理它的数据。应用开发工具就是用来开发应用系统的。
SQL语言 SQL(Structured Query Language)语言的全称是结构化查询语言。数据库管理系统通过SQL语言来管理数据库中的数据。本小节将为读者介绍SQL语言的知识。 SQL语言分为三个部分:数据定义语言(Data Definition Language,简称为DDL)、数据操作语言(Data Manipulation Language,简称为DML)和数据控制语言(Data Control Language,简称为DCL)。 DDL语句: DML语句: DCL语句:
数据库访问技术 应用系统中,程序语言需要使用数据库访问技术来访问数据库。只有使用了数据库访问技术,程序中嵌入的SQL语句才会起作用。不同程序语言访问数据库的方式是不一样的。本小节将为读者简单讲解各种数据库访问技术。 JDBC是一种用于执行SQL语句的Java API。通过JDBC可以访问多种关系数据库。JDBC由一组用Java语言编写的类和接口组成。使用JDBC时,必须要安装驱动程序Connector/J。 PHP中为程序员提供了MySQL功能模块,PHP 5以后开始提供mysqli接口。PHP可以通过MySQL功能模块和mysqli接口来访问MySQL数据库。
MySQL基础 现在数据库的版本很多,Oracle、DB2、SQL Server都是很优秀的商业数据库。同时,还有MySQL、PostgreSQL都是很优秀的开源数据库。MySQL数据库的使用已经非常广泛了。本节将为读者介绍常见的数据库系统、以及MySQL数据库的基本知识。
常见数据库系统 如今已经存在很多优秀的商业数据库,如甲骨文(Oracle)公司的Oracle数据库、IBM公司的DB2数据库、微软公司的SQL Server数据库和Access数据库。同时,还有很多优秀的开源数据库,如MySQL数据库、PostgreSQL数据库等。本小节将为读者介绍这些常见的数据库。 1.甲骨文的Oracle 2.IBM的DB2 3.微软的Access和SQL Server 4.开源PostgreSQL 5.开源MySQL
为什么要使用MySQL 如今很多大型网站已经选择MySQL数据库来存储数据。那么,MySQL到底有什么优势呢?本小节将为读者介绍选择MySQL数据库的原因。MySQL数据库的使用以及非常广泛,尤其是在Web应用方面。由于MySQL数据库发展势头迅猛, Sun公司于2008年收购了MySQL数据库。这笔交易的收购价格高达10亿美元。这足以说明MySQL数据库的价值。MySQL数据库有很多的优势,下面总结了其中几个优势: 1.MySQL是开放源代码的数据库 2.MySQL的跨平台性 3.价格优势 4.功能强大且使用方便
MySQL版本和获取 MySQL数据库可以在Windows、UNIX、Linux和Mac OS等操作系统上运行。因此,MySQL有不同操作系统的版本。而且,根据发布的先后顺序,现在已经在开发MySQL的6.0版了。本小节将为读者介绍MySQL的版本和如何下载MySQL。 根据MySQL的开发情况,可以将MySQL分为Alpha、Beta、Gamma和Generally Available(GA)等版本。这几种版本的说明如下: Alpha Beta Gamma Generally Available(GA)
如何学习数据库 数据库已经成为软件系统的一部分,那么学好数据库将是软件开发的一个必要条件。如何才能学好数据库,这个问题没有确切的答案。笔者在本节跟大家分享一下自己学习的经验。 学好数据库,最主要的是要多练习。笔者将自己学习数据库的方法总结如下: 1.多上机实践 2.多编写SQL语句 3.通过Java等程序语言来操作数据库 4.数据库理论知识不能丢
Windows平台下安装与配置MySQL 在Windows系列的操作系统下,MySQL数据库的安装包分为图形化界面安装和免安装(noinstall)这两种安装包。这两种安装包的安装方式不同,而且配置方式也不同。图形化界面安装包有完整的安装向导,安装和配置很方便。免安装的安装包直接解压即可使用,但是配置起来很不方便。在这一章中将讲解的内容包括。 安装MySQL数据库 配置MySQL数据库 常用图形管理工具介绍 配置和使用免安装的MySQL数据库
安装与配置MySQL Windows操作系统下,可以通过图形化方式安装MySQL,也可以使用免安装的MySQL软件包。图形化方式有很完善的安装向导,根据安装向导的说明安装即可。
启动MySQL服务 只有启动MySQL服务,客户端才可以登录到MySQL数据库。在Windows操作系统上,可以设置自动启动MySQL服务,也可以手动来启动MySQL服务。本小节将为读者介绍启动MySQL服务的方法。 可以在【MySQL的属性】中设置服务状态,可以将服务状态设置为【启动】、【停止】、【暂停】和【恢复】。而且还可以设置启动类型,在启动类型处的下拉菜单中可以选择【自动】、【手动】和【已禁用】。这三种启动类型的说明如下: 【自动】 【手动】 【已禁用】
启动MySQL服务
MySQL常用图形管理工具 MySQL图形管理工具可以在图形界面上操作MySQL数据库。在命令行中操作MySQL数据库时,需要使用很多的命令。而图像管理工具则只是使用鼠标点击即可,这使MySQL数据库的操作更加简单。本节将介绍一些常用的MySQL图形管理工具。 MySQL的图形管理工具很多。常用的有MySQL GUI Tools、phpMyAdmin、Navicat等。通过这些图像管理工具,可以使MySQL的管理更加的方便。每种图形管理工具各有特点,下面分别进行简单的介绍。 1.MySQL GUI Tools 2.phpMyAdmin 3.Navicat 4.SQLyog
MySQL数据类型 数据类型是数据的一种属性,其可以决定数据的存储格式、有效范围和相应的限制。MySQL的数据类型包括整数类型、浮点数类型、定点数类型、日期和时间类型、字符串类型和二进制数据类型。在这一章中将讲解的内容包括。 整数类型、浮点数类型和定点数类型 日期与时间类型 字符串类型 二进制类型 如何选择数据类型
创建数据库 创建数据库是指在数据库系统中划分一块空间,用来存储相应的数据。这是进行表操作的基础,也是进行数据库管理的基础。本节主要讲解如何创建数据库。MySQL中,创建数据库是通过SQL语句CREATE DATABASE实现的。其语法形式如下: CREATE DATABASE 数据库名 ;
删除数据库 删除数据库是指在数据库系统中删除已经存在的数据库。删除数据库之后,原来分配的空间将被收回。值得注意的是,删除数据库会删除该数据库中所有的表和所有数据。因此,应该特别小心。本节主要讲解如何删除数据库。 MySQL中,删除数据库是通过SQL语句DROP DATABASE实现的。其语法形式如下: DROP DATABASE 数据库名 ;
创建表的语法形式 MySQL中,创建表是通过SQL语句CREATE TABLE实现的。其语法形式如下: 属性名 数据类型 [完整性约束条件], ...... 属性名 数据类型 );
设置表的主键 主键是表的一个特殊字段。该字段能惟一地标识该表中的每条信息。主键和记录的关系,如同身份证和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份证是用来标明人的身份,每个人都具有惟一的身份证号。设置表的主键指在创建表时设置表的某个字段为该表的主键。 主键的主要目的是帮助MySQL以最快的速度查找到表中的某一条信息。主键必须满足的条件:主键必须是惟一的,表中任意两条记录的主键字段的值不能相同;主键的值是非空值。主键可以是单一的字段,也可以是多个字段的组合。 1.单字段主键 2.多字段主键
设置表的外键 外键是表的一个特殊字段。如果字段sno是一个表A的属性,且依赖于表B的主键。那么,称表B为父表,表A为子表,sno为表A的外键。通过sno字段将父表B和子表A建立关联关系。设置表的外键指在创建表设置某个字段为外键。本小节主要讲解外键设置的原则、外键的作用、设置外键的方法。 设置外键的原则:必须依赖于数据库中已存在的父表的主键;外键可以为空值。 外键的作用是建立该表与其父表的关联关系。父表中删除某条信息时,子表中与之对应的信息也必须有相应的改变。例如,stu_id是student表的主键,stu_id是grade表的外键。当stu_id为‘123’同学退学了,需要从student表中删除该学生的信息。那么,grade表中stu_id为‘123’的所有信息也应该同时删除。
设置表的非空约束 非空性是指字段的值不能为空值(NULL)。非空约束将保证所有记录中该字段都有值。如果用户新插入的记录中,该字段为空值,则数据库系统会报错。例如,在id字段加上非空约束,id字段的值就不能为空值。如果插入记录的id字段的值为空,该记录将不能插入。设置表的非空约束是指在创建表时为表的某些特殊字段加上NOT NULL约束条件。设置非空约束的基本语法规则如下: 属性名 数据类型 NOT NULL
设置表的惟一性约束 惟一性是指所有记录中该字段的值不能重复出现。设置表的惟一性约束是指在创建表时为表的某些特殊字段加上UNIQUE约束条件。唯一性约束将保证所有记录中该字段的值不能重复出现。例如,在id字段加上惟一性约束,所以记录中id字段上不能出现相同的值。例如,在表的id字段加上惟一性约束,那么每条记录的id值都是惟一的,不能出现重复的情况。如果一条的记录的id为‘0001’,那么该表中就不能出现另一条记录的id为‘0001’。设置惟一性约束的基本语法规则如下: 属性名 数据类型 UNIQUE
设置表的属性值自动增加 AUTO_INCREMENT是MySQL数据库中一个特殊的约束条件。其主要用于为表中插入的新记录自动生成惟一的ID。一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLINT、INT、BIGINT等)。默认的情况下,该字段的值是从1开始自增。 设置属性值字段增加的基本语法规则如下: 属性名 数据类型 AUTO_INCREMENT
设置表的属性的默认值 在创建表时可以指定表中字段的默认值。如果插入一条新的记录时没有为这个字段赋值,那么数据库系统会自动为这个字段插入默认值。默认值是通过DEFAULT关键字来设置的。设置默认值的基本语法规则如下: 属性名 数据类型 DEFAULT 默认值
修改表名 表名可以在一个数据库中唯一的确定一张表。数据库系统通过表名来区分不同的表。例如,数据库school中有student表。那么,student表就是唯一的。在数据库school中不可能存在另一个名为“student”的表。MySQL中,修改表名是通过SQL语句ALTER TABLE实现的。其语法形式如下: ALTER TABLE 旧表名 RENAME [TO] 新表名 ;
修改字段的数据类型 字段的数据类型包括整数型、浮点数型、字符串型、二进制类型、日期和时间类型等。数据类型决定了数据的存储格式、约束条件和有效范围。表中的每个字段都有数据类型。有关数据类型的详细内容见第4章。MySQL中,ALTER TABLE语句也可以修改字段的数据类型。其基本语法如下: ALTER TABLE 表名 MODIFY 属性名 数据类型 ;
修改字段名 字段名可以在一张表中唯一的确定一个字段。数据库系统通过字段名来区分表中的不同字段。例如,student表中包含id字段。那么,id字段在student表中是唯一的。student表中不可能存在另一个名为“id”的字段。MySQL中,ALTER TABLE语句也可以修改表的字段名。其基本语法如下: ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型 ; 其中,“旧属性名”参数指修改前的字段名;“新属性名”参数指修改后的字段名;“新数据类型”参数修改后的数据类型,如不需要修改,则将新数据类型设置成与原来一样。 1.只修改字段名 2.修改字段名和字段数据类型
删除字段 删除字段是指删除已经定义好的表中的某个字段。在表创建好之后,如果发现某个字段需要删除。可以采用将整个表都删除,然后重新创建一张表的做法。这样做是可以达到目的,但必然会影响到表中的数据。而且,操作比较麻烦。MySQL中,ALTER TABLE语句也可以删除表中的字段。其基本语法如下: ALTER TABLE 表名 DROP 属性名 ;
修改字段的排列位置 创建表的时候,字段在表中的排列位置就已经确定了。如果要改变字段在表中的排列位置,则需要ALTER TABLE语句来处理。MySQL中,修改字段排列位置的ALTER TABLE语句的基本语法如下: ALTER TABLE 表名 MODIFY 属性名1 数据类型 FIRST | AFTER 属性名2; 其中,“属性名1”参数指需要修改位置的字段的名称;“数据类型”参数指“属性名1”的数据类型;“FIRST”参数指定位置为表的第一个位置;“AFTER 属性名2”参数指定“属性名1”插入在“属性名2”之后。 1.字段修改到第一个位置 2.字段修改到指定位置
删除表的外键约束 外键是一个特殊字段,其将某一表与其父表建立关联关系。在创建表的时候,外键约束就已经设定好了。由于特殊需要,与父表之间的关联关系需要去除,要求删除外键约束。MySQL中,ALTER TABLE语句也可以删除表的外键约束。其基本语法如下: ALTER TABLE 表名 DROP FOREIGN KEY 外键别名 ;
删除表 删除表是指删除数据库中已存在的表。删除表时,会删除表中的所有数据。因此,在删除表时要特别注意。MySQL中通过DROP TABLE语句来删除表。由于创建表时可能存在外键约束,一些表成为了与之关联的表的父表。要删除这些父表,情况比较复杂。本节将详细讲解删除没有被关联的普通表和被其他表关联的父表的方法。
查询数据 查询数据指从数据库中获取所需要的数据。查询数据是数据库操作中最常用,也是最重要的操作。用户可以根据自己对数据的需求,使用不同的查询方式。通过不同的查询方式,可以获得不同的数据。MySQL中是使用SELECT语句来查询数据的。在这一章中将讲解的内容包括。 查询语句的基本语法 在单表上查询数据 使用聚合函数查询数据 多表上联合查询 子查询 合并查询结果 为表和字段取别名 使用正则表达式查询
基本查询语句 查询数据是数据库操作中最常用的操作。通过对数据库的查询,用户可以从数据库中获取需要的数据。数据库中可能包含着无数的表,表中可能包含着无数的记录。因此,要获得所需的数据并非易事。MySQL中可以使用SELECT语句来查询数据。根据查询的条件的不同,数据库系统会找到不同的数据。通过SELECT语句可以很方便的获取所需的信息。 MySQL中,SELECT的基本语法形式如下: SELECT 属性列表 FROM 表名和视图列表 [ WHERE 条件表达式1 ] [ GROUP BY 属性名1 [ HAVING 条件表达式2 ] ] [ ORDER BY 属性名2 [ ASC | DESC ] ]
插入、更新与删除数据 数据库通过插入、更新和删除等方式来改变表中的记录。插入数据是向表中插入新的记录,通过INSERT语句来实现。更新数据是改变表中已经存在的数据,使用UPDATE语句来实现。删除数据是删除表中不再使用的数据,通过DELETE语句来实现。在这一章中将讲解的内容包括: 插入新纪录 更新数据 删除记录
将查询结果插入到表中 INSERT语句可以将一个表中查询出来的数据插入到另一表中。这样,可以方便不同表之间进行数据交换。其基本语法形式如下: INSERT INTO 表名1 (属性列表1) SELECT 属性列表2 FROM 表名2 WHERE 条件表达式;
更新数据 更新数据是更新表中已经存在的记录。通过这种方式可以改变表中已经存在的数据。例如,学生表中某个学生的家庭住址改变了,这就需要在学生表中修改该同学的家庭地址。MySQL中,通过UPDATE语句来更新数据。本小节将详细讲解这些内容。 MySQL中,UPDATE语句的基本语法形式如下: UPDATE 表名 SET 属性名1=取值1, 属性名2=取值2, …, 属性名n=取值n WHERE 条件表达式;
删除数据 删除数据是删除表中已经存在的记录。通过这种方式可以删除表中不再使用的记录。例如,学生表中某个学生退学了,这就需要从学生表中删除该同学的信息。MySQL中,通过DELETE语句来删除数据。MySQL中,DELETE语句的基本语法形式如下: DELETE FROM 表名 [ WHERE 条件表达式 ] ;
mysql查询语句练习题 Sutdent表的定义 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 学号 INT(10) 是 否 是 是 是 Name 姓名 VARCHAR(20) 否 否 是 否 否 Sex 性别 VARCHAR(4) 否 否 否 否 否 Birth 出生年份 YEAR 否 否 否 否 否 Department 院系 VARCHAR(20) 否 否 是 否 否 Address 家庭住址 VARCHAR(50) 否 否 否 否 否 Score表的定义 字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 Id 编号 INT(10) 是 否 是 是 是 Stu_id 学号 INT(10) 否 否 是 否 否 C_name 课程名 VARCHAR(20) 否 否 否 否 否 Grade 分数 INT(10) 否 否 否 否 否
1.创建student和score表 2.为student表和score表增加记录 INSERT INTO student VALUES( 901,'张老大', '男',1985,'计算机系', '北京市海淀区'); INSERT INTO student VALUES( 902,'张老二', '男',1986,'中文系', '北京市昌平区'); INSERT INTO student VALUES( 903,'张三', '女',1990,'中文系', '湖南省永州市'); INSERT INTO student VALUES( 904,'李四', '男',1990,'英语系', '辽宁省阜新市'); INSERT INTO student VALUES( 905,'王五', '女',1991,'英语系', '福建省厦门市'); INSERT INTO student VALUES( 906,'王六', '男',1988,'计算机系', '湖南省衡阳市');
向score表插入记录的INSERT语句如下: INSERT INTO score VALUES(NULL,901, '计算机',98); INSERT INTO score VALUES(NULL,901, '英语', 80); INSERT INTO score VALUES(NULL,902, '计算机',65); INSERT INTO score VALUES(NULL,902, '中文',88); INSERT INTO score VALUES(NULL,903, '中文',95); INSERT INTO score VALUES(NULL,904, '计算机',70); INSERT INTO score VALUES(NULL,904, '英语',92); INSERT INTO score VALUES(NULL,905, '英语',94); INSERT INTO score VALUES(NULL,906, '计算机',90); INSERT INTO score VALUES(NULL,906, '英语',85);
3.查询student表的所有记录 4.查询student表的第2条到4条记录 5.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息 6.从student表中查询计算机系和英语系的学生的信息 7.从student表中查询年龄18~22岁的学生信息 8.从student表中查询每个院系有多少人 9.从score表中查询每个科目的最高分 10.查询李四的考试科目(c_name)和考试成绩(grade) 11.用连接的方式查询所有学生的信息和考试信息 12.计算每个学生的总成绩 13.计算每个考试科目的平均成绩 14.查询计算机成绩低于95的学生信息 15.查询同时参加计算机和英语考试的学生的信息 16.将计算机考试成绩按从高到低进行排序 17.从student表和score表中查询出学生的学号,然后合并查询结果 18.查询姓张或者姓王的同学的姓名、院系和考试科目及成绩 19.查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩