首页  前一页  后一页  末页
[169] [170] [171] [172] [173]
本留言簿共有493条记录, 现在时间2025-5-24 16:28:16,计算机地址:192.168.9.44
日期查询:
现在是第34页
一共有99页
Books库中表及结构信息 环境:一键安装 库表:Mysql.sql  xx3.sql xx4.sql 页面:Myphp.php   
序号 留言内容
173

D:2012-8-28
T:15:29:00
IP:192.168.8.40



作者:
张顺海

2012.8.28 星期三(教育局开会) 9.3(星期一上课)

教学内容:数据库的基础操作

教学目的:掌握数据的建库,建表,增加记录,表格、字段属性的更改等操作。

教学方法:理时一体化

教学时间:5课时

一、作业评析、导入

上节课,我们知道了数据库系统(DBS)的层次,也让我们知道了DBMS的核心问题,这节课,我们做一个实际训练(综合项目),对数据库、数据表、记录、字段之间的关系。

二、教学内容

1.数据库的建立(create database)

2.数据表的建立(create table)

3.记录的录入(insert into)

4.数据表的修改(alter table)

5.相应指令(SQL的书写)

三、训练(内容下载地址:ftp://192.168.8.40/sjkczcs.doc

四、 成绩评析

五、作业

掌握相关指令的格式、意义,操作熟练。

相应的训练内容达到对、熟、精的目的。

通过对该项目的训练,达到100分。

172

D:2012-8-27
T:7:38:00
IP:192.168.8.40



作者:
张顺海

2012.8.27 星期一

教学内容:数据库系统相关概念、层次、关系

教学目的:掌握数据系统的层次关系

教学时间:2012.8.27

教学地点:信息楼一楼专业实训室

教学班级:微机58班

教学模式:理实一体化

一、导入

数据库技术与我们的生活息息相关,也在时刻影响着我们的生活,我们无时无刻在享受着数据库技术给我们带来的便利,掌握一门与数据技术相关的课程,也是我们能力的发展的需要。

VFP,就是一门易于上手的小型数据管理系统,这门科学也是我们升学方向必考的科目之一。

二、新授

1.系统的含义,公安系统、医疗系统、邮政系统、教育系统、铁路系统;

2.计算机系统;

3.数据库管理系统(VFP--VisualFoxPro);----简写为DBMS;

4.数据库系统(计算机、数据库管理系统、数据库、操作员等);

5.管理层次:数据系统、数据库管理系统、数据库、数据表、记录、字段、字符、位;

6.数据库(容器),可以存放(数据表、关系、存储过程)

7.数据表(Table),是一个二维关系,(一个二维关系的特点)

三、练习

1.建立一个数据库(creae database)

2.建立一个数据表(create table)

3.理解管理层次的含义

四、总结

1.建立数据库、数据库的命令两种执行方式

1)容器执行方式

2)命令行执行方式

2.数据库系统(DBS)->数据库管理系统(DBMS)->数据库(DB)->数据表(Table)->记录(Record)->字段(Feild)->字节(Byte)->位(Bit) 

五、作业

(考虑)建立一张数据表应该注意的问题,以及对一张数据的检测。

书面作业:

1.VFP是一个简写名称,它的全称是什么?它是一个数据库管理系统软件,由哪国开发完成?

2.VFP,我们正在使用的版本是多少?现在最高的VFP版本是多少?

3.数据库是一个容器,它里面主要包括哪三方面的内容?

171

D:2012-6-27
T:16:54:00
IP:192.168.8.40



作者:
张顺海

课程小结:

第四个知识点:

1.批处理执行方式:下载【  mysql.sql】文件

2.大家分析后,可以看出这些指令的先后,已经完成了如下操作:

建立一个新的数据库books;

建立五张表格分别是(customers、orders 、books 、order_items 、book_reviews )

分别给五张表格输入相应的记录(customers中3条记录、orders中4条记录、books中4条记录、order_items 中4条记录、book_reviews中1条记录)

这个命令序列正是我们学习的过程

3.把这些指令按本来的先后顺序写入一个文件里。可以把从第一行(create database books;)开始,到最后一行(

insert into book_reviews values)复制,然后用记事本新建一个文件,文件名为mysql.sql,文件保存在c:\(根目录下待用)

4.程序的运行:

mysql->source c:\mysql.sql;

5.检查效果:(可以把下边的8条指令写入show.sql)中,批执行,可以看到效果。

show databases;

use books;

show tables;

select * from customers;

select * from orders;

select * from books;

select * from order_items;

select * from book_reviews;

5.记录的显示:

记录的显示命令

1).我们可以使用select命令显示出相应表格中的记录信息。当一张表格中的记录越来越多的时候,可能我们并不想看到所有的信息,只要筛选出我们感兴趣的记录,可能我们只对一些记录的某些项目感兴趣,可能我们并不知道我们想要的内容在不在表格里,或者我们并不知道完整的信息去寻找它,那我们需要使用到select中的强大功能。

2).今天我们讲的课,使用select去实现我们的查找,但并不表示完成这些功能就是select的全部作用,其实只是冰山一角,因为它还能给我们智能的分析、总结出表格中不存在,但正是我们需要的数据信息,这些我们会在以后的章节中去领会它。

3.select的命令功能举例:(我们以customers、orders表格为例)

显示出指定表格的所有记录:select * from customers;

显示出全部信息

显示出指定表格中的某些记录:select * from customers where name='Julie Smith';

显示表格中的全部信息

显示出指定表格中的指定内容:select customerid,name from customers;

显示出表格内容的部分信息

显示出指定表格中的指定条件:select * from orders where amount>=50 and amount<=100;

select * from orders where amount between 50 and 100;

两种显示价格区间的方法

显示出customers中住址中含有字母r的记录: select * from customers where address like "%r%";

显示出含某些特定信息的记录

显示出订单(orders)表格中的订单ID( orderid)为1和3的订单:select * from orders where orderid in (1,3);

显示指定的ID(集合元素)in短语

第五个知识点: 

(一)PHP中连接Mysql数据库的一般过程:

1.建立一个连接【P204-->11.2.2】

2.建立一个新的查询【P206-->11.2.4】

3.得到查询结果、显示结果【P206-->11.2.5】

4.断开数据库的连接【P207-->11.2.6】

(二)实例:【 下载

数据库连接

结果:

运行结果

 第六个知识点:

1.不同数据库的连接:

@$db=new mysqli('localhost','root','11111111','books');//建立数据库的连接

比如,由数据库“books”更改库“xsvjz”,则命令中只需要把上边的红色部分的books改为xsvjz即可,登陆名及密码,是登陆数据库服务器的用户名及密码,并不是连接数据库的用户名及密码。

2.执行不同查询命令:

$cx="select * from books";             //查询语句内容

比如:想查询数据表customers中的内容,只需要把红色部分改变内容即可,如“select * from customers”。

3.开始执行指令,并得到结果:

$jg=$db->query($cx);                   //执行保存在变量cx中的查询语句,并把结果保存在变量jg中。

4.得到上边命令执行的结果中的数据行数量,可能没有得到记录,那么将会是零。

$sl=$jg->num_rows;                     //将执行结果中的行数(记录数)保存到变量sl中,行的数量可做为下边循环的次数。

5.循环控制(有好多种,现在我们只涉及一种,一般适合已经知道循环次数的)

for ($i=1,$i<=$sl,$i++)

{

}
语法:根据for中的循环条件来确定{}中代码执行的次数。

本循环题目中条件有两个变量,一个是新建立的变量$i,一个是上边已经建立的变量$sl(即第4问中的$sl,行数)。

大家试一下如何代码,可能就会明白其中的循环控制:

for ($i=1,$i<=10,$i++)

{echo $i."
";}

6.显示命令echo,看如下实例:

NO1

<?php
$str = "This is my first php?";
echo $str;
echo "<br>";
echo $str."<br>"."don't know!";
?>

输出:

This is my first php?
This is my first php?
I don't know!

no2

单引号和双引号的不同之处。单引号仅输出变量名,而不是值:

<?php
$color = "red";
echo "Roses are $color";
echo "
";
echo 'Roses are $color';
?>

输出:

Roses are red
Roses are $color

NO3

简化语法:

Roses are
 

运行结果: Roses are red

第七知识点:

学习Mysql的数据管理中的select查询功能中的分组功能,因为有分组,我们才对每组中的数据行进行必要的统计、合计,从而得到我们需要的数据。

我们经常需要知道某些特征一样的记录进行分组,然后对这些不同的分组结果中的记录行进行进一步的统计、汇总、平均等。

1.例如:在定单表中的平均金额。Mysql中专门有一组合计函数用来实现这种功能。【P192.表10-3】

select avg(amount) from orders;

分析:这个命令来源于表orders,其中有一个‘金额’的字段列amount,通过合计函数avg(),把整个amount列的值加在一起(所有记录中的amount加在一起)求平均值。结果如下:

avg(amount) 

 54.985002 

可以说,这个结果(54.985002)在定单表(orders)中没有存在,而是通过合计函数avg()统计出来得到的结果。

2.要获得更加详细的信息,可以使用group by 子句。(这使我们可以按分组浏览订单总量的平均值)

例如:按照顾客(customerid相同的为同一名顾客,因为在定单表里允许同一位顾客下了不同的单子,每个单子里不同的书目不同的金额)分组,得到哪些顾客的订单金额大。

select customerid,avg(amount) from orders group by customerid;

结果

customerid  avg(amount)

1     49.99002

2     74.98003

3     47.485002

分析:在定单表(orders)中,共有4条记录,其中1号顾客1条记录,2号顾客1条,3号顾客2条。如果按题目要求按顾客号分组,必然分成三组,即1条1号顾客分成一组,1条2号顾客分成一组,2条3号顾客分成一组。再把第一组中的1个amount值求平均,显然不变,因为只有1条;把第二组中的1个amount值求平均,显然也不变,因为只有1条;再把第三组中的2个amount值求平均得到(69.98+24.99)/2=47.48的值。并且因为分成了三组,所以得到了结果有三行。

结论:按什么分组(此例按customerid),就把特征一样的(customerid一样的)所有记录(可能是一组一条,一组两条,一组若干条,根据需要)分别进行avg(amount)的函数合计处理,因为分成了三组,就会产生三个分组结果。

 当然,还可以对不同的分组进行不同的操作,且可以对不同的分组同时进行不同的统计、汇总。【P192表10-3】

3.注意:

在使用分组和合计函数的时候,需要注意的是:

如果使用了group by 子句,在select子句中必须是合计函数和group by子句中出现的列;

同样,如果希望在一个group by子句中使用一列,该列必须在select子句中出现;

即:在使用group by子句的时候,出现的列应该和select子句中出现的列匹配。

4.除了分组与合计数据,实际操作的时候,需要对分组的结果进行筛选,可以使用having子句。它可以直接放在group by子句后边,有些类似于where子句。(如果同时有where子句和having子句时,where子句决定哪些记录用于分组,having子句决定分组合计后的哪些行出现在结果里)

第八知识点:

如果我们只对分组结果中的部分内容感兴趣,应该怎么办?

如:我们要把每本书(上题目2)的数量2及2本以上的结果查询出来,即上图需要去掉第一条记录,只要后边的3条,应该如何办,这节课我们把结果筛选加上,即 having短语。

1.having+条件短语

2.应用

select isbn,sum(quantity) from order_items group by isbn having sum(quantity)>1;

3.结果:

使用hving短语对“统计”结果的记录进行必要的筛选

3.having与where短语的区别:

  • 作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组。
  • WHERE 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算), 而 HAVING 在分组和聚集之后选取分组的行。因此,WHERE 子句不能包含聚集函数; 因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。
  • 相反,HAVING 子句总是包含聚集函数。(严格说来,你可以写不使用聚集的 HAVING 子句, 但这样做只是白费劲。同样的条件可以更有效地用于 WHERE 阶段。)

第九知识点:

问题:时间问题的处理

数据库books中的表格orders中的内容

(1)在表格orders中,按年份统计出定单的数量

(2)在表格orders中,按月份统计出定单的数量

分析:显然需要对orders表格中的date字段进行显示,在分组统计中,需要把时间进行分割。这节课我们就学习在分组智能查询中的相关的日期时间处理。

二、新授

1.获得当前的日期和时间:now()、currentdate、currenttime;

当前日期_当前月份_当前时间

 2.获得当前日期(now())的年份、月份、日子、季度;

当前日期的年、月、日、季度的函数

含义:返回四列内容,分别是2012‘年’、5‘月’、30‘日’,第2‘季度’

3.也可以返回指定日期的年、月、日、季度,如:2013.3.25;

指定日期返回年、月、日、季度

含义:返回变量@dt(前边已经赋值为2013.3.25),年份、月份、日子、季度

4.可以返回数据库中指定的数据表中的内容的年、月、日、季度

指定表格中的日期字段的分解

含义:指定表格orders中的date字段内容分解成年、月、日、季度

5.指定表头处理

指定查询结果中的表头中的栏目名称

6.联系题目,把表格ordres中,按月份统计出定单数量;(这节课的重点)

分析:将月份一致的归到一组,得事先知道每个定单的月份。可用month(date)得到每个定单的具体月份。

分组:分组依据就是month(date)

函数:统计每组的个数,应该用count(),因为只统计个数,可能使用count(*),也可以使用count(orderid)、count(customerid)、count(amount)、count(date)都可以

按月份统计定单的数量

 含义:4月份共有3个定单,5月份有1个定单。

7.扩展(含有合计功能的统计)

含有合计功能的智能查询

含义:这说明这次查询合计共有4个定单。这和orders表格中的定单数(记录数)是一致的,共四条。

第十知识点:

1.安装xx3.sql

2.完成以下应用(统计查询出数字,并写出相应指令)

1)查看books数据库中有多少张表;

2)表格books中有多少条记录、customers表格中有多少条记录;

3)customers中涉及到的城市有多少个(相同的算一个);

4)books中有多少个作者(相同的算一个);

5)books中一个作者写3本及3 本以上的书的人有多少个;

6)统计出books中作者中不同姓氏的数量;并统计出写书数最多的前三名的姓氏;

group by 的基本用途;

group by分组后,常用到的统计函数;

 

汇总:

我们学习了以下的内容:

1.数据库管理系统、数据系统、数据库的概念;

2..数据安装数据库管理系统(Mysql)服务器环境,如果连接数据库;

3.字符、字段、记录、表格、数据库之内的层次关系;

4.如何建立一个数据库、数据表;

5.如何打开、显示、修改、删除一个数据库;如何打开、显示、修改、删除一个数据库;如何增加、删除、修改、显示表格中的记录;

6.如何建立一个和数据相连的PHP页面,在页面中如何显示中数据库的表格中的内容;

7.如何导入成批的数据表格指令,如导入mysql.sql、xx3.sql;

8.如何使用数据表格的查询显示命令(select命令)

9.如果配合相关的短语,使select命令更加智能(如:where短语、order by短语、group by短语、having 短语等)

10.

 

 

课程小结:

第四个知识点:

1.批处理执行方式:下载【  mysql.sql】文件

2.大家分析后,可以看出这些指令的先后,已经完成了如下操作:

建立一个新的数据库books;

建立五张表格分别是(customers、orders 、books 、order_items 、book_reviews )

分别给五张表格输入相应的记录(customers中3条记录、orders中4条记录、books中4条记录、order_items 中4条记录、book_reviews中1条记录)

这个命令序列正是我们学习的过程

3.把这些指令按本来的先后顺序写入一个文件里。可以把从第一行(create database books;)开始,到最后一行(

insert into book_reviews values)复制,然后用记事本新建一个文件,文件名为mysql.sql,文件保存在c:\(根目录下待用)

4.程序的运行:

mysql->source c:\mysql.sql;

5.检查效果:(可以把下边的8条指令写入show.sql)中,批执行,可以看到效果。

show databases;

use books;

show tables;

select * from customers;

select * from orders;

select * from books;

select * from order_items;

select * from book_reviews;

5.记录的显示:

记录的显示命令

1).我们可以使用select命令显示出相应表格中的记录信息。当一张表格中的记录越来越多的时候,可能我们并不想看到所有的信息,只要筛选出我们感兴趣的记录,可能我们只对一些记录的某些项目感兴趣,可能我们并不知道我们想要的内容在不在表格里,或者我们并不知道完整的信息去寻找它,那我们需要使用到select中的强大功能。

2).今天我们讲的课,使用select去实现我们的查找,但并不表示完成这些功能就是select的全部作用,其实只是冰山一角,因为它还能给我们智能的分析、总结出表格中不存在,但正是我们需要的数据信息,这些我们会在以后的章节中去领会它。

3.select的命令功能举例:(我们以customers、orders表格为例)

显示出指定表格的所有记录:select * from customers;

显示出全部信息

显示出指定表格中的某些记录:select * from customers where name='Julie Smith';

显示表格中的全部信息

显示出指定表格中的指定内容:select customerid,name from customers;

显示出表格内容的部分信息

显示出指定表格中的指定条件:select * from orders where amount>=50 and amount<=100;

select * from orders where amount between 50 and 100;

两种显示价格区间的方法

显示出customers中住址中含有字母r的记录: select * from customers where address like "%r%";

显示出含某些特定信息的记录

显示出订单(orders)表格中的订单ID( orderid)为1和3的订单:select * from orders where orderid in (1,3);

显示指定的ID(集合元素)in短语

第五个知识点: 

(一)PHP中连接Mysql数据库的一般过程:

1.建立一个连接【P204-->11.2.2】

2.建立一个新的查询【P206-->11.2.4】

3.得到查询结果、显示结果【P206-->11.2.5】

4.断开数据库的连接【P207-->11.2.6】

(二)实例:【 下载

数据库连接

结果:

运行结果

 第六个知识点:

1.不同数据库的连接:

@$db=new mysqli('localhost','root','11111111','books');//建立数据库的连接

比如,由数据库“books”更改库“xsvjz”,则命令中只需要把上边的红色部分的books改为xsvjz即可,登陆名及密码,是登陆数据库服务器的用户名及密码,并不是连接数据库的用户名及密码。

2.执行不同查询命令:

$cx="select * from books";             //查询语句内容

比如:想查询数据表customers中的内容,只需要把红色部分改变内容即可,如“select * from customers”。

3.开始执行指令,并得到结果:

$jg=$db->query($cx);                   //执行保存在变量cx中的查询语句,并把结果保存在变量jg中。

4.得到上边命令执行的结果中的数据行数量,可能没有得到记录,那么将会是零。

$sl=$jg->num_rows;                     //将执行结果中的行数(记录数)保存到变量sl中,行的数量可做为下边循环的次数。

5.循环控制(有好多种,现在我们只涉及一种,一般适合已经知道循环次数的)

for ($i=1,$i<=$sl,$i++)

{

}
语法:根据for中的循环条件来确定{}中代码执行的次数。

本循环题目中条件有两个变量,一个是新建立的变量$i,一个是上边已经建立的变量$sl(即第4问中的$sl,行数)。

大家试一下如何代码,可能就会明白其中的循环控制:

for ($i=1,$i<=10,$i++)

{echo $i."
";}

6.显示命令echo,看如下实例:

NO1

<?php
$str = "This is my first php?";
echo $str;
echo "<br>";
echo $str."<br>"."don't know!";
?>

输出:

This is my first php?
This is my first php?
I don't know!

no2

单引号和双引号的不同之处。单引号仅输出变量名,而不是值:

<?php
$color = "red";
echo "Roses are $color";
echo "
";
echo 'Roses are $color';
?>

输出:

Roses are red
Roses are $color

NO3

简化语法:

Roses are
 

运行结果: Roses are red

第七知识点:

学习Mysql的数据管理中的select查询功能中的分组功能,因为有分组,我们才对每组中的数据行进行必要的统计、合计,从而得到我们需要的数据。

我们经常需要知道某些特征一样的记录进行分组,然后对这些不同的分组结果中的记录行进行进一步的统计、汇总、平均等。

1.例如:在定单表中的平均金额。Mysql中专门有一组合计函数用来实现这种功能。【P192.表10-3】

select avg(amount) from orders;

分析:这个命令来源于表orders,其中有一个‘金额’的字段列amount,通过合计函数avg(),把整个amount列的值加在一起(所有记录中的amount加在一起)求平均值。结果如下:

avg(amount) 

 54.985002 

可以说,这个结果(54.985002)在定单表(orders)中没有存在,而是通过合计函数avg()统计出来得到的结果。

2.要获得更加详细的信息,可以使用group by 子句。(这使我们可以按分组浏览订单总量的平均值)

例如:按照顾客(customerid相同的为同一名顾客,因为在定单表里允许同一位顾客下了不同的单子,每个单子里不同的书目不同的金额)分组,得到哪些顾客的订单金额大。

select customerid,avg(amount) from orders group by customerid;

结果

customerid  avg(amount)

1     49.99002

2     74.98003

3     47.485002

分析:在定单表(orders)中,共有4条记录,其中1号顾客1条记录,2号顾客1条,3号顾客2条。如果按题目要求按顾客号分组,必然分成三组,即1条1号顾客分成一组,1条2号顾客分成一组,2条3号顾客分成一组。再把第一组中的1个amount值求平均,显然不变,因为只有1条;把第二组中的1个amount值求平均,显然也不变,因为只有1条;再把第三组中的2个amount值求平均得到(69.98+24.99)/2=47.48的值。并且因为分成了三组,所以得到了结果有三行。

结论:按什么分组(此例按customerid),就把特征一样的(customerid一样的)所有记录(可能是一组一条,一组两条,一组若干条,根据需要)分别进行avg(amount)的函数合计处理,因为分成了三组,就会产生三个分组结果。

 当然,还可以对不同的分组进行不同的操作,且可以对不同的分组同时进行不同的统计、汇总。【P192表10-3】

3.注意:

在使用分组和合计函数的时候,需要注意的是:

如果使用了group by 子句,在select子句中必须是合计函数和group by子句中出现的列;

同样,如果希望在一个group by子句中使用一列,该列必须在select子句中出现;

即:在使用group by子句的时候,出现的列应该和select子句中出现的列匹配。

4.除了分组与合计数据,实际操作的时候,需要对分组的结果进行筛选,可以使用having子句。它可以直接放在group by子句后边,有些类似于where子句。(如果同时有where子句和having子句时,where子句决定哪些记录用于分组,having子句决定分组合计后的哪些行出现在结果里)

第八知识点:

如果我们只对分组结果中的部分内容感兴趣,应该怎么办?

如:我们要把每本书(上题目2)的数量2及2本以上的结果查询出来,即上图需要去掉第一条记录,只要后边的3条,应该如何办,这节课我们把结果筛选加上,即 having短语。

1.having+条件短语

2.应用

select isbn,sum(quantity) from order_items group by isbn having sum(quantity)>1;

3.结果:

使用hving短语对“统计”结果的记录进行必要的筛选

3.having与where短语的区别:

  • 作用的对象不同。WHERE 子句作用于表和视图,HAVING 子句作用于组。
  • WHERE 在分组和聚集计算之前选取输入行(因此,它控制哪些行进入聚集计算), 而 HAVING 在分组和聚集之后选取分组的行。因此,WHERE 子句不能包含聚集函数; 因为试图用聚集函数判断那些行输入给聚集运算是没有意义的。
  • 相反,HAVING 子句总是包含聚集函数。(严格说来,你可以写不使用聚集的 HAVING 子句, 但这样做只是白费劲。同样的条件可以更有效地用于 WHERE 阶段。)

第九知识点:

问题:时间问题的处理

数据库books中的表格orders中的内容

(1)在表格orders中,按年份统计出定单的数量

(2)在表格orders中,按月份统计出定单的数量

分析:显然需要对orders表格中的date字段进行显示,在分组统计中,需要把时间进行分割。这节课我们就学习在分组智能查询中的相关的日期时间处理。

二、新授

1.获得当前的日期和时间:now()、currentdate、currenttime;

当前日期_当前月份_当前时间

 2.获得当前日期(now())的年份、月份、日子、季度;

当前日期的年、月、日、季度的函数

含义:返回四列内容,分别是2012‘年’、5‘月’、30‘日’,第2‘季度’

3.也可以返回指定日期的年、月、日、季度,如:2013.3.25;

指定日期返回年、月、日、季度

含义:返回变量@dt(前边已经赋值为2013.3.25),年份、月份、日子、季度

4.可以返回数据库中指定的数据表中的内容的年、月、日、季度

指定表格中的日期字段的分解

含义:指定表格orders中的date字段内容分解成年、月、日、季度

5.指定表头处理

指定查询结果中的表头中的栏目名称

6.联系题目,把表格ordres中,按月份统计出定单数量;(这节课的重点)

分析:将月份一致的归到一组,得事先知道每个定单的月份。可用month(date)得到每个定单的具体月份。

分组:分组依据就是month(date)

函数:统计每组的个数,应该用count(),因为只统计个数,可能使用count(*),也可以使用count(orderid)、count(customerid)、count(amount)、count(date)都可以

按月份统计定单的数量

 含义:4月份共有3个定单,5月份有1个定单。

7.扩展(含有合计功能的统计)

含有合计功能的智能查询

含义:这说明这次查询合计共有4个定单。这和orders表格中的定单数(记录数)是一致的,共四条。

第十知识点:

1.安装xx3.sql

2.完成以下应用(统计查询出数字,并写出相应指令)

1)查看books数据库中有多少张表;

2)表格books中有多少条记录、customers表格中有多少条记录;

3)customers中涉及到的城市有多少个(相同的算一个);

4)books中有多少个作者(相同的算一个);

5)books中一个作者写3本及3 本以上的书的人有多少个;

6)统计出books中作者中不同姓氏的数量;并统计出写书数最多的前三名的姓氏;

group by 的基本用途;

group by分组后,常用到的统计函数;

 

汇总:

我们学习了以下的内容:

1.数据库管理系统、数据系统、数据库的概念;

2..数据安装数据库管理系统(Mysql)服务器环境,如果连接数据库;

3.字符、字段、记录、表格、数据库之内的层次关系;

4.如何建立一个数据库、数据表;

5.如何打开、显示、修改、删除一个数据库;如何打开、显示、修改、删除一个数据库;如何增加、删除、修改、显示表格中的记录;

6.如何建立一个和数据相连的PHP页面,在页面中如何显示中数据库的表格中的内容;

7.如何导入成批的数据表格指令,如导入mysql.sql、xx3.sql;

8.如何使用数据表格的查询显示命令(select命令)

9.如果配合相关的短语,使select命令更加智能(如:where短语、order by短语、group by短语、having 短语等)

10.

170

D:2012-6-27
T:16:21:00
IP:192.168.8.40



作者:
张顺海

2012.6.28 星期四

 

教学内容:复习

教学目的:迎接期末考试

教学重点:所有讲过的知识点

 

复习内容:

第一知识点:

数据:计算机系统中,各种字母、数字符号的组合、语音、图形、图像等统称为数据,数据经过加工后就成为信息

数据库:数据库是依照某种数据模型组织起来并存放二级存储器中的数据集合。

数据库技术:在海量数据中快带、准确的提取、写入数据,并对结果进行智能的分析。

数据库管理系统(DBMS data-base-management-system):用于建立、使用和维护数据库,进行统一的管理和控制,以保证数据库的安全性和完整性。

数据模型:层次模型、网状模型、关系模型;

关系型数据库:VFP、Mysql、Oracle、Db2、Sql-Server等;

Mysql介绍

1.SQL:结构化查询语言,是一门专门用于数据库管理的语言;(Structured Query Language)

2.Mysql的历史:

1979年开始研究,1996年由瑞典(Mysql-AB公司)上市,2008年被美国Sun公司收购(世界著名的服务器硬件生产商、Unix操作系统所有者,计算机操作系统以开源、效率高、免费著称),2009年被美国的Oracle(甲骨文)公司花74亿美元收购。Oracle公司开发的数据库管理系统是世界是昂贵的DBMS。

3.关系型数据库的概念(P155-156)

表格(Table)-列(属性)-行(记录)-值(属性值)-键(避免数据的重复)

4.关系型数据表之间的关系(一对一、一对多、多对多)【P158】

一对一:关系数据库中两个表之间的一种关系,该关系中第一个表中的单个行只可以与第二个表中的一个行相关,且第二个表中的一个行也只可以与第一个表中的一个行相关;

一对多:关系数据库中两个表之间的一种关系,该关系中第一个表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可以与第一个表中的一个行相关。 

多对多:关系数据库中两个表之间的一种关系, 该关系中第一个表中的一个行可以与第二个表中的一个或多个行相关。第二个表中的一个行也可以与第一个表中的一个或多个行相关。

第二知识点:

数据库、数据表的建立(重点理解数据类型的定义):

(1)数据库:【P166】

命令:create database <数据库名>

例如:create database xxb  建立一个名为xxb的数据库文件。

检测:show databases;  会看到当前用户下的所有的数据库名列表,其中就已经有了xxb。

重点:按书上的建立books数据库,命令为 cretae database books;

(2)数据库表:【P172】

命令:create table <数据库表名>(表格列列表)

例如:create table no1 (xm varchar(6),xb varchar(2),bj varchar(4));

含义:建立一张表格,表格名为no1,这张表格隶属于当前库xxb,其中有三列,分别是xm,xb,bj,在规定列数、列名时,还规定了每一列的宽度,分别是6、2、4,用这三列分别保存姓名,性别,班级

书上的【P173】中的程序清单9-1中bookorama.sql中的建立5张表,分别是:(创建5张表时,应该改换当前库为books)

1.create table customers (customerid int unsigned not null auto_increment primary key, name char(50) not null,address char(100) not null,city char(30) not null);

解释:

建立表命令 create table

表格名:customers  (顾客表)

表格列:4列,customerid、name、address、city,即分别保存顾客ID,顾客姓名、顾客地址、所在城市;

表格列属性:customerid,整型(int),无符号(unsigned),不能为空(not null),自动增长(auto_increment),主键(primary key);name,字符型(char(50)),不能为空(not null);address,字符型(char(100)),不能为空(not null);city,字符型(char(30)),不能为空(not null)。

2.create table orders (orderid int unsigned not null auto_increment primary key,customerid int unsigned not null,amount float(6,2),date date not null);

表格命令:create table

表格名:orders(定单表)

表格列:4列,分别是orderid、customerid、amount、date,用来保存定单ID,顾客ID,定单金额,定单日期。

表格列属性:amount,浮点型(也就是实数型,即可以是小数,6个宽度,2位小数,xxx.xx型的小数,如128.25),date(日期型,日期型数据有固定的宽度,用来保存定单的日期)。

3.create table books (isbn char(13) not null primary key ,author char(50),title char(100),price float(4,2));

表格命令:create table

表格名:books(书目表)

表格列:共4列,分别是isbn、author、title、price,分别保存书的书号、作者、书名、价格。

表格列属性:(大家自己分析),其中主键是isbn,即书号,每本书都有唯一的书号,可以做为主键。【P175】

4.create table order_items (orderid int unsigned not null,isbn char(13) not null,quantity tinyint unsigned,primary key (orderid,isbn));

表格命令:create table

表格名:order_items(定单信息)

表格列:共3列,分别是orderid、isbn、quantity,分别保存定单ID,书号、数量

表格列属性:tinyint,是指的整数0-255之间的(含),注意一下指定两个主键的形式 primary key (orderid,isbn)。

5.create table book_reviews (isbn char(13) not null primary key ,review text);

表格命令:create table

表格名:book_reviews(书目信息)

表格列:共2列,分别是isbn、review,分别保存书号、相关文本;

表格列属性:text,是一种数据类型,可能盛放更多的数据;【P176】

三、建立后的表格查看命令

命令:show tables;【P176】查看当前库中的所有表的清单列表;

含义:显示当前数据库中的所有表的清单(应该和use配合使用)

如:查看当前数据库books中的所有表格show tables;

命令:describe <表名> 【P176】,查看当前表格的结构(所有列的表格列名、列属性等)。 

第三知识点:

1.增加数据:【P183】

将数据写入表格,专业术语为插入记录。(记录就是一组有关系的数据集合,体现在表格中是一行,如上边的例子中姓名、性别、身份证号就是一组数据,每一行是一个人的完整信息)

命令:insert into <table file>   [(字段1,字段2....)] values (值11,值12....)[,(值21,值22....)]     

解释:将一组数据按指定的顺序写入当前表格里,一次可以写多条记录。

实例:将张三、男、130625199908021125,李四、女、130625199709234322,王五、男、130625199811022321写入表格no2中。

命令为:

insert into no2 (xm,xb,sfzh) values ('张三','男','130625199908021125')  一次写一条记录;

insert into no2 values ('李四','女','130625199709234322'),('王五','男','130625199811022321')  一次写两条记录,因为写入的顺序与表结构的字段顺序一致,且个数相符,所以(xm,xb,sfzh)可以省略。

2.记录的显示:(简单形式,以后学习复杂形式)【P185】

命令:select * from <表格名>

例如:select * from no2   当然确保no2表格所在的数据库已经是当前库(更换当前库的命令是 use )

执行时:会看到以下结果

3.记录的删除:【P198】

命令:delete from <表格名> [where <条件>]

实例:delete from no2 where xm='张三'

结果:将表格no2中的‘xm’为‘张三’的记录删除

检测:select * from no2

结果如下:记录已经减少了一个。

注意:delete from no2; 将会把表格no2中的所有记录行删除,所以会倍加小心,因此要加指定条件。

图形举例:

插入记录、删除记录

 第四知识点:

169

D:2012-6-20
T:14:50:00
IP:192.168.8.40



作者:
张顺海

2012.6.21 星期四

教学内容:数据分组(阶段性测试)

教学目的:数据分组,让数据处理更加智能

教学重点:group by 短语的实战

教学难点:多记录下的查询、分组统计

小知识:http://192.168.8.40/ch01/other/cjjsj_hs.mht美超级计算机重夺世界第一

一、作业评析

二、题目要求

(一)下载‘一键安装’、‘xx4.sql’,安装环境,导入xx4.sql安装数据库、表。(15分)

(二)完成如下操作(80分)

1)查看books数据库中有多少张表;

2)表格books中有多少条记录、customers表格中有多少条记录;

3)customers中涉及到的城市有多少个(相同的算一个);

4)books中有多少个作者(相同的算一个);

5)books中一个作者写3本及3 本以上的书的人有多少个;

6)统计出books中作者中不同姓氏的数量;并统计出写书数最多的前三名的姓氏;

7).统计出customers表中姓‘白’的,家住在‘安肃镇’的有哪些人;

8)统计出customers表中姓‘白’、‘李’、‘张’的各有多少人。

(三)将上边操作的8题中的结果(题目、指令、结果)写入以自己姓名为文件名的文本文件中。

例:张三.txt

题目:查看books数据库中有多少张表;

指令:XXXXXXXXXXXXXXXXXXXXXXXX;

结果:15张表

(四)将文本文件上传到ftp://192.168.8.40中的【(2012_06_21)阶段测试】文件夹中。(5分)

三、测试题目(满分100)

1.下载资料(5分)

2.安装环境(10分)

3.精确操作(80分,每题10分,共8题)

4.提交结果(5分)

三、总结

上交情况:

本节应到15人,实到10人,其中2人去张丰派出所帮忙,3个去做任务(张婷婷,刘晶晶,田露露)。

上交作业:10人,情况如下:(上传时间)

 驱动器 D 中的卷没有标签。
 卷的序列号是 A4DE-9C31

2012-06-21  09:34             2,395 刘亚南.txt
2012-06-21  09:40             1,641 彭彩霞.txt
2012-06-21  09:42             2,038 赵敬.txt
2012-06-21  09:43             1,421 龙静.txt
2012-06-21  09:43             1,426 刘艳新.txt
2012-06-21  09:44             2,395 郝倩.txt
2012-06-21  09:47             1,427 刘艳新(改).txt
2012-06-21  09:51             3,919 韩艳伟.txt
2012-06-21  09:54             1,295 黄李晴。.txt
2012-06-21  09:59             1,562 商丹丹.txt
2012-06-21  10:01             1,583 商丹丹(改).txt
2012-06-21  10:10             2,256 张春杏.txt
 

四、本节知识点

1.要求:
把orders(定单表)中的所有定单的顾客的姓名、城市、定单号、定单金额显示出来。

+---------+--------+----------------+------------+--------+
| orderid | name   | address        | customerid | amount |
+---------+--------+----------------+------------+--------+
|       1 | 白京   | 义联庄乡刘庄村 |          3 |  69.98 |
|       2 | 安立军 | 漕河镇西留营   |          1 |  49.99 |
|       3 | 安宗浩 | 大因镇范马庄   |          2 |  74.98 |
|       4 | 白京   | 义联庄乡刘庄村 |          3 |  24.99 |
|       5 | 白京   | 义联庄乡刘庄村 |          3 |  69.98 |
|       6 | 安立军 | 漕河镇西留营   |          1 |  49.99 |
|       7 | 安宗浩 | 大因镇范马庄   |          2 |  74.98 |
|       8 | 白京   | 义联庄乡刘庄村 |          3 |  24.99 |
+---------+--------+----------------+------------+--------+
8 rows in set (0.00 sec) 

2.实现

mysql> select orderid,name,address,orders.customerid,amount from orders,customer
s where orders.customerid=customers.customerid;

3.结果

+---------+--------+----------------+------------+--------+
| orderid | name   | address        | customerid | amount |
+---------+--------+----------------+------------+--------+
|       1 | 白京   | 义联庄乡刘庄村 |          3 |  69.98 |
|       2 | 安立军 | 漕河镇西留营   |          1 |  49.99 |
|       3 | 安宗浩 | 大因镇范马庄   |          2 |  74.98 |
|       4 | 白京   | 义联庄乡刘庄村 |          3 |  24.99 |
+---------+--------+----------------+------------+--------+
4 rows in set (0.00 sec)

四、作业

做好期末考试前的复习,下次课,我们要把本学期讲过的知识点、要点、技能点罗列出来,让大家复习!

首页  前一页  后一页  末页
现在是第34页一共有99页