MYSQL数据库简介
1.什么是数据库?
数据库(database) 就是一个由一批数据构成的有序集合,这个集合通常被保存为一个或多个彼此相关的文件。
 
2.什么是关系型数据库?
数据被分门别类的存放在一些结构化的数据表(table)中,而数据表之间又往往会形成种种内在的交叉关系。存在于数据表之间的这种关系(relation)使数据库又被称为关系型数据库;
 
3.关系型数据库系统
MySQL、Oracle、Microsoft SQL Server 和IBM DB2都是关系型数据库系统(database system)。除了管理数据,一个这样的系统还包括用来管理各种关系数据库的程序。一个合格的关系数据库系统不仅要确保各种数据的存储情况安全可靠,还必须能够处理对现有数据进行查询、分析和排序以及对新数据进行保存等诸多命令。
 
4.非关系型数据库:mongoDB
 
5.数据表、记录、字段、查询、SQL、索引
数据表(table)即用来实际存放有关数据的框架结构。
这种数据表里的每一行被称为一条数据记录(data record),简称”记录”,每条记录的结构和格式是由人们在定义该数据表时决定的。例如,在某个用户表里,每条记录可能包含着用户的姓名,出生日期,注册时间等多个字段(field)。每个字段对自己所能存储的信息类型又有着一定的要求(例如,它必须是一个有着某种特定格式的数字或者是一个字符个数不得超过某个预定义最大值的字符串)。
 
查询 是人们用各种SQL指令构造出来的,SQL指令负责具体完成筛选和提取结果数据的工作
 
SQL (Structured Query Lanuage) 结构化查询语言;这种语言已发展为人们在构造数据库查询命令的一个标准。
 
SQL语言
SQL (structured Query Language) 结构化查询语言;
主要用途是构造各种数据库系统操作指令,如 SELECT、INSERT、UPDATE、DELETE;
 
SQL命令可以分类以下三大类别:
DML(Data Manipulation Language 数据处理语言):这类命令主要包括 SELECT、INSERT、UPDATE、DELETE等用来从数据表读出数据,把数据存入数据表或是对数据表里的现有记录进行修改的命令;(增删改查)
DDL(Data Definition Language 数据定义语言):这类命令主要包括CREATE TABLE、
ALTER TABLE 等用来定义和改变数据库结构的命令;
DCL(Data Control Language 数据控制语言):这类命令主要包括GRANT、REVOKE以及另外几个用来帮助人们设置和调整MySQL访问控制机制的SQL命令;
 
查询(SELECT)
1.简单查询
SELECT * FROM tablename 查询所有
 
2.限制查询结果中的数据列个数 查询固定的两列
SELECT column1,column2 FROM tablename
 
3.确定数据表里有多少条数据记录 查询记录
SELECT COUNT(id) FROM tablename
 
WHERE子句
WHERE子句设置查询条件,过滤掉不需要的数据行。 WHERE代表限制条件
例如查询年龄大于20的记录: SELECT * FROM usertable WHERE age>20
WHERE子句可包括各种条件运算符:
1.比较运算符
运算符 含义
= 等于
> 大于
>= 大于等于
< 小于
<= 小于等于
<> 不等于
2.逻辑运算符
运算符 含义
AND 如果组合的条件都是TRUE,返回TRUE
OR 如果组合的条件其一是TRUE,返回TRUE
NOT 如果条件是FALSE,返回TRUE
 
3.限制查询
LIMIT子句用于强制SELECT语句返回指定的记录数。
LIMIT接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。注意:初始记录行的偏移量是0而不是1。

例:检索前5个记录行 
SELECT * FROM table LIMIT 5; 
 
检索记录行 6-15
SELECT * FROM table LIMIT 5,10; 
 
4.查询结构排序
使用ORDER BY子句对查询返回的结果排序。
ORDER BY子句的语法格式为: ORDER BY {column_name [ASC|DESC]} [,...n]
其中ASC表示升序,为默认值,DESC为降序
 

增删改
1.插入数据记录(INSERT)
例:INSERT INTO user (username,password) VALUES ('admin','123456')
一次插入多条记录
INSERT INTO user (username, password)
VALUES ('user1', '123456'), ('user2','123456'), 注:用逗号隔开
 
2.修改数据记录(UPDATE)
例:UPDATE user SET username = 'admin1', passwd ='12345678' WHERE uid = 10
 
3.删除数据记录(DELETE)
例:DELETE FROM user WHERE uid = 10
 
 
数据库操作
编程接口
PHP5开始,PHP向程序员提供了两种MySQL应用程序编程接口:一种是从PHP早期版本一直就有的mysql功能模块;另一种是从PHP5才开始有的mysqli接口;
 
mysql功能模块不是PHP的一个集成组件。要想使用这个功能扩展模块,PHP的Linux版本必须在编译时加上一个—with-mysql选项。PHP的windows版本通过一个DLL文件提供了相应的扩展,不管使用是哪一种操作系统,都必须在php.ini文件里启用这个扩展以确保PHP能够找到所有必要的DLL。
 

操作数据库的步骤

链接mySQL数据库
通过mysql功能模块连接MySQL服务器的办法是调用mysql_connect()函数 ,它需要提供3项信息:MySQL服务器的主机名、MySQL用户名和密码。如果MySQL服务器与PHP运行在同一台计算机上,可以使用localhost作为它的主机名。
例:$conn = mysql_connect("localhost", "root", "123456"); $conn为句柄
 
mysql_connect(server,user,pwd,newlink,clientflag)
 
参数 描述
server 可选。规定要连接的服务器。
可以包括端口号,例如 "hostname:port",或者到本地套接字的路径,例如对于 localhost 的 ":/path/to/socket"。
如果 PHP 指令 mysql.default_host 未定义(默认情况),则默认值是 'localhost:3306'。
user 可选。用户名。默认值是服务器进程所有者的用户名。
pwd 可选。密码。默认值是空密码。
newlink 可选。如果用同样的参数第二次调用 mysql_connect(),将不会建立新连接,而将返回已经打开的连接标识。参数 new_link 改变此行为并使 mysql_connect() 总是打开新的连接,甚至当 mysql_connect() 曾在前面被用同样的参数调用过。
clientflag 可选。client_flags 参数可以是以下常量的组合:
MYSQL_CLIENT_SSL - 使用 SSL 加密
MYSQL_CLIENT_COMPRESS - 使用压缩协议
MYSQL_CLIENT_IGNORE_SPACE - 允许函数名后的间隔
MYSQL_CLIENT_INTERACTIVE - 允许关闭连接之前的交互超时非活动时间
 
如果连接成功,这个函数将返回一个标识号码。反则将返回FALSE,并向Web服务器发送一条出错消息,这将使PHP脚本所生成的结果HTML文档里也出现一条出错消息。如果不想让最终用户在他们的web浏览器里看到这样的出错消息,就必须在调用mysql_connect()函数的时候在它的前面加上一个@字符。

 
关闭mySQL数据库
查询MySQL服务器结束后,应当关闭连接。不过关闭连接不是必需的,因为PHP的垃圾回收机制会处理这个问题。
mysql_close()函数关闭可选参数link_id对应的连接。如果没有指定link_id,则认为是最近打开的连接。
例:mysql_close();
 

选择数据库
与MySQL服务器建立连接后,就可以使用各种mysql_xxx()函数去执行SQL命令。但为了避免每次调用mysql_xxx()函数都要指定目标数据库,最好先用mysql_select_db()函数(它相当于SQL命令USE databasename )为后续操作选定一个默认数据库。
 
例:mysql_select_db("mycompany"); db(datebase)
 
 
执行SQL语句
为了执行SQL命令,需要把它们作为一个字符串传递给mysql_query()函数.如果想访问的不是当前数据库,就需要调用mysql_db_query()函数来添加SQL命令并明确给出那个数据库名称,这两个函数的最后一个参数(连接的ID号码,即mysql_connect()的返回值)都是可选的,只有与MySQL服务器建立了多个连接的时候才需要给出这个参数
例:$result = @mysql_query("SELECT * FROM user");
// 自 PHP 4.0.6 起不提倡使用此函数。不要用此函数
           $result = @mysql_db_query("mycompany", "SELECT * FROM product");
如果SQL命令执行成功,mysql_query()函数将返回PHP资源的引用指针( 一个Resource id #2格式的字符串); 否则将返回FALSE,并生成一条出错消息;
mysql_query()函数可以用来执行任何一种SQL命令,比如 SELECT(查询)、INSERT(插入新记录)、UPDATE(修改现有记录)、DELETE(删除现有记录)、CREATE TABLE(创建新数据表)、ALTER TABLE(修改数据表结构)等。
 

获取显示数据
1. mysql_fetch_row() 获取行
mysql_fetch_row()函数将以一个普通数组的形式返回一条结果,它的各个字段需要以$row[n]的方式进行访问。
 
2. mysql_fetch_array()
mysql_fetch_array()函数将以一个关联数组的形式返回一条结果,它的各个字段需要以$row[n]或$row["colname"]的方式进行访问。
 
3. mysql_fetch_assoc()
mysql_fetch_assoc()函数也将以一个关联数组的形式返回一条结果记录,但它的各个字段只能以 $row["colname"]的方式进行访问。
 
4. mysql_fetch_object()
mysql_fetch_object()函数以一个对象的形式返回一条结果记录,
它的各个字段需要以$row->colname的方式进行访问。
这4个函数的共同点是:每次调用将自动返回下一条结果记录,但如果已经到达结果数据表的末尾,则返回FALSE。
 
5.mysql_free_result()
PHP会把查询的结果一直保存到脚本执行结束。如果要提前释放某次查询结果(例如在某个脚本里已经进行了大量查询),可以用mysql_free_result()函数提前释放它。
 
6. mysql_num_rows()
mysql_num_rows()函数用于获取查询返回的记录数;
 
7. mysql_insert_id()
mysql_insert_id()函数用于获取INSERT 操作产生的 ID ;
 
8. mysql_affected_rows ()
mysql_affected_rows ()函数用于获取前一次 MySQL 操作所影响的记录数 ;
 
 
 
 

DEMOS
读取数据的例子
例:读取数据
 
//******链接mySQL******
$conn = @mysql_connetc(“localhost”, “root”, “123456”); //一般写四个参数 主机名 , 根权限 , 密码 , 数据库名 密码为空可以不写
 
//******判断数据链接是否成功******
if($conn == FALSE){
echo “数据库连接失败!“;
exit;
};
 
//******选择数据库******
mysql_select_db(“test”);
 
//******执行SQL******
$result = @mysql_query(“SELECT * FROM user”); //这行代码也就是从"user"数据库中取出所有的数据 并用$result存储 可以类比js认为$result是一个数组对象
 
//******显示查询结果******
if(mysql_num_rows($result) > 0){ //使用mysql_num_rows($result) 函数也就说把查询从数据库中取出来的"数组对象"的长度
While($row = mysql_fetch_array($result)){
echo $row["username"];
echo "<br />";
};
};
//******释放结果集******
mysql_free_result($result); //这行代码类似于将$result这个"数组对象"置空
 
//******关闭连接******
mysql_close();
 

插入数组的例子
$conn = @mysql_connetc("localhost","root","123456")or die("数据库连接败!");
mysql_select_db("test");
//定义了一行数据并插入数据库
$username = 'admin';
$password = '123456';
$reg_time = time();
$sql = "INSERT INTO user (username, password, reg_time) VALUES ('$username', '$password', $reg_time)";
//插入结果给$result
$result = mysql_query($sql);
If($result) {
echo "添加成功";
};
mysql_close();
 

更新数据的例子
$conn = @mysql_connetc("localhost", "root", "123456") or die("数据库连接失败!");
mysql_select_db("test");
$newname = 'root';
//选取id=1的数据 并选择username的字段改变其值
$sql = "UPDATE user SET username='$newname' WHERE id = 1";
$result = mysql_query($sql);
if(mysql_affected_rows() > 0) {
echo "编辑成功";
}
mysql_close();
 
删除数据
$conn = @mysql_connetc("localhost","root","123456") or die("数据库连接失败!");
mysql_select_db("test");
//选取id=1的数据 并删除该数据
$sql = "DELETE FROM user WHERE id = 1";
$result = mysql_query($sql);
if(mysql_affected_rows() > 0) {
echo “删除成功”;
}
mysql_close();

PHP之MYSQL数据库的更多相关文章

  1. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  2. 当忘记mysql数据库密码时如何进行修改

    因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ...

  3. MySQL数据库和InnoDB存储引擎文件

    参数文件 当MySQL示例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等.在默认情况下,MySQL实例会按照一定 ...

  4. 一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库

    说起Oracle数据库,以前没用过Oracle不知道,但是这1年用Oracle后,发现真的是想狂吐槽,特别是那个.NET驱动和链接字符串,特别奇葩.总归是和其他数据库不一样,标新立异,不知道为何.另外 ...

  5. CentOS下mysql数据库常用命令总结

    mysql数据库使用总结 本文主要记录一些mysql日常使用的命令,供以后查询. 1.更改root密码 mysqladmin -uroot password 'yourpassword' 2.远程登陆 ...

  6. [原创]java使用JDBC向MySQL数据库批次插入10W条数据测试效率

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(100000),如何提高效率呢?在JDBC编程接口中Statement 有两个方法特别值得注意:通过使用addBatch( ...

  7. mysql数据库主从同步

    环境: Mater:   CentOS7.1  5.5.52-MariaDB  192.168.108.133 Slave:   CentOS7.1  5.5.52-MariaDB  192.168. ...

  8. PDO连接mysql数据库

    1.PDO简介 PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接 ...

  9. mysql数据库开发常见问题及优化

    mysql 数据库是被广泛应用的关系型数据库,其体积小.支持多处理器.开源并免费的特性使其在 Internet 中小型网站中的使用率尤其高.在使用 mysql 的过程中不规范的 SQL 编写.非最优的 ...

  10. 如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库

    昨天,有个朋友对公司内部使用的一个MySQL实例开启binlog,但是在启动的过程中失败了(他也没提,为何会失败),在启动失败后,他删除了ibdata1和ib_logfile,后来,能正常启动了,但所 ...

随机推荐

  1. office编程必不可少

    原文:office编程必不可少 [转] 1. 微软官方实例: 段落.表格.图表 HOW TO:利用 Visual C# .NET 使 Word 自动新建文档 2. 学习资源 (1)Word in th ...

  2. Protocol Buffer和JSON性能比较

      JSON PB 数据结构支持 简单结构 较复杂结构 数据格式 文本 二进制 数据大小 一般 小,json大小的1/3左右 解析效率 一般 快,是json解析速度的3-10倍 可读性 好,自描述的 ...

  3. Node填坑教程——简易http服务器

    我们这一期做一个简易的http服务器. 先建一个文件夹,就算是一个空的项目了.然后新建app.js和package.json文件. 这样一个简易项目的基本文件就建好了. 通过命令行工具,在项目路径下输 ...

  4. 【ios开发】Block编程

    1 什么是block iOS SDK 4.0开始,Apple引入了block这一特性.字面上说,block就是一个代码块,但是它的神奇之处在于在内联(inline)执行的时候(这和C++很像)还可以传 ...

  5. [译]反-反汇编 & 混淆 #1: 苹果没有遵循自己制定的Mach-O规范?

    原文地址:http://reverse.put.as/2012/02/02/anti-disassembly-obfuscation-1-apple-doesnt-follow-their-own-m ...

  6. 哞哞快的 C# 高斯模糊实现(续)

    昨天刚写了<哞哞快的 C# 高斯模糊实现>,里边提到了用原作者的方法实现对图像快速的高斯模糊处理,说实话,我没看懂,主要是没看懂原理,怎么就“把图片给处理了”,大概是调用了 GDIPlus ...

  7. 代码重构方向原则指导(转载 cnblogs)

    英文原文:Hill Climbing (Wonkish)   重构是一种对软件进行修改的行为,但它并不改变软件的功能特征,而是通过让软件程序更清晰,更简洁和更条理来改进软件的质量.代码重构之于软件,相 ...

  8. django 创建一个通用视图

    创建一个通用视图   抽取出我们代码中共性的东西是一个很好的编程习惯. 比如,像以下的两个Python函数:     def say_hello(person_name): print 'Hello, ...

  9. arcengine 实现调用arctoolbox中的dissolove

    ESRI.ArcGIS.Geoprocessor.Geoprocessor geoprocessor = new Geoprocessor(); ESRI.ArcGIS.DataManagementT ...

  10. springMVC3学习(七)--Interceptor拦截器

    Spring为我们提供了:org.springframework.web.servlet.HandlerInterceptor接口, org.springframework.web.servlet.h ...