1.1 回顾重点

1、 elseif else if的区别

这两个结果都是一样的,elseif是多分支语句,else ifif的嵌套语句

2、 在一个循环Nfor循环中,初始值执行几次?条件判断几次?增量执行几次?

初始值1

条件N+1

增量N

3、 访问全局变量用$GLOBALS

wKioL1g7ykiBqe91AAAWqNZqOOA056.png 

1.2 数据库简介

数据库是存放数组的仓库数据不是直接放到数据库中数据库中放的是表表中存放的是数据

wKiom1g7ylGRbW3KAABrmo6suMk694.png 

1.3 数据库的发展史

萌芽阶段——文件系统

使用磁盘文件来存储数据

初级阶段——第一代数据库

出现了网状模型、层次模型的数据库

中级阶段——第二代数据库

关系型数据库和结构化查询语言

高级阶段——新一代数据库

关系-对象型数据库

1.3.1 层次模型

层次模型是一种导航结构,

优点分类管理如果查询同一类的数据是很方便的

缺点如果查询很多不是同一类的数据效率就很低了

层次结构可以造成数据无效,比如张经理管理了一个员工叫张三,李经理也管理了一个叫张三,我们无法区分张三是一个人还是两个人。

wKioL1g7yluAC1n3AACmLubDcN8935.png 

1.3.2 网状模型

网状模型解决了层次模型数据无效的问题但是没有解决导航问题

wKiom1g7ymWixSmaAAAX8eFXOz8544.png 

 

查询某个销售代表的发表是很方便的但是查询10月份的发票效率就很低了。

wKioL1g7ym2wxKoaAAArbVJYVEE764.png 

1.3.3 关系模型

关系模型中,每个表都是独立的,通过公共字段来建立关系。

wKiom1g7yn-CpcWrAAAzXH3E3XY114.png 

优点:表是独立的,需要什么数据就到那个表中查询。

缺点:多表查询的时候效率低下。

 

关系两个表的公共字段叫关系

 

1.4 Sql语句简介

Structured Query Language结构化查询语言是用来操作关系型数据库的

常用的关系型数据库有:

Access

MySQL

Sql server

Oracle

标准SQL是所有关系型数据库都支持的操作语句,标准SQL也叫SQL-92但是每个数据库在标准SQL的基础上又扩展了自己的东西

数据库

扩展了标准SQL形成的新语句

SQL server

T-Sql

Oracle

PL/Sql

MySql

MySql

问题:orace支持标准SQL,在oracle上编写的PL/Sql,能否运行到mysql上?

不可以

1.5 连接数据库

安装好数据库以后,MySQL自带一个MySQL命令行客户端,这个客户端很方便,但是只能连接本地的MySQL

我们用windows命令行连接数据库

 

几个DOS命令

DOS环境下命令后面没有分号,在Mysql环境下,命令后面后分号。

1、 进入盘符:

a) 语法:  盘符:   比如

wKioL1g7yoqhM3q4AAAC8GJpFOk234.png 

2、 进入盘符下某个文件夹

a) 语法  cd  路径

wKiom1g7yqnQcOsWAAAC2mMa4EE146.png 

 

上一级目录  ../

wKioL1g7yrOAtEuLAAACKrwlTyw704.png 

 

进入根目录 /表示根

wKiom1g7yr6RzWPBAAACfObjHyo117.png 

 

连接MySQL服务器需要的参数

Host:主机-h

Username:用户名-u

Password密码-p

Port端口-P

wKiom1g7ysaQpCl_AAAO8QMlD3Y472.png 

F:\>cd F:\wamp\bin\mysql\mysql5.5.8\bin

 

F:\wamp\bin\mysql\mysql5.5.8\bin>mysql -hlocalhost -uroot -p -P3306

端口号是3306,可以省略端口号

wKioL1g7ys_iwz0OAAAFHJfsFVw436.png 

mysql -u root -h localhost -p

 

如果连接的是本地MySQL,数据库地址也是可以省略。

wKioL1g7ytiTYHHiAAABYvf5qMI142.png 

mysql -uroot -p

1.6 退出数据库

1、 exit

2、 quit

3、 \q

 

1.7 数据库操作

数据库本质就是一个文件。操作数据库的软件叫数据库管理系统。

1.7.1 创建数据库

语法

Create database 数据名 [charset=字符编码]

 

Create:创建

Database:数据库

例题

wKiom1g7yuLCaiEUAAAEGHrdb6Q085.png 

 

如果创建的数据库已经操作会报错

wKioL1g7yuyi5IrPAAAJVf5VYrQ768.png 

 

创建的时候判断一下如果不存在就创建

语法

Create database if not exists 数据库名

wKiom1g7yvSzE9gbAAAFfaDCqf4856.png 

 

如果创建的数据库名字是一个关键字,会怎么样?

wKioL1g7yvyhuezcAAAMOa-h3SM656.png 

解决:在名字上加上反引号

wKiom1g7ywSxvdNCAAAEsEfMSG4348.png 

 

创建数据库的时候指定字符编码

wKioL1g7ywzSP8arAAAFE0LeGKw403.png 

1.7.2 查询数据库

Show databases

wKiom1g7yxTS9ZyNAAAIxno376s625.png 

1.7.3 显示数据库的创建语句

Show create database 数据库名

 

wKioL1g7yyGymrEIAAALDVXmPr8989.png 

1.7.4 更改数据库

更改数据库的字符编码

alter database 数据库名 [选项]

 

alter:修改

 

wKiom1g7yyvTaTstAAANwdMFfkM594.png 

1.7.5 删除数据库

语法:

Drop  database 数据库名

 

Drop:删除

wKiom1g7y0TwsOi4AAAEGNdq31A985.png 

如果删除不存在的数据库会报错

wKiom1g7zH6CPQvfAAAFknFUmc8550.png 

 

在删除数据库的时候判断数据库是否存在如果存在才删除

Drop database if exists 数据库名

wKioL1g7zJeiRlQdAAAFfeYpnmU253.png 

1.7.6 选择数据库

语法:

Use  数据库名

wKioL1g7zKOCKbuJAAACl_8x_Vg563.png 

 

1.8 数据表的操作

1.8.1 几个概念

stuid

classid

schoolid

stuname

stusex

stuadd

stuage

1

1

1

李白

北京

20

1

2

2

杜甫

地址不详

18

行也叫记录一行就是一条记录

也叫字段,一列是一个字段。字段也叫属性

一个表中包括多个字段

1.8.2 创建表

语法:

Create table 表名(

字段1   数据类型  [null|not null] [default] [auto_increment] [primary key],

字段2   数据类型

)

 

not null:不为空

default:默认值

auto_increment:自动增长

primary key:主键

主键的特点不能重复不能为空

一个表只能有一个主键主键可以由多个字段一起组成

1.8.3 数据类型

int:整型

decimal(总位数,小数位数)  存小数  decimal(3,1)   

char(10)定长

varchar(10)可变长度

text:大段文本

思考

wKioL1g7zN6wqqoQAAB8fbaMOFk051.png 

Q Q一般用什么类型varchar

手机号一般用什么类型?char()

wKioL1g7zOfz34QlAABFxhOJnPc659.png 

wKiom1g7zPDzNusbAAB1TEQX4EA664.png 

wKioL1g7zPrQmVAdAAB2eu5RAU0799.png 

1.8.4 例题:创建一个简单的表

表名:stu

字段名:

Stuid   int,

Stuname  varchar(10)

 

wKioL1g7zRKAr7OlAAAG6gH73Fw235.png 

1.8.5 查看所有表

语法

Show tables;

wKiom1g7zRzDzfHEAAAF7Np8bAo683.png 

1.8.6 显示创建表的SQL语句

语法:

Show create table  表名 [\G]

\G:表示table字段和create table字段竖排。

wKioL1g7zSXQZWSgAAAOn2IFd78440.png 

1.8.7 显示表结构

describe [desc]  表名

 

describe  :描述

wKiom1g7zTGy1aS_AAAT7udBZSY132.png 

wKioL1g7zTqg5wXwAACBuaGzZ-A951.png 

 

1.8.8 删除表

Drop table 表名

wKioL1g7zUPgEhpsAAAELwdCcR8457.png 

Drop table 1,2,3

wKiom1g7zUyTN6dhAAAEm1GDQw4174.png 

1.8.9 创建复杂的表

wKioL1g7zVSBbTyXAAALJO76Zx0337.png 

wKiom1g7zVyzn08FAAAQEn2E7_U968.png 

1.9 数据操作

1.9.1 插入数据(增)

语法

insert into 表名 (字段名1,字段2) values (1,2);

练习

--插入数据

 

insert into stu (id,name,sex,`add`) values (1,'李白','','北京');

 

insert into stu (id,name,sex,`add`,score) values (2,'杜甫','','上海',99);

 

--插入字段可以和数据库中的字段的顺序不一致,但是值和插入字段的顺序必须相一致

insert into stu (name,id,`add`,score,sex) values ('李小白',3,'北京',null,'');

 

--插入字段是可以省略的,插入的值和数据表的字段顺序和个数都一致

insert into stu values (4,'白居易','','北京',86);

 

--自动增长的插入

insert into stu values (null,'李清照','','上海',77);

 

--默认值的插入

insert into stu values (null,'辛弃疾','',default,68);

1.9.2 修改数据(改)

语法

Update 表名 set 字段1=1,字段2=2 where 条件

练习

--把‘李白’的性别改成''

update stu set sex='' where name='李白';

 

--思考,如下语句结果是什么?

update stu set sex='';

--将所有字段的sex都变成了‘女’

 

--2号学生性别改成''

update stu set sex='' where id=2;

 

--3号的学生性别改成‘男’,地址改成‘天津’

update stu set sex='' where id=2;

1.9.3 删除数据(删)

语法:

Delete from  [where 条件]

例题

--删除李白

 delete from stu where name='李白';

-- 思考:如下语句输出什么?

delete from stu;  --stu表中的数据全部删除

 

--删除学生是6号的学生

 

 delete from stu where id=6;

 

1.9.4 查询数据(查)

语法

Select 列名 from [where 条件] [order by 排序字段 asc|desc] [limit 起始位置获取的记录数]

由低到高排序:升序 asc

由高到低排序:降序  desc

默认是升序排列

Limit中的起始位置是从0开始的。

/**

查询

*/

--查询所有学生的姓名和性别

 select name,sex from stu;

 

 --查询所有学生的所有字段

 select id,name,sex,`add`,score from stu;

 

--通过*号来代替所有字段

select * from stu;

 

--查询所有男生的信息

 select * from stu where sex='';

 

--查询上海的男生

select * from stu where sex='' and `add`='上海';

 

--查询所有的女生和上海的男生

 select * from stu where sex='' or (sex='' and `add`='上海');

 

--查询北京和上海的学生

 

 select * from stu where `add`='上海' or `add`='北京';

 

--查询成绩大于等于90分的学生

 

select * from stu where score>=90;

 

--按成绩由高到底排列

 

 select * from stu order by score desc;

 

 --女生按成绩有底到高排列

 

 select * from stu where `sex`='' order by score asc;

 

 

/**

limit  限制

*/

 

--取前3条数据

 

select * from stu limit 3;

 

select * from stu limit 0,3;

 

--从第一条开始[0是最上面一条],去3

select * from stu limit 1,3;

 

--去白居易和李清照

select * from stu limit 3,2;

 

--找出前三名(按成绩反向排序)

select * from stu order by score desc limit 3;

 

--找出第一名同学

 select * from stu order by score desc limit 0,1;

wKioL1g7zWeRu1XNAAAG57xsqtw943.png 

 

1.10 运算符

1.10.1 比较运算符

运算符

描述

>

大于

>=

大于等于

<

小于

<=

小于等于

=

等于

<>

不等于

1.10.2 逻辑运算符

运算符

描述

and

or

not

1.11 聚合函数

Sum():求和

Avg():求平均值

Max()最大值

Min():最小值

Count():记录数

--求最高分

select max(score) from stu;

 

--求最低分:

 

select min(score) from stu;

 

--求和

 select sum(score) from stu;

 

 --求平均值

 select avg(score) from stu;

 

 --总人数

 select count(*) from stu;

 

 

--男生人数

 select count(*) from stu where sex='';