继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

php基础教程之mysql

慕少森
关注TA
已关注
手记 236
粉丝 42
获赞 216

1.1 回顾重点

1、 elseif 和else if的区别

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

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

初始值:1次

条件:N+1次

增量:N次

3、 访问全局变量用$GLOBALS

 

1.2 数据库简介

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

1.3 数据库的发展史

q 萌芽阶段——文件系统

q 使用磁盘文件来存储数据

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

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

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

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

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

q “关系-对象”型数据库

1.3.1 层次模型

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

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

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

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

 

1.3.2 网状模型

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

 

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

1.3.3 关系模型

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

 

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

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

 

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

 

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) 语法:  盘符:   比如 

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

a) 语法:  cd  路径 

上一级目录  ../

进入根目录: /表示根 

 

连接MySQL服务器需要的参数:

Host:主机-h

Username:用户名-u

Password:密码-p

Port:端口-P 

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

 

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

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

 

mysql -u root -h localhost -p

 

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

 

mysql -uroot -p

1.6 退出数据库

1、 exit

2、 quit

3、 \q

 

1.7 数据库操作

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

1.7.1 创建数据库

语法:

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

Create:创建

Database:数据库

例题:

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

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

语法:

Create database if not exists 数据库名 

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

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

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

1.7.2 查询数据库

Show databases 

1.7.3 显示数据库的创建语句

Show create database 数据库名 

1.7.4 更改数据库

更改数据库的字符编码

alter database 数据库名 [选项] 

alter:修改 

1.7.5 删除数据库

语法:

Drop  database 数据库名

Drop:删除

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

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

Drop database if exists 数据库名 

1.7.6 选择数据库

语法:

Use  数据库名

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:大段文本

思考 

Q Q一般用什么类型?varchar

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

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

表名:stu

字段名:

Stuid   int,

Stuname  varchar(10) 

1.8.5 查看所有表

语法:

Show tables;

 

1.8.6 显示创建表的SQL语句

语法:

Show create table  表名 [\G]

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

 

1.8.7 显示表结构

describe [desc]  表名 

describe  :描述

1.8.8 删除表

Drop table 表名 

Drop table 表1,表2,表3… 

1.8.9 创建复杂的表  

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; 

 

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='男';


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP