php基础教程之mysql
1.1 回顾重点1、 elseif 和else if的区别
这两个结果都是一样的,elseif是多分支语句,else if是if的嵌套语句
2、 在一个循环N次for循环中,初始值执行几次?条件判断几次?增量执行几次?
初始值:1次
条件:N+1次
增量:N次
3、 访问全局变量用$GLOBALS
http://s4.运维网.com/wyfs02/M02/8A/C3/wKioL1g7ykiBqe91AAAWqNZqOOA056.png
1.2 数据库简介
数据库是存放数组的仓库,数据不是直接放到数据库中,数据库中放的是表,表中存放的是数据。
http://s3.运维网.com/wyfs02/M00/8A/C7/wKiom1g7ylGRbW3KAABrmo6suMk694.png
1.3 数据库的发展史
q 萌芽阶段——文件系统
q 使用磁盘文件来存储数据
q 初级阶段——第一代数据库
q 出现了网状模型、层次模型的数据库
q 中级阶段——第二代数据库
q 关系型数据库和结构化查询语言
q 高级阶段——新一代数据库
q “关系-对象”型数据库
1.3.1 层次模型
层次模型是一种导航结构,
优点:分类管理,如果查询同一类的数据是很方便的。
缺点:如果查询很多不是同一类的数据,效率就很低了
层次结构可以造成数据无效,比如张经理管理了一个员工叫张三,李经理也管理了一个叫张三,我们无法区分张三是一个人还是两个人。
http://s5.运维网.com/wyfs02/M00/8A/C3/wKioL1g7yluAC1n3AACmLubDcN8935.png
1.3.2 网状模型
网状模型解决了层次模型数据无效的问题,但是没有解决导航问题
http://s5.运维网.com/wyfs02/M02/8A/C7/wKiom1g7ymWixSmaAAAX8eFXOz8544.png
查询某个销售代表的发表是很方便的,但是查询10月份的发票效率就很低了。
http://s5.运维网.com/wyfs02/M02/8A/C3/wKioL1g7ym2wxKoaAAArbVJYVEE764.png
1.3.3 关系模型
关系模型中,每个表都是独立的,通过公共字段来建立关系。
http://s4.运维网.com/wyfs02/M01/8A/C7/wKiom1g7yn-CpcWrAAAzXH3E3XY114.png
优点:表是独立的,需要什么数据就到那个表中查询。
缺点:多表查询的时候效率低下。
关系:两个表的公共字段叫关系。
1.4 Sql语句简介
Structured Query Language,结构化查询语言,是用来操作关系型数据库的
常用的关系型数据库有:
Access
MySQL
Sql server
Oracle
标准SQL是所有关系型数据库都支持的操作语句,标准SQL也叫SQL-92。但是每个数据库在标准SQL的基础上又扩展了自己的东西。
数据库
扩展了标准SQL形成的新语句
SQLserver
T-Sql
Oracle
PL/Sql
MySql
MySql
问题:orace支持标准SQL,在oracle上编写的PL/Sql,能否运行到mysql上?
答:不可以。
1.5 连接数据库
安装好数据库以后,MySQL自带一个MySQL命令行客户端,这个客户端很方便,但是只能连接本地的MySQL。
我们用windows命令行连接数据库
几个DOS命令
在DOS环境下命令后面没有分号,在Mysql环境下,命令后面后分号。
1、 进入盘符:
a) 语法:盘符: 比如
http://s3.运维网.com/wyfs02/M01/8A/C3/wKioL1g7yoqhM3q4AAAC8GJpFOk234.png
2、 进入盘符下某个文件夹
a) 语法:cd路径
http://s4.运维网.com/wyfs02/M02/8A/C7/wKiom1g7yqnQcOsWAAAC2mMa4EE146.png
上一级目录../
http://s5.运维网.com/wyfs02/M02/8A/C3/wKioL1g7yrOAtEuLAAACKrwlTyw704.png
进入根目录: /表示根
http://s2.运维网.com/wyfs02/M00/8A/C7/wKiom1g7yr6RzWPBAAACfObjHyo117.png
连接MySQL服务器需要的参数:
Host:主机-h
Username:用户名-u
Password:密码-p
Port:端口-P
http://s3.运维网.com/wyfs02/M00/8A/C7/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,可以省略端口号
http://s3.运维网.com/wyfs02/M00/8A/C3/wKioL1g7ys_iwz0OAAAFHJfsFVw436.png
mysql -u root -h localhost -p
如果连接的是本地MySQL,数据库地址也是可以省略。
http://s4.运维网.com/wyfs02/M00/8A/C3/wKioL1g7ytiTYHHiAAABYvf5qMI142.png
mysql -uroot -p
1.6 退出数据库
1、 exit
2、 quit
3、 \q
1.7 数据库操作
数据库本质就是一个文件。操作数据库的软件叫数据库管理系统。
1.7.1 创建数据库
语法:
Create database 数据名
Create:创建
Database:数据库
例题:
http://s4.运维网.com/wyfs02/M01/8A/C7/wKiom1g7yuLCaiEUAAAEGHrdb6Q085.png
如果创建的数据库已经操作,会报错。
http://s4.运维网.com/wyfs02/M01/8A/C3/wKioL1g7yuyi5IrPAAAJVf5VYrQ768.png
创建的时候判断一下,如果不存在就创建。
语法:
Create database if not exists 数据库名
http://s5.运维网.com/wyfs02/M01/8A/C7/wKiom1g7yvSzE9gbAAAFfaDCqf4856.png
如果创建的数据库名字是一个关键字,会怎么样?
http://s4.运维网.com/wyfs02/M01/8A/C3/wKioL1g7yvyhuezcAAAMOa-h3SM656.png
解决:在名字上加上反引号。
http://s2.运维网.com/wyfs02/M02/8A/C7/wKiom1g7ywSxvdNCAAAEsEfMSG4348.png
创建数据库的时候指定字符编码
http://s3.运维网.com/wyfs02/M02/8A/C3/wKioL1g7ywzSP8arAAAFE0LeGKw403.png
1.7.2 查询数据库
Show databases
http://s4.运维网.com/wyfs02/M00/8A/C7/wKiom1g7yxTS9ZyNAAAIxno376s625.png
1.7.3 显示数据库的创建语句
Show create database 数据库名
http://s2.运维网.com/wyfs02/M00/8A/C3/wKioL1g7yyGymrEIAAALDVXmPr8989.png
1.7.4 更改数据库
更改数据库的字符编码
alter database 数据库名 [选项]
alter:修改
http://s3.运维网.com/wyfs02/M01/8A/C7/wKiom1g7yyvTaTstAAANwdMFfkM594.png
1.7.5 删除数据库
语法:
Dropdatabase 数据库名
Drop:删除
http://s3.运维网.com/wyfs02/M02/8A/C7/wKiom1g7y0TwsOi4AAAEGNdq31A985.png
如果删除不存在的数据库,会报错
http://s1.运维网.com/wyfs02/M02/8A/C7/wKiom1g7zH6CPQvfAAAFknFUmc8550.png
在删除数据库的时候,判断数据库是否存在,如果存在才删除
Drop database if exists 数据库名
http://s1.运维网.com/wyfs02/M02/8A/C3/wKioL1g7zJeiRlQdAAAFfeYpnmU253.png
1.7.6 选择数据库
语法:
Use数据库名
http://s5.运维网.com/wyfs02/M00/8A/C3/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 数据类型 ,
字段2 数据类型
…
)
not null:不为空
default:默认值
auto_increment:自动增长
primary key:主键
主键的特点:不能重复,不能为空
一个表只能有一个主键,主键可以由多个字段一起组成。
1.8.3 数据类型
int:整型
decimal(总位数,小数位数)存小数decimal(3,1)
char(10):定长
varchar(10):可变长度
text:大段文本
思考
http://s1.运维网.com/wyfs02/M00/8A/C3/wKioL1g7zN6wqqoQAAB8fbaMOFk051.png
Q Q一般用什么类型?varchar
手机号一般用什么类型?char()
http://s2.运维网.com/wyfs02/M00/8A/C3/wKioL1g7zOfz34QlAABFxhOJnPc659.png
http://s4.运维网.com/wyfs02/M01/8A/C7/wKiom1g7zPDzNusbAAB1TEQX4EA664.png
http://s2.运维网.com/wyfs02/M01/8A/C3/wKioL1g7zPrQmVAdAAB2eu5RAU0799.png
1.8.4 例题:创建一个简单的表
表名:stu
字段名:
Stuid int,
Stunamevarchar(10)
http://s3.运维网.com/wyfs02/M01/8A/C3/wKioL1g7zRKAr7OlAAAG6gH73Fw235.png
1.8.5 查看所有表
语法:
Show tables;
http://s5.运维网.com/wyfs02/M02/8A/C7/wKiom1g7zRzDzfHEAAAF7Np8bAo683.png
1.8.6 显示创建表的SQL语句
语法:
Show create table表名 [\G]
\G:表示table字段和create table字段竖排。
http://s4.运维网.com/wyfs02/M02/8A/C3/wKioL1g7zSXQZWSgAAAOn2IFd78440.png
1.8.7 显示表结构
describe 表名
describe:描述
http://s2.运维网.com/wyfs02/M02/8A/C7/wKiom1g7zTGy1aS_AAAT7udBZSY132.png
http://s1.运维网.com/wyfs02/M00/8A/C4/wKioL1g7zTqg5wXwAACBuaGzZ-A951.png
1.8.8 删除表
Drop table 表名
http://s2.运维网.com/wyfs02/M02/8A/C4/wKioL1g7zUPgEhpsAAAELwdCcR8457.png
Drop table 表1,表2,表3…
http://s1.运维网.com/wyfs02/M01/8A/C7/wKiom1g7zUyTN6dhAAAEm1GDQw4174.png
1.8.9 创建复杂的表
http://s3.运维网.com/wyfs02/M01/8A/C4/wKioL1g7zVSBbTyXAAALJO76Zx0337.png
http://s3.运维网.com/wyfs02/M00/8A/C7/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> --将3号的学生性别改成‘男’,地址改成‘天津’
update stu set sex='男' where>1.9.3 删除数据(删)
语法:
Delete from 表
例题
--删除李白
delete from stu where name='李白';
-- 思考:如下语句输出什么?
delete from stu;--将stu表中的数据全部删除
--删除学生是6号的学生
delete from stu where>1.9.4 查询数据(查)
语法:
Select 列名 from 表
由低到高排序:升序 asc
由高到低排序:降序desc
默认是升序排列
Limit中的起始位置是从0开始的。
/**
查询
*/
--查询所有学生的姓名和性别
select name,sex from stu;
--查询所有学生的所有字段
select> --通过*号来代替所有字段
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;
--从第一条开始,去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;
http://s5.运维网.com/wyfs02/M00/8A/C4/wKioL1g7zWeRu1XNAAAG57xsqtw943.png
1.10 运算符
1.10.1 比较运算符
运算符
描述
>
大于
>=
大于等于
页:
[1]