PHP学习9——MySQL数据库
主要内容:
- MySQL的启动
- MySQL数据库操作
- 数据库表设计
- 创建和查看表
- 修改表结构
- MySQL语句操作
- 数据库备份与恢复
- PHP操作MySQL数据库
- 面向对象的数据库操作
MySQL数据库是目前最流行的数据库之一,因为他是自由的开源的软件,可以免费的使用,功能强大,跨平台,安全性高,成本低(完全免费),存储量大。
MySQL的启动
点击MySQL的start即可,绿色为正常启动
按住win+r,打开命令窗口,输入cmd,使用dos连接和退出
MySQL数据库操作
创建数据库
CREATE DATABASE db_name
注意:
- 数据库名db_name在windows不区分大小写,而linux是区分的,为了程序的移植,建议使用小写字母名称。
- 不能与其他数据库同名,否则发生错误。
- 名称可以包含字母,数字,下划线,美元符号($),但是不能以数字开头,也不能使用MySQL关键字。
- 名称最长64个字符。
- 每条命令以分号;结束,按enter提交,也可以将一条命令分为多行写,分号结束。
查看数据库
SHOW DATABASES
选择数据库
USE db_name
删除数据库
DROP DATABASE db_name
数据库表设计
数据类型
数值类型
- tinyint,1字节
- smallint,2字节
- mediumint,3字节
- int,4字节
- bigint,8字节
- float,4字节
- double,8字节
- decimal(m,d),m+2字节
字符串类型
- char
- varchar
- binyblob,tinytext
- blob,text
- mediumblob,mediumtext
- longblob,longtext
- enum("value1","value2")
- set("value1","value2")
日期类型
- date,1000-01-01到9999-12-31,3字节
- time,-838:59:59到838:59:59,3字节
- datetime,1000-01-01 00:00:00到9999-12-31 23:59:59,8字节
- timestamp,1970-01-01 00:00:00到2037年的某个时刻,4字节
- Year,1901到2155,1字节
数据字段属性
某些情况,定义数据类型是不够的,还有一些附加属性,比如自动增加,自动补0,设置默认值。
字段属性:
- UNSIGNED,只能设置数值类型,数据不能出现负值
- ZEROFILL,只能设置数值类型,不足补0,比如INT(3) ZEROFILL,将5插入输出005
- AUTO_INCREMENT,只能修饰整数类型,每增加一条,该字段值自动加1
- NULL/NOT NULL,数据默认为NULL,允许为空值,如果指定为NOT NULL数据不能为空值
- DEFAULT,指定默认值
创建和查看表数据
创建表
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tb_name (col_name1 type, col_name2 type...... );
查看表
SHOW TABLES;
输入多行命令以分号结束,例如
CREATE TABLE test_tb( id int(8) AUTO_INCREMENT PRIMARY KEY, user varchar(40) NOT NULL, psw varchar(20) NOT NULL, createtime date NOT NULL DEFAULT 0);
查看表结构
- SHOW COLUMNS FROM tb_name;
- DESCRIBE tb_name [col_name];
- DESC tb_name [col_name];
修改表结构
ALTER [IGNORE] TABLE tb_name alter_specification;
alter_specification是详细要修改的内容
- ALTER TABLE tb_name ADD email varchar(40) NOT NULL;增加新字段
- ALTER TABLE tb_name ALTER psw int(8) NOT NULL;修改字段类型
- ALTER TABLE tb_name CHANGE old_col_name new_col_name type;修改字段名称
- ALTER TABLE tb_name MODIFY col_name type;修改字句定义字段
- ALTER TABLE tb_name DROP col_name;删除字段
- ALTER TABLE tb_name DROP PRIMARY KEY;删除主键
- ALTER TABLE tb_name DROP INDEX index_name;删除索引
- ALTER TABLE tb_name RENAME new_tablename;更改表名称
重命名表
删除表
DROP TABLE tb_name;
删除表需要谨慎,因为删除后数据表无法恢复的。
MySQL语句操作
插入记录
insert into cartoon (name,sex,age,country)values ('Tom','boy',10,'usa'); insert into cartoon (name,sex,age,country)values ('Jerry','boy',9,'usa'); insert into cartoon (name,sex,age,country)values ('Jim','girl',15,'Canada'); insert into cartoon (name,sex,age,country)values ('Mario','boy',20,'France');
注意字符串数据要加单引号,标准SQL一次只可以插入一条数据,因此需要执行4次语句插入4条数据,而MySQL中可以一次插入多数据,例如:
insert into cartoon (name,sex,age,country)values ('Tom','boy',10,'usa'), ('Jerry','boy',9,'usa'), ('Jim','girl',15,'Canada'), ('Mario','boy',20,'France');
查询记录
SELECT * FROM tb_name;
SELECT * FROM tb_name [WHERE condition(查询条件)] [GROUP BY col_name(进行分组)] [HAVING condition(满足的第二条件)] [ORDER BY col_name(排序)] [LIMIT row_count(显示查询结果条数)]——也即是这一个和SQL SERVER有一点点不同,其他几乎一样的。
修改记录
UPDATE tb_name SET col_name=expression WHERE condition
删除记录
DELETE FROM tb_name WHERE condition
数据库备份与恢复
备份数据库
备份数据的操作需要用到mysqldump.exe程序
这里将test数据库备份到D:/test.txt文件中,-p 后面没有密码。
数据库恢复
先退出数据库,回到根目录bin下,
注意恢复数据库语句不要分号;
PHP操作MySQL数据库
访问数据库的步骤PHP访问数据库和使用MySQL客户端的操作类似:
- 打开数据库连接
- 选择数据库
- 对数据库操作
- 关闭结果集
- 关闭数据库连接
连接数据库
<?php //连接数据库 mysqli_connect($server,$username,$password) or die('数据库连接失败!'); echo "数据库连接成功!"; ?>
或者
<?php $servername = "localhost"; $username = "root"; $password = ""; // 创建连接 $conn = new mysqli($servername, $username, $password); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } echo "数据库连接成功<br/>"; ?>
另外我们可以通过配置文件,来设置连接数据库的参数
使用函数 parse_ini_file() 解析配置文件 config.ini 来获得数据库连接参数,然后使用 new 关键字对 mysqli 类进行实例化,最后使用函数 mysqli_connect_errno() 来判断是否成功连接上了 MySQL 数据库,实现该过程的代码如下所示:
try{ //解析config.ini文件 $config = parse_ini_file(realpath(dirname(__FILE__) . '/config/config.ini')); //对mysqli类进行实例化 $mysqli = new mysqli($config['host'], $config['username'], $config['password'], $config['dbname']); if(mysqli_connect_errno()){ //判断是否成功连接上MySQL数据库 throw new Exception('数据库连接错误!'); //如果连接错误,则抛出异常 }else{ echo '数据库连接成功!'; //打印连接成功的提示 } }catch (Exception $e){ //捕获异常 echo $e->getMessage(); //打印异常信息 }
案例:
<?php //连接数据库 $server='localhost'; $username='root'; $password=''; $database='test'; $conn=mysqli_connect($server,$username,$password,$database) or die('数据库连接失败!'); if (mysqli_connect_errno($conn)) { echo "连接 MySQL 失败: " . mysqli_connect_error(); }else{ echo "数据库连接成功!<br/>"; } //选择数据库 $ch=mysqli_select_db($conn,$database); if($ch){ echo "成功选择数据库<br/>"; }else{ echo "数据库可能不存在<br/>"; } //1、操作数据库 $sql='select * from cartoon'; $result=mysqli_query($conn,$sql); if($result){ echo "SQL查询发送成功!<br/>"; } //2、取结果集中的一行作为数组,如果要输出全部可以使用while循环 $arr=mysqli_fetch_assoc($result); //输出返回的数组信息 print_r($arr); //3、取结果集中的一行作为对象,使用对象while循环输出 while($obj=mysqli_fetch_assoc($result)){ echo '<br/>'.$obj['name']."现在".$obj['age']."岁了。<br/>"; } //4、取结果集中的一行作为枚举数组 $result=mysqli_query($conn,$sql); while($arr=mysqli_fetch_row($result)){ echo '<br/>'.$arr[1]."是一个".$arr[2]."。<br/>"; } //5、取结果集中的行数,仅仅对select语句有效 $num=mysqli_num_rows($result); echo "查询到的结果有:".$num."行<br/>"; //6、取受影响的行数,对插入,修改,删除语句有效 $num=mysqli_affected_rows($conn); echo "本次操作受影响行数为:".$num."行<br/>"; //断开数据库连接 mysqli_close($conn); ?>
简单版本
<?php //连接数据库 $conn=mysqli_connect('localhost','root','','test') or die('数据库连接失败!'); //操作数据库 $sql='select * from cartoon'; $result=mysqli_query($conn,$sql); //取结果集中的一行作为对象,使用对象while循环输出 while($obj=mysqli_fetch_assoc($result)){ echo '<br/>'.$obj['name']."现在".$obj['age']."岁了。<br/>"; } //断开数据库连接 mysqli_close($conn); ?>
这里主要是学习MySQL的基本知识,介绍了MySQL数据库的使用、数据类型,常用的命令,为后面PHP连接做好基础准备。
后面介绍了PHP操作数据库的知识,PHP大多数时候是用来查询数据的。
面向对象的数据库操作
创建数据库
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname='my'; // 创建连接 $conn = new mysqli($servername, $username, $password); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); }else{ echo "连接成功<br/>"; } //操作数据库 $sql='CREATE DATABASE my_db'; if($conn->query($sql)==TRUE){ echo '数据库创建成功<br/>'; }else{ echo "数据库创建失败:$conn->error<br/>"; } //关闭连接 $conn->close(); ?>
创建数据表
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname='my_db'; // 创建连接 $conn = new mysqli($servername, $username, $password,$dbname); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); }else{ echo "连接成功<br/>"; } //操作数据库 // 使用 sql 创建数据表 $sql = "CREATE TABLE MyGuests ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date TIMESTAMP )"; if($conn->query($sql)==TRUE){ echo '执行成功<br/>'; }else{ echo '执行失败<br/>'; } //关闭连接 $conn->close(); ?>
插入数据
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname='my_db'; // 创建连接 $conn = new mysqli($servername, $username, $password,$dbname); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); }else{ echo "连接成功<br/>"; } //操作数据库 // 使用 sql 数据插入 $sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')"; if ($conn->query($sql) === TRUE) { echo "新记录插入成功"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } //关闭连接 $conn->close(); ?>
查询数据
<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname='my_db'; // 创建连接 $conn = new mysqli($servername, $username, $password,$dbname); // 检测连接 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); }else{ echo "连接成功<br/>"; } //操作数据库 // 使用 sql 数据查询 $sql = "SELECT * FROM myguests;"; $result=$conn->query($sql); if ($result->num_rows>0) { //输出数据 while($row=$result->fetch_assoc()){ echo "id:".$row['id']."-name:".$row['firstname']."<br/>"; } } else { echo "0 结果<br/>"; } //关闭连接 $conn->close(); ?>
简单版本
<?php // 创建连接 $conn = new mysqli('localhost', 'root', '','my_db')or die("连接失败: " . $conn->connect_error);; //操作数据库 $sql = "SELECT * FROM myguests;"; $result=$conn->query($sql); while($row=$result->fetch_assoc()){ echo "id:".$row['id']."-name:".$row['firstname']."<br/>"; } //关闭连接 $conn->close(); ?>
ok,就到这里。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JavaWeb技术内幕七:JVM体系结构和工作方式
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/81501369 JVM能够跨越计算机体系结构来执行字节码,主要是因为JVM屏蔽了与各个机器平台相关的软件或者硬件之间的差异。使得与平台相关的耦合由JVM提供者来实现。 本文将介绍 1 jvm的总体设计结构 2 jvm的执行引擎如何工作 3 执行引擎如何模拟执行jvm指令 JVM体系结构 何谓JVM JVM是Java虚拟机,它通过模拟一个计算机来达到一个计算机所具有的的计算功能。而真实的计算机具有哪些功能呢。 1 指令集,这是计算机能识别的机器语言的命令集合 2 计算单元 3 寻址方式 4 寄存器定义,包括操作数寄存器,变址寄存器等 5 存储单元,比如内存和磁盘 什么是指令集 指令集就是CPU中用来控制计算机的一套指令的集合,每个CPU在设计时规定了一系列与其他硬件电路配合的指令系统,通过指令集可以对应地操作硬件电路,简单的指令集可以理解为译码电路,每个指令集单元对应一个电路操作,比如打开,关闭,显示特定数字等功能。 计算机指令集可分为精简指...
- 下一篇
玩转kafka中的消费者
上一篇介绍了如何使用Kafka的生产者,这一篇将介绍在实际生产中如何合理地使用Kafka的消费者API。 Kafka中消费者API分为新版和旧版,本章只介绍新版,旧版的就不做介绍了。 首发于我的个人博客:http://www.janti.cn/article/kafkaconsumer 准备工作 kafka版本:2.11-1.1.1 操作系统:centos7 java:jdk1.8 有了以上这些条件就OK了,具体怎么安装和启动Kafka这里就不强调了,可以看上一篇文章。 新建一个maven工程,需要的依赖如下: <dependency> <groupId>org.apache.kafkagroupId> <artifactId>kafka_2.11artifactId> <version>1.1.1version> dependency> <dependency> <groupId>org.apache.kafkagroupId> <artifactId>kafka-cli...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6