mysql教案讲解(详细)_第1页
mysql教案讲解(详细)_第2页
mysql教案讲解(详细)_第3页
mysql教案讲解(详细)_第4页
mysql教案讲解(详细)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、、数据库概述什么是数据库数据库 DataBase 就是一个存储数据的仓库。为了便利数据的存储和治理,它将数据依据特定的规律存储在磁盘上。通过数据库治理系统,可有效地组织和治理存储在数据库中的数据。文件与文件系统所谓“文件”一般指存储在外部介质上数据的集合,是操作系统准确地说是文件系统治理数据的根本单位。文件系统和数据库系统之间的区分和联系区分文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据;文件系统中的程序和数据有肯定的联系,数据库系统中的程序和数据分别;文件系统用操作系统中的存取方法对数据进展治理,数据库系统用DBMS 统一治理和把握数据文件系统实现以文件为单位的数据共享

2、,数据库系统实现以记录和字段为单位的数据共享。联系均为数据组织的治理技术;均由数据治理软件治理数据,程序与数据之间用存取方法进展转换; (3)数据库系统是在文件系统的根底上进展而来读写数据库与读写文件哪个更快数据存储方式学校需要存储学生和教师信息公司需要存储员工信息和公司的资料这些数据或者信息是如何存储的?数据存储方式经受了三个阶段:人工治理阶段、文件系统阶段、数据库系统阶段注:新兴数据存储系统-例如 google 的 bigtable。人工治理阶段磁带、磁盘、手工记录文件系统阶段数据存储在计算机的磁盘上,数据以文件的形式消灭,通过文件系统来治理这些文件,文件系统通过路径和文件访问文件中的数据

3、数据库系统阶段使用特地的数据库来治理数据。用户在数据库系统中建立数据库,然后在数据库中建立表,最终将数据存储在这些表中-表是数据库存储数据的根本单位。用户通过数据库治理系统来查询表中的数据。常用的数据库甲骨文的 Oracle:大型数据库,Linux/WINDOWS/Soloras/SUSE Sybase:大型数据库 Mysql:开源,中大型数据库,Linux/Windows/微软 SQL Server:WindowsPostgre SQL:安全开源免费, 中型,Linux Access: SQLITE:小型数据库,Linux/Windows,嵌入式系统数据库技术构成数据库技术是解决数据存储、治

4、理、统计、查询等处理而使用的一门广泛技术数据 Data:是数据库中存储的根本对象,是描述事物的符号,如数字、文件、图形、图像等数据库 Database,DB:是长期储存在计算机内、有组织的、可共享的数据集合。数据库治理系统 Database Management System ,DBMS:是位于用户与操作系统之间的治理数据库的软件定义、治理和维护数据。MySql 是一中 DBMS。数据库系统 Database System -DBS:是指在计算机系统中引入数据库后的系统。其组成如下:计算机系统、数据库、数据库治理系统及其开发工具、人员数据库治理员 DBA、终端用户通常状况下,把数据库系统简称为

5、数据库。SQL(Structed Query Language)语言 :构造化查询语言,是数据库治理系统通过SQL 语句来操作数据库中的数据。标准的 SQL 命令,比方“Select”、 “Insert”、“Update”、 “Delete”、 “Create”和 “Drop”经常被用于完成绝大多数数据库的操作。数据库访问技术:ODBCOpen Database Connectivity 开放式数据库连接是应用程序和数据库系统之间的中间件,用来在数据库治理系统中存取数据的标准应用程序接口。它通过使用相应应用平台上和所需数据库对应的驱动程序与应用程序的交互来实 现对数据库的操作,避开了在应用程序

6、中直接调用与数据库相关的操作,从而供给了数据库的独立性。JDBC / JDOJava Data Base Connectivity,java 数据库连接是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库供给统一访问,它由一组用 Java 语言编写的类和接口组成。JDBC 供给了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC 也是个商标名。C API C 语言连接数据库MySQL 供给 C 语言使用的 API. C 代码的 API 是随 MySQL 一起公布的. 它包含在mysqlclient 库中, 可以使C 程序来访问数据

7、库.综上所述,数据库技术主要包括:数据库系统、SQL 语句、数据库访问技术MySQL 规律架构一张好的图片会是你更简洁理解 MySQL 各个组件的工作方式。1、最上一层所包含的效劳并不是 MySQL 所独有的技术。它们都是效劳于 C/S 程序或者是这些程序所需要的:连接处理,身份验证,安全性等等。2、其次层是我们所感兴趣的。这是 MySQL 的核心局部。包括了查询的解析,分析, 优化,缓存以及全部内置的函数(如日期,时间,数学运算,加密)。还有一些功能是涉及到了存储引擎,如存储过程,触发器,视图等。3、第三层包括了存储过程。它们负责存储和猎取全部存储在MySQL 中的数据。就像 Linux 众

8、多的文件系统一样。每个存储引擎都有自己的优点和缺陷。效劳器是通过存储引擎 API 来与它们交互的。这个接口隐蔽了各个存储引擎不同的地方。对于查询层尽可能的透亮。这个API 包含了很多底层的操作。如开头一个事物,或者取出有特定主键的行。存储引擎不能解析 SQL,相互之间也不能通信。仅仅是简洁的响应效劳器的恳求。连接治理和安全在效劳器内部,每个 client 连接都有自己的线程。这个连接的查询都在一个单独的线程中执行。这个线程存在于一个核心或者 CPU 中。效劳器缓存了线程,因此不需要为每个 client 连接单独创立和销毁线程。当 clients也就是应用程序连接到了 MySQL 效劳器。效劳器

9、需要对它进展身份验证。这个身份验证是基于用户名,主机,以及密码。也使用了 X.509 的 SSL 连接。clients 一连接上,效劳器就验证它的权限。如这个 client 是否可以查询 world 数据库下的Country 表的数据。这局部将在独立的章节进展说明。优化和执行MySQL 的解析查询是创立了一个内部的构造一个语法分析树。之后就进展了各种各样的优化。这些优化包括了,查询语句的重写,读表的挨次,索引的选择等等。你可以通过查询语句的关键词对优化器进展肯定的提示。这样做会影响到它的优化方式。你也可以让效劳器对于各种优化进展说明。这样可以得知效劳器的运行策略以及为了获得更好的效率,可以做更

10、多的优化工作,如查询优化等。优化器会在以后的教程中具体介绍。优化器是不会关心表所用到的存储引擎的类型,但是存储引擎会影响到效劳器优化查询的方式。优化器需要知道存储引擎的一些特性,这些操作的消耗以及表数据的一些统计信息。例如,一些存储引擎支持索引,这对于查询是格外有用的。在解析查询之前,要查询缓存,这个缓存只能保存查询信息以及结果数据。假设恳求一个查询在缓存中存在,就不需要解析,优化和执行查询了。直接返回缓存中所存放的这个查询的结果。MySQL 体系构造介绍:存储引擎负责治理数据存储,以及 MySQL 的索引治理。通过定义的 API,MySQL 效劳器能够与存储引擎进展通信。 每个存储引擎均是

11、1 个继承类,每个类实例作为处理程序而被引用。针对需要与特别表一起工作的每个线程,处理程序是在 1 个处理程序的根底上实例化的。例如,假设3 个连接全都在一样的表上工作,需要创立 3 个处理程序实例。一旦创立了处理程序实例,MySQL 效劳器将向处理程序发送命令,以便执行数据存储和检索任务,如翻开表、操纵行和治理索引等。能够以累进方式创立定制存储引擎:开发人员能够以只读存储引擎启动,随后添加对 INSERT、UPDATE 和 DELETE 操作的支持,甚至能够增加对索引功能、事务和其他高级操作的支持2. Linux 平台下安装配置 MySQLMySQL 语言SQL 功能强大,但是概括起来,它可

12、以分成以下几组:DDL数据定义语言: 用于定义数据的构造,比方 创立、修改或者删除数据库对象; DML数据操作语言:用于检索或者修改数据; DCL数据把握语言:用于定义数据库用户的权限。DDL可以用于创立用户和重建数据库对象。下面是 DDL 命令:CREATETABLE:创立数据库表ALTER TABLE :修改数据库表DROP TABLE :丢弃数据库表CREATE INDEX :创立索引DROP INDEX:丢弃索引DML可以细分为以下的几个语句: SELECT:用于检索数据; INSERT:用于增加数据到数据库; UPDATE:用于从数据库中修改现存的数据DELETE:用于从数据库中删除

13、数据。DCL用于创立关系用户访问以及授权的对象。下面是几个DCL 命令:ALTER PASSWORD :修改访问授权密码GRANT :授权用户访问数据库表REVOKE :废除用户授权CREATE SYNONYM:表、字段、记录在关系型数据库中,表就是一个数据的集合体,简洁地理解就是一个二维行与列有简洁对应关系的数据表格。字段是指表格中的列,即具有一样属性的数据集合,每个字段都必需有一个唯一的名称,称为字段名。例如,在表格中,假设用一列存放“性别”,“性别”就是一个字段名。记录是指表格中的行,它由假设干个字段值构成。例如,用于记录每个成员的表中, 可以有昵称、年龄、性别、电子邮件等字段,添加进表

14、中的每一个成员,都包含有昵称、年龄、性别、电子邮件这些数据,每个成员的这些数据构成一条记录。下面给出一张学生表,表中 id、name、gender、birth、class 都是字段,而行中包含了这个表的一个记录,即每个学生的 ID,名字,性别,生日等:MySQL 数据库根本操作根本操作连接登录 MySql语法:mysql -u 用户名 -p 密码 -h 效劳器名称 -P 端口1、连接到本机mysql -u root -p Enter password: *2、连接到远程主机上mysql -h localhost -u root -p Enter password: *退出 MySql 操作界面

15、mysql quit;mysqlexit;修改密码mysqladmin -u root psa(旧密码) password chx(新密码)显示当前存在的数据库mysql show databases;或者多行命令mysql show- databases- ;创立一个数据库语法:create database if not exists 数据库名称 default character set ”字符集” mysql create database if not exists db1 default character set ”utf8”;删除一个数据库语法:drop database if

16、 exists 数据库名称mysql drop database db1;选择数据库并显示当前选择的数据库mysql use mysql;显示当前数据库中存在的表语法:show tables like ”表达式” mysql show tables;SQL 数据类型smallint- 16 位元的整数。interger 或 int- 32 位元的整数。decimal(p,s) -p 准确值和 s 大小的十进位整数,准确值p 是指全部有几个数(digits)大小值,s 是指小数点後有几位数。假设没有特别指定,那么系统会设为 p=5; s=0 。float - 32 位元的实数。Double -

17、64 位元的实数。char(n) - n 长度的字串,n 不能超过 254。varchar(n) - 长度不固定且其最大长度为 n 的字串,n 不能超过 4000。graphic(n) - 和 char(n) 一样,不过其单位是两个字元 double-bytes, n 不能超过 127。这个形态是为了支援两个字元长度的字体,例如中文字。vargraphic(n) - 可变长度且其最大长度为 n 的双字元字串,n 不能超过 2000。date - 包含了 年份、月份、日期。time - 包含了 小时、分钟、秒。timestamp - 包含了 年、月、日、时、分、秒、千分之一秒。主键、外键、索引主

18、键(primary key) 能够唯一标识表中某一行的属性或属性组。一个表只能有一个主键,但可以有多个候选索引。主键经常与外键构成参照完整性约束,防止消灭数据不全都。主键可以保证记录的唯一和主键域非空,数据库治理系统对于主键自动生成唯一索引,所以主键也是一个特别的索引。比方学生表里有学号和姓名,姓名可能有重名的,但学号确是唯一的,你要从学生表中搜寻一条纪录如查找一个人,就只能依据学号去查找,这才能找出唯一的一个,这就是主键;如:id int(10) not null primary key auto_increment ;自增长的类型外键foreign key 是用于建立和加强两个表数据之间的

19、链接的一列或多列。外键约束主要用来维护两个表之间数据的全都性。简言之,表的外键就是另一表的主键, 外键将两表联系起来。一般状况下,要删除一张表中的主键必需首先要确保其它表中的没有一样外键即该表中的主键没有一个外键和它相关联。索引(index) 是用来快速地查找那些具有特定值的记录。主要是为了检索的便利, 是为了加快访问速度, 按肯定的规章创立的,一般起到排序作用。所谓唯一性索引, 这种索引和前面的“一般索引”根本一样,但有一个区分:索引列的全部值都只能消灭一次,即必需唯一。总结:主键肯定是唯一性索引,唯一性索引并不肯定就是主键。一个表中可以有多个唯一性索引,但只能有一个主键。 主键列不允许空值

20、,而唯一性索引列允许空值。主键可以被其他字段作外键引用,而索引不能作为外键引用。数据表操作创立一个表语法:create table if not exists 数据表名称 (列定义,. )例如:mysql create table tb1(- id int auto_increment primary key,- name varchar(20)- );列定义:列名称 数据类型 null|not null primary keyuniqueauto_incrementdefault默认值显示表(db)的内容mysqlselect*from tb1;查看表 tb1 的字段描述语法:show co

21、lumns from 数据表语法:describe 数据表mysql show columns from tb1;mysql describe tb1; mysql desc tb1;修改数据表语法如下:ALTER TABLE “table_name“ 【转变方式】转变方式分:ADD :在表中增加一列,ADD 列名 数据类型CHANGE:修改表中某一列的名字,CHANGE 列名 新列名MODIFY:转变某一列的数据类型, MODIFY 列名 数据类型DROP:丢弃某一列1 添加列语法 1:alter table数据表名称add列定义 first语法 2:alter table数据表名称add列

22、定义 after 列名称语法 3:alter table 数据表名称 add (列定义,.)例如:mysql alter table tb1 add age int first;mysql alter table tb1 add age2 int default 10 after id;mysql alter table tb1 add sex tinyint default 0; 2 删除列语法:alter table 数据表名称 drop 列名称例如:mysql alter table tb1 drop age3 修改列定义语法:alter table 数据表名称 modify 列名称 数

23、据类型例如:mysql alter table tb1 add memo varchar(100); mysql alter table tb1 modify memo char(1); mysql desc tb1;4 修改列名称及定义语法:alter table 数据表名称 change 旧列名称 新的列名称 列定义例如:mysql alter table tb1 change memo memo1 varchar(200);修改数据表名称语法:alter table 数据表名称 rename 新表名称例如:mysql alter table tb1 rename user;删除数据表语法

24、:drop table if exists 数据表名称清空数据表语法: TRUNCATE TABLE “表格名“如清空 grade 表: TRUNCATE TABLE grade插入记录语法:INSERT INTO “表格名” (“列 1”, “列 2”, .) VALUES “(值 1”, “值 2”, .) ;例如向 student 表中插入一条学生记录:INSERT INTO student (name, gender, birth,class) VALUES(Sun Nan, M, 1973-03-19, 1);注:由于id 字段为自增长的,所以可以不用指定值,另,插入的时候假设指定列

25、的值为唯一属性的话那么插入一样的值时会失败。比方说在student 表中,不能存在两条 id 为 2 的记录,但可以存在两条 name 为“Sun Nan”的记录。更新记录格式:UPDATE “表格名” SET 列 1 = 新值 1, 列 2=新值 2 WHERE 条件;如我们修改“Sun Nan”同学的诞生日期为“1972-08-29”,所在的班级 id 为 2, 执行的语句为:UPDATE student SET birth=1972-08-29, class=2 WHERE name=Sun Nam;删除记录格式:DELETE FROM “表名“ WHERE 条件如从 grade 表中删

26、除 student_id 为 2 的记录: DELETE FROM grade WHERE student_id=2;假设要删除表中全部的数据:DELTE FROM grade;练习创立学生表 student :create table student (idintauto_increment, namevarchar(32),genderint default 1,birthvarchar(20),classint,primary key (id);创立班级表 class create table class (idint not null,class_namevarchar(32),beg

27、in_timevarchar(20), teachervarchar(32),primary key (id);创立成绩表 grade:create table grade (idint auto_increment,student_idint, classint,chineseint,mathint,exam_timevarchar(20), primary key (id);select 语句SELECT 语句主要被用于查询数据库中的一个或多个表里的数据。格式:SELECT FROM 例如:mysql select * from user; mysql select name from u

28、ser;很多子句及它们的结合都可以用于 SELECT 语句中: FROM:指定从哪些表中猎取数据 DISTINCT:消退重复的记录行 WHERE:只返回满足特定条件也叫过滤器的记录行ORDER BY:依据表达式列表排序记录LIMIT:返回特定局部的数据,而不是全部的结果集格式:SELECT DISTINCT FROM WHEREORDER BY LIMIT使用 FROMFROM 子句在 SELECT 语句中是可选项,它消灭在语句的表达式之后FROM 子句指定语句要处理的表。表的别名在 SQL 语句里,在 FROM 子句里引用的表可以给定一个临时的名称,该名称叫做表的别名。例如:mysql se

29、lect id, name, sex, age from user where id = 1;mysql select u.id, , u.sex, u.age from user u where id = 1;使用 DISTINCT假设查询的结果中包含重复的记录,该重复记录要被删除以生成每行都是唯一 的结果集。为了到达这个目的,可在 SELECT 关键字后添加 DISTINCT 关键字。在指定的列里,DISTINCT 将全部的 NULL 值当作一样的值。例如:mysql select distinct work from user;使用 WHEREMySQL 支持很多不同类型的运

30、算符,这依靠于操作数的数据类型,或操作数与运算符处理的值的数据类型。运算比较规律例如:mysql select * from user where age select * from user where age 30 and (work=”java” or work=”c+”); mysql select * from user where age 30 and work in(”java”,”c+”);关于 NULL假设有一个操作数的结果是 NULL,那么大多数运算符的求值结果也会是 NULL。当 NULL 值表达式在函数中被用于操作数时,运算符将产生 NULL。WHERE 子句也有一样的

31、状况,WHERE 子句会丢弃那些条件不是 TRUE 的记录。例如:mysql select NULL+age from user;在 SELECT 语句里使用 ORDER BY假设有必要让输出记录按某一特定的挨次返回,可以使用 ORDER BY 子句以显示如何排序结果集。例如:mysql select * from user order by age;DESC:降序ASC:升序例如:mysql select * from user order by age desc; mysql select * from user order by age asc;在 SELECT 语句里使用 LIMIT当一个查询返回很多记录行时,有必要通过增加LIMIT 子句来限定只显示局部记录。LIMIT 子句可以承受以下一个或两个参数:LIMIT row_countLIMIT skip_count, row_count例如:mysql select * from user limit 5; mysql select * from user limit 5,5;它

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论