热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP+MysQL数据库

数据库基本概念1、数据库服务器安装了数据库软件的电脑,就是“数据库服务器”。安装了Apache软件的电脑,就是“WWW服务器”。数据库服务器,提供对数据的管理、更新、安全、事务等方

数据库基本概念

1、数据库服务器

安装了数据库软件的电脑,就是“数据库服务器”。

安装了Apache软件的电脑,就是“WWW服务器”。

数据库服务器,提供对数据的管理、更新、安全、事务等方面功能。

举例:数据库服务器,可以看成是一个“文件柜”。

2DBMS

DBMS(Database Management System)数据库管理系统,是一个管理数据的大型软件。

常用DBMS软件有哪些?

l  Access:是微软的小型数据库。

l  SQL Server:是微软的大中型数据库。

l  Oracle:是美国甲骨文公司的产品。大型、或超大型数据库。

l  MySQL:原始瑞典的AB公司产品。后来被甲骨文公司收购。大家认为:MySQL只适用中小型网站数据库。是免费的产品。

3、数据库

数据库:存储数据的仓库。

举例:数据库,可以看成是一个“文件柜”中的“小格子”。还可以看成是不同的“文件夹”。

4、数据表

数据表是存储数据的真正的地方。

举例:数据表,可以看成是一个具体的“文件”。其实,就像一张“会员等级表”。

5、记录、字段、数据

PHP+MysQL数据库

MySQL登录和退出——在MySQL命令行

1、登录到MySQL服务器

PHP+MysQL数据库

 

2、退出MySQL客户端

 PHP+MysQL数据库

MySQL数据库操作

1、显示数据库

l  语法:SHOW DATABASES; 用来查询出所有的数据库

 PHP+MysQL数据库

2、创建数据库

l  语法格式:CREATE DATABASE IF NOT EXISTS db_name CHARSET=utf8;

PHP+MysQL数据库

 

l  参数说明

create database是系统命令。

if not exists 是可选项。是一个条件判断。如果不存在,则创建数据库。

db_name 是自定义的数据库名称。

数据库名称的命名规则,与PHP变量一样,包括 a-z、0-9 、_这些符号,不区分大小写。

charset是设置数据库的默认字符集。默认字符集为lain1。

注意:如果设置为UTF8,不能带中划线。PHP中要求必须带中划线。

举例:

create database online;  //默认字符集是latin1

create database if not exists online;  //如果数据库不存在,再进行创建

create database online charset=utf8;  //指定数据库的默认字符集为utf8

3、删除数据库

语法:DROP DATABASE IF EXISTS db_name;

PHP+MysQL数据库

MySQL数据库字符集

1、查看数据库的字符集

含义:显示创建数据库的SQL语句

语法:SHOW CREATE DATABASE 数据库名;

举例:show create database auth;

 PHP+MysQL数据库

2、通过MySQL命令来修改数据库的字符集

语法:ALTER DATABASE 数据库名 DEFAULT CHARACTER SET utf8

举例:alter database db_name default character set utf8

 PHP+MysQL数据库

MySQL数据表操作

1、选择数据库

描述:选择当前要操作的数据库,当前数据库只能是一个。

语法:USE 数据库名;

举例:use db_name;

PHP+MysQL数据库

2、显示所有的数据表(文件)

n  描述:显示当前数据库下的,所有数据表。

n  语法:SHOW TABLES;

 PHP+MysQL数据库

3、创建数据表的结构

n  语法:CREATE TABLE table_name(col_name col_type col_attr, col_name col_type col_attr,……)

参数:

col_name:列的名称。

col_type:列的数据类型。如:tinyint、int、bigint、char、varchar、text、date、time等。

col_attr:列的属性。

NOT NULL | NULL:该列是否可以为空。

DEFAULT default_value:指该列的默认值。

default_value默认值可以是字符串,也可以是整型。

AUTO_INCREMENT:该列为自动增长型,或者自动编号。要求该列必须是整型。一个表只能有一个auto_increment属性

PRIMARY KEY:主键。指定该列的值具有唯一性,主键所在的列不能为空。一个表的主键只能有一个

id字段的属性必须有:NOT NULL AUTO_INCREMENT PRIMARY KEY

一个数据表,由多个列构成。多个列定义之间用英文下的逗号隔开。

PHP+MysQL数据库

4、删除数据表

l  语法:DROP TABLE IF EXISTS 表名;

l  举例:drop table if exists news;

 PHP+MysQL数据库

5、数据表----增删该查

添加列:alter table 表名 add 列名 数据类型 

PHP+MysQL数据库

删除列:alter table 表名 drop 列名

PHP+MysQL数据库

添加数据:insert into 表名 values(列里的数据)--添加一行的数据

PHP+MysQL数据库

删除数据:delete from 表名(全删)
delete from 表名 where 列名=数据and列名=数据(删除某行数据)

PHP+MysQL数据库

修改数据:update 表名 set 列名=数据
update 表名 set 列名=数据,列名=数据where主键列名=数据
update 表名 set 列名=nullwhere主键列名=数据 --数据清空

PHP+MysQL数据库

基础查询数据
select * from 表名 --全部查询

PHP+MysQL数据库

select 列名,列名(多个用逗号隔开) from 表名 --按列查询

PHP+MysQL数据库

select*from 表名 where 列名>=and/or<= --条件查询也是筛选查询

select * from 表名 where列名like '%数据%'(%:前面或是后面可以有内容) --模糊查询,使用通配符%
select * from 表名order by 列名 asc --升序查询
select * from 表名order by 列名 desc --降序查询
select *from 表名 where 列名like '%数据%'order by 列名 asc(都可以拼接起来)
select distinct 列名 from 表名 --去重(只能显示一列)
select 列名 from 表名 group by 列名 --分组

where筛选条件:where筛选条件是找。除了添加数据没有where之外,其他都有,特别是删除数据时,没有where就全部删掉了。

from表(找到数据集)—where(对数据进行删选)—group by(对数据进行分组,合并处理)—select(选出数据项)—order by(对结果数据集进行排序)

DESC显示表的结构定义

语法:desc think_admin;

 PHP+MysQL数据库

MySQL数据类型

1、整型浮点型

       (1)整型

              tinyint             最小型整数    0-255(-128 ~ +127)   1个字节

              smallint           小型整数       0-65535                      2个字节

              mediumint        中型整数       0-1677万                     3个字节

              int               一般整数      0-21亿                         4个字节

              bigint           最大整数       0-42亿                         8个字节

       (2)浮点型

              float(M,D)      单精度(精确到小数点后7位)    M代表长度,D代表小数位数

            举例:float(6,2) //总长度为6位,小数位数为2位,小数点不算。存的最大值为9999.99

          double(M,D) 双精度(精确到小数点后15位)   M代表长度,D代表小数位数。

2、日期时间型

       date   日期型   格式为: “YYYY-mm-dd”

       time   时间型   格式为: “00:00:00”

3、字符和文本型

       (1)字符型

              char(M)         0-255      固定长度的字符串   如:邮编、手机号码、电话号码等

              varchar(M)    0-65535  可变长度的字符串   如:新闻标题、家庭地址、毕业院校等。

       (2)文本型

              tinytext     0-255      小型文本

              Text        0-1670万  中型文本

              longtext    0-42亿     大型文本

PHP使用MySQL数据库

第一步:PHP连接MySQL服务器

第二步:选择当前要操作的数据库

第三步:设置请求或返回的数据的字符集

第四步:执行各种SQL语句。

建立mysql链接   

mysql_connect   参数一:服务器地址   参数二:是账号    参数三:密码   参数四:表名
$con = mysqli_connect('127.0.0.1','root','songbo','auth') or die('Could not connect: ' . mysqli_error($con));

创建数据库:db1

$sql_create_db = "create database aaa";
if (mysqli_query($con, $sql_create_db)) {
 echo "aaa ok";
} else {
 echo "aaa failed:" . mysqli_error($con);
}

 


删除数据库:db2

$sql_delete_db = "drop database aaa";
if (mysqli_query($con, $sql_delete_db)) {
echo "aaa ok";
} else {
 echo "aaa failed:" . mysqli_error($con);
}

选择数据库;db3

mysqli_select_db($con, 'aaa');

 


创建数据表;person

$sql_create_table = "create table bb(id int NOT NULL AUTO_INCREMENT,PRIMARY KEY(id),name varchar(15),age int)";
if (mysqli_query($con, $sql_create_table)) {
echo "bb table ok";
} else {
echo "bb table failed:" . mysqli_error($con);
}

 



在表(person)中插入新数据;

$sql_inset = "insert into bb (name,age) value ('songbo',22)";
if (mysqli_query($con, $sql_inset)) {
echo "insert table ok";
} else {
echo "insert table failed:" . mysqli_error($con);
}

 



从表(person)中删除数据;

$sql_delete = "delete from bb where age = 22";
if (mysqli_query($con, $sql_delete)) {
echo "delete table ok";
} else {
echo "delete table failed:" . mysqli_error($con);
}

 



从表(person)中查询数据;

$sql_select = "select * from bb";
$result = mysqli_query($con, $sql_select);
/** 输出查询结果 */
while ($row = mysqli_fetch_array($result)) {
echo $row['id'] . "name=" . $row['name'] . "age=" . $row['age'],"
";

}
$result->close();

 

在设计流程上,每个页面都要从多张数据表当中查询多个数据显示出来,对于访问量很小的网站来说数据库查询压力和负载基本不用太多考虑,但是如果访问量过大的话,就必须考虑这个问题了,目前我的疑问有这么几个方面:

 

1.mysql数据库同时连接数量默认是限制多少,对于同时在线过万的连接请求,如何优化?
2.mysql的执行语句结束后,是否必须执行关闭连接?
3.如果同时分别用多个function()查询多个数据表,每个function结束里面是不是也要添加close()语句?


回答
1.默认连接这个根据版本不同而不同,大到200-500,这个是用户最大连接数,还有个全局最大连接数。
2.优化概念太大了,这个根业务和引擎有关,硬件的话,大内存加固态必须的。

 

3.每次执行完是否关闭,看业务吧,如果长连接多,可以不用关,超时时间后会自动回收,默认八小时

 


更新表(person)中数据;

$sql_update = "update bb set age = 200 where id=2";
$result = mysqli_query($con, $sql_update);
if ($result) {
echo "sql_update table ok";
} else {
 echo "sql_update table failed:" . mysqli_error($con);
}

 

 

关闭数据库连接

mysqli_close($con);

 

 

屏蔽系统错误@

描述:@可以屏蔽各种函数调用错误,或包含文件错误,但是不能用在函数定义或类定义之前。

 

 

 

 

 

 

从结果集中取出一行数据

1mysqli_fetch_row()

描述:从结果集中取得一行作为枚举数组。

语法:array mysql_fetch_row ( resource $result )

参数:$result是结果集变量。

返回值:返回一个枚举数组,也就是从0开始的正整数下标。这里的下标,是与表的字段下标是对应。

举例:$arr = mysql_fetch_row($result)

 

2mysql_fetch_array()

描述:从结果集中取出一行,作为混合数组返回。

语法:array mysql_fetch_array ( resource $result [, int $ result_type ] )

参数:

$result:是指结果集变量。

$result_type:是指返回的数组的类型。取值:MYSQL_BOTH、MYSQL_ASSOC、MYSQL_NUM

MYSQL_BOTH:默认的。也就是两种下标都存在。

MYSQL_ASSOC:只有字符下标的数组。相当于mysql_fetch_assoc()的功能。

MYSQL_NUM:只有整数下标的数组。相当于mysql_fetch_row()的功能。

以上三个参数是常量,系统常量必须全大写。

返回值:返回一个数组,至于是什么数组,取决于第二个参数。

举例:

$arr = mysql_fetch_array($result)  //混合数组

$arr = mysql_fetch_array($result , MYSQL_ASSOC )  //关联数组

$arr = mysql_fetch_array($result , MYSQL_NUM)   //枚举数组

3mysql_fetch_assoc()

描述:从结果集中取一行,以关联数组返回。

语法:array mysql_fetch_assoc(resource $result)

举例:$arr = mysql_fetch_assoc($result)

 

PHP函数补充

1include语法结构

l  描述:包含并运行指定文件。

l  语法:include $filename  或者  include($filename)

l  举例:include “include/conn.php”

2require语法结构

l  描述:包含并运行指定文件。

l  语法:require $filename  或者  require($filename)

l  举例:require “include/conn.php”

注意:include和require都是包含并运行文件,但是,是有区别的。

      如果包含的文件不存在,include将报一个警告错误,脚本继续向下运行。

      而require将报致命错误,脚本将立即终止执行。

 

3header()

描述:发送一个自定义的http报文,换句话说:PHP返回的数据的格式或字符集。

语法:void header ( string $string)

举例:

header(“content-type:text/html;charset=utf-8”)  //设置PHP返回数据的字符集

header(“location:http:www.sina.com.cn”);      //网页跳转

JS中的跳转:location.href = “http://www.sina.com.cn”

HTML跳转:


推荐阅读
  • Oracle字符集详解:图表解析与中文乱码解决方案
    本文详细解析了 Oracle 数据库中的字符集机制,通过图表展示了不同字符集之间的转换过程,并针对中文乱码问题提供了有效的解决方案。文章深入探讨了字符集配置、数据迁移和兼容性问题,为数据库管理员和开发人员提供了实用的参考和指导。 ... [详细]
  • 如何使用mysql_nd:Python连接MySQL数据库的优雅指南
    无论是进行机器学习、Web开发还是爬虫项目,数据库操作都是必不可少的一环。本文将详细介绍如何使用Python通过 `mysql_nd` 库与 MySQL 数据库进行高效连接和数据交互。内容涵盖以下几个方面: ... [详细]
  • 如何在MySQL中选择合适的表空间以优化性能和管理效率
    在MySQL中,合理选择表空间对于提升表的管理和访问性能至关重要。表空间作为MySQL中用于组织和管理数据的一种机制,能够显著影响数据库的运行效率和维护便利性。通过科学地配置和使用表空间,可以优化存储结构,提高查询速度,简化数据管理流程,从而全面提升系统的整体性能。 ... [详细]
  • PHP与MySQL的Web应用开发技术深入解析
    PHP与MySQL的Web应用开发技术深入解析 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 本文探讨了如何在C#应用程序中通过选择ComboBox项从MySQL数据库中检索数据值。具体介绍了在事件处理方法 `comboBox2_SelectedIndexChanged` 中可能出现的常见错误,并提供了详细的解决方案和优化建议,以确保数据能够正确且高效地从数据库中读取并显示在界面上。此外,还讨论了连接字符串的配置、SQL查询语句的编写以及异常处理的最佳实践,帮助开发者避免常见的陷阱并提高代码的健壮性。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • PHP自学必备:从零开始的准备工作与工具选择 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 在Node.js中调用MySQL存储过程`updateUser(p1, p2, @p3)`时,其中`@p3`为输出参数。若更新操作失败,则返回0;成功则返回1。本文将详细介绍如何正确获取存储过程的返回结果,并确保在实际应用中能够顺利执行。 ... [详细]
  • MySQL数据库安装图文教程
    本文详细介绍了MySQL数据库的安装步骤。首先,用户需要打开已下载的MySQL安装文件,例如 `mysql-5.5.40-win32.msi`,并双击运行。接下来,在安装向导中选择安装类型,通常推荐选择“典型”安装选项,以确保大多数常用功能都能被正确安装。此外,文章还提供了详细的图文说明,帮助用户顺利完成整个安装过程,确保数据库系统能够稳定运行。 ... [详细]
  • 本文介绍了如何利用Apache POI库高效读取Excel文件中的数据。通过实际测试,除了分数被转换为小数存储外,其他数据均能正确读取。若在使用过程中发现任何问题,请及时留言反馈,以便我们进行更新和改进。 ... [详细]
  • FastDFS Nginx 扩展模块的源代码解析与技术剖析
    FastDFS Nginx 扩展模块的源代码解析与技术剖析 ... [详细]
  • 本文深入探讨了CGLIB BeanCopier在Bean对象复制中的应用及其优化技巧。相较于Spring的BeanUtils和Apache的BeanUtils,CGLIB BeanCopier在性能上具有显著优势。通过详细分析其内部机制和使用场景,本文提供了多种优化方法,帮助开发者在实际项目中更高效地利用这一工具。此外,文章还讨论了CGLIB BeanCopier在复杂对象结构和大规模数据处理中的表现,为读者提供了实用的参考和建议。 ... [详细]
author-avatar
凡人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有