1. 云栖社区>
  2. PHP教程>
  3. 正文

第五天(Mysql+Php)

作者:用户 来源:互联网 时间:2017-11-30 20:30:25

mysqlphp

第五天(Mysql+Php) - 摘要: 本文讲的是第五天(Mysql+Php), 复习: day01: 常用SQL DDL:(数据定义语言)——定义数据的结构(列) CREATE / DROP / ALTER / TRUNCATE—— 必须掌握 DML:(数据操作语言)——操作数据的记录行 INSERT

复习:

day01: 常用SQL

DDL:(数据定义语言)——定义数据的结构(列)
CREATE / DROP / ALTER / TRUNCATE—— 必须掌握
DML:(数据操作语言)——操作数据的记录行
INSERT / DELETE / UPDATE —— 必须掌握
DQL:(数据查询语言)——对数据没有影响
SELECT—— 必须掌握
DCL:(数据控制语言)——控制用户权限
GRANT / REVOKE

day02: 列类型 —— 必须掌握

数字类型:TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL
字符串类型:CHAR、VARCHAR、TEXT 日期时间类型:DATE、TIME、DATETIME
布尔类型:BOOL
列约束 : 主键、外键、唯一、非空、默认值、检查

day03

简单查询 —— 必须掌握
查询特定列、列取别名、取不相同的值、运算、排序、条件查询
复杂查询
分组查询、子查询、跨表查询、查询结果合并

CREATE TABLE emp (eid INT,  sex CHAR(1) DEFAULT '男');INSERT INTO emp VALUES(1, '');    //错误!INSERT INTO emp(eid) VALUES(2);    //正确!INSERT INTO emp VALUES(3, DEFAULT);    //正确!

面试题: DELETE 和 TRUNCATE二者的区别是什么?

今日目标:

(1)复杂查询 —— 重点&难点
(2)Web服务器
(3)PHP语言基础

补充小知识:如何查询部门编号为NULL的员工所有信息
SELECT * FROM emp WHERE dept_id=30;
NULL不能用=和!=进行判定!
SELECT * FROM emp WHERE dept_id=NULL;//错误
SELECT * FROM emp WHERE dept_id IS NULL; //正确
如何查询部门编号不为NULL的员工所有信息
SELECT * FROM emp WHERE dept_id IS NOT NULL;

1.简单查询

(8)分页查询 —— LIMIT

语法:SELECT … FROM … WHERE … ORDER BY … LIMIT start, count;
start: 表示从满足条件的哪一行记录开始读取,第一行称为0
count:此次最多读取多少行记录
假设每一页显示5条记录:
第1页: … LIMIT 0, 5;
第2页: … LIMIT 5, 5;
第3页: … LIMIT 10, 5;
第4页: … LIMIT 15, 5;
第5页: … LIMIT 20, 5;

第N页:… LIMIT (N-1)*5, 5;
练习:分页查询出所有的员工信息,只要第1页
SELECT * FROM emp LIMIT 0, 5;
分页查询出所有的员工信息,只要第2页
SELECT * FROM emp LIMIT 5, 5;
分页查询出所有的员工信息,只要第3页
SELECT * FROM emp LIMIT 10, 5; //3
分页查询出所有的员工信息,只要第4页
SELECT * FROM emp LIMIT 15, 5; //0
分页查询出10部门所有的员工信息,只要第1页
SELECT * FROM emp WHERE dept_id=10 LIMIT 0, 5;
分页查询出10部门所有的员工信息,只要第2页
SELECT * FROM emp WHERE dept_id=10 LIMIT 5, 5;

(9)模糊查询 —— LIKE

示例:查询出姓名包含字母e的所有员工信息
SELECT * FROM emp WHERE ename=’e’; //错误
SELECT * FROM emp WHERE ename=’%e%’; //错误
SELECT * FROM emp WHERE ename LIKE ‘%e%’; //正确

SQL查询中,% 代表任意多个任意字符; _ 代表任意一个字符

练习:查询出姓名中以m结尾的员工的所有信息
SELECT * FROM emp WHERE ename LIKE ‘%m’;
查询出姓名中倒数第二个字符是i的员工的所有信息
SELECT * FROM emp WHERE ename LIKE ‘%i_’;

2.复杂查询

(1)分组函数

COUNT(列名/*):查询出满足条件的记录行数
MAX(列名):查询指定列上的最大值
MIN(列名):查询指定列上的最小值
SUM(列名):查询指定列上的所有数据的总和
AVG(列名):查询指定列上的评价值(Average)

示例:查询所有员工的数量
SELECT COUNT(eid) FROM emp;
SELECT COUNT(*) FROM emp;
查询出每个部门的员工数量
SELECT COUNT(*),dept_id FROM emp GROUP BY dept_id;
查询出所有员工工资中的最大值
SELECT MAX(salary) FROM emp;
练习:
查询出10号部门员工的数量
SELECT COUNT(*) FROM emp WHERE dept_id=10;
查询出达内公司部门的数量
SELECT COUNT(*) FROM dept;
查询出所有员工的工资最小值
SELECT MIN(salary) FROM emp;
查询出所有员工的工资平均值
SELECT AVG(salary) FROM emp;
查询出每个部门的编号及该部门的工资最大值、最小值、平均值
SELECT dept_id, MAX(salary), MIN(salary), AVG(salary)
FROM emp
GROUP BY dept_id ;
查询出所有员工的工资总和
SELECT SUM(salary) FROM emp;
查询出每个部门的编号及该部门所有员工的工资总和
SELECT dept_id, SUM(salary) AS s
FROM emp
GROUP BY dept_id;

(2)子查询

在一条查询语句中再嵌入另一条查询,被嵌入的查询称为“子查询”。
示例:查询出Market部门的所有员工的所有信息
步骤1:根据部门名称查询其编号
SELECT did FROM dept WHERE dname=’Market’;
步骤2:根据部门编号查询员工信息
SELECT * FROM emp WHERE dept_id=10;
整合步骤1和步骤2:
SELECT * FROM emp WHERE dept_id=(
SELECT did FROM dept WHERE dname=’Market’
);
练习:查询出工资比Tiger少的员工的所有信息
步骤1:查询Tiger的工资——根据员工姓名查工资
SELECT salary FROM emp WHERE ename=’Tiger’;
步骤2:查询工资比18000少的员工信息
SELECT * FROM emp WHERE salary<18000;
整合:
SELECT * FROM emp WHERE salary<(
SELECT salary FROM emp WHERE ename=’Tiger’

);

查询出年龄比Kate大(即生日比Kate小)的员工的所有信息
步骤1:查询Kate的生日——根据姓名查生日
SELECT birthday FROM emp WHERE ename=’Kate’;
步骤2:查询生日比’1990-10-3’小的员工的所有信息
SELECT * FROM emp WHERE birthday<’1990-10-3’;
整合:
SELECT * FROM emp WHERE birthday<(
SELECT birthday FROM emp WHERE ename=’Kate’
);

(3)跨表查询

跨表/多表查询,一次查询得到的结果集中的列来自于不同的表;跨表查询一定要防止出现笛卡尔积——必须指定两个表中的相等条件。
示例:查询每个员工的姓名及其所在部门的名称
SELECT ename, dname
FROM emp, dept; //错误,会出现“笛卡尔积”
—————SQL-92——————–
SELECT ename, dept_id, dname, did
FROM emp, dept
WHERE emp.dept_id=dept.did; //防止出现笛卡尔积
提示:SQL-92标准中的跨表查询无法显示连接条件为NULL的记录行,如员工的部门编号为NULL,该记录无法显示
—————SQL-99——了解——————–
SQL-99中的内连接——作用等同于SQL-92中的跨表查询:
SELECT ename, dname
FROM emp INNER JOIN dept
ON emp.dept_id = dept.did;
SQL-99中的左外连接——会显示出左侧表中所有的记录:
SELECT ename, dname
FROM emp LEFT OUTER JOIN dept
ON emp.dept_id = dept.did;
SQL-99中的右外连接——会显示出右侧表中所有的记录:
SELECT ename, dname
FROM emp RIGHT OUTER JOIN dept
ON emp.dept_id = dept.did;
SQL-99中的全连接——会显示出两侧表中所有的记录:
SELECT ename, dname
FROM emp FULL JOIN dept
ON emp.dept_id = dept.did; //MySQL不支持全连接
提示:使用结果集的合并操作可以类似的实现“全连接查询”效果。
SELECT ename, dname
FROM emp LEFT OUTER JOIN dept
ON emp.dept_id = dept.did
UNION
SELECT ename, dname
FROM emp RIGHT OUTER JOIN dept
ON emp.dept_id = dept.did; //了解

3.Web服务器

Web服务器的作用:相当于商店里的“售货员”,功能是:
(1)接收并理解客户端请求
(2)查找客户端需要的资源(文件+数据)
(3)发送资源给客户端浏览器
Web服务器分为两类:

(1)静态Web服务器

提供的内容任何人在任何时间访问都是相同的。
静态服务器软件:Apache Httpd、MS IIS、NginX
工作原理:浏览器发起请求,静态Web服务器解析请求地址,把特定目录下保存的文件(htdocs/),发送给客户端——Web服务器不会对文件内容特殊处理。
练习:访问同桌的Web服务器;停止后再次访问试试。

网络小知识:
1.如何查看本机的IP地址: ipconfig 命令
2.所有的计算机都默认有一个特殊IP地址:127.0.0.1,永远指代当前计算机
3.所有的计算机都默认有一个默认域名:localhost,永远指代当前计算机

(2)动态Web服务器

提供的内容不同人在不同时间访问都可能不同。
动态网页中的内容是可变的,往往需要数据库访问、其它服务器访问才能实现,只有一些动态的编程语言才能实现。主流的动态网页编程语言:
•JSP:使用Java编写网页
•ASP.NET:使用C#.NET编写网页
•PHP:使用PHP编写网页
•Node.js:使用服务器端JS编写网页

4.面试题:如何自学一门编程语言

(1)了解背景:历史、特点、应用场合
(2)搭建开发环境,输出Hello World
(3)变量和常量
(4)数据类型
(5)运算符
(6)逻辑结构
(7)通用小程序
(8)函数和对象
(9)常用组件、工具、框架
(10)实用小项目

5.PHP简介
PHP:Personal Home Page,后改名为PHP:Hypertext Preprocessor

练习:创建一个4.php文本文件,向客户端输出你的姓名、年龄、电话

课后练习:
(1)删除笔记中“复杂查询语句”部门中的示例代码,根据提示说明写出需要的SQL语句。
(2)创建一个文本文件,重名为99.php,向客户端输出一个九九乘法表
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
….
(3)创建一个文本文件,其中编写SQL语句:
删除并重建数据库:xuezi
创建笔记本型号表:xz_laptop_family( fid, fname)
创建笔记本表:xz_laptop(lid, title, price, shelf_time, sold_count)
创建笔记本图片表: xz_laptop_pic( pid, sm, md, lg, laptop_id )

SM:Small MD:Medium LG:Large

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索mysql , php ,以便于您获取更多的相关知识。