Part 3 数据库

一、MySQL基本概念和操作

1.基本概念

  • 结构化查询语言sql(structed query language ),用来操作关系型数据库。标准sql是所有关系型数据库都支持的操作语句,标准SQL也叫SQL-92,每个数据库都在标准SQL的基础上扩展了自己的东西。两个表的公共字段叫关系。

SQL server--T-sql

oracle--Pl/sql

mysql--mysql

  • 关于表的几个概念

行=记录,一行即一条记录;列=字段,一列即一个字段,字段也叫属性;一个表中包括多个字段。

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

2.数据库操作语句和命令

(1)数据库操作

  • 应用命令行操作数据库前需要先为MySQL数据库管理系统添加环境变量
  • 连接数据库需要的参数

host  主机 -h

username  用户名 -u

password  密码 -p

port  端口号 -P(大p)

至少在dos命令下输入 mysql -uroot -p

\q 退出数据库

  • 创建数据库

语法:create database 数据库名 ;

create database if not exists 数据库名;

数据库名不能是关键字,如果要用关键字用反引号括起来,反引号在波浪线下面

  • 查询数据库

show databases;(分号)

show create database 数据库名;显示创建数据的语句

  • 更改数据库

创建数据库时指定字符编码:create database 数据库名 charset=utf8;(只有数据中utf-8之间没有-)

更改数据库字符编码:alter database 数据库名 charset=gbk;

  • 删除数据库

drop database 数据库名;

drop database if exists 数据库名;

  • 选择数据库

use 数据库名;

(2)数据库表操作

  • 创建表

create table 表名(字段1 数据类型 [null|not null] [default] [auto_increment] [primary key],

字段2 数据类型);

依次对应不为空、默认值、自增、主键

主键特点:不能重复,不能为空,一个表只能有一个主键,主键可由多个字段一起组成

数据类型:int整数,decimal(总位数,小数位数)小数,  char(10) 定长字符, varchar(10)可变长度字符,text大段文本,binary(2进制,可存储图片信息,一般不这样存而是存路径)latin两个字符一个中文 utf8一个字符一个中文

  • 修改表
ALTER TABLE user ADD username varchar(20) ;
alter table mismatch_user drop column username;
ALTER TABLE 表名 ADD id INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY(id)
添加一列列名为id,整数 不为空 自增 添再第一列 将id设为主键

mysql对声明主键的列作了一些限制,有5大原则: ①数据不能重复 ②必须有一个值,不能为null ③插入新行时必须设置主键 ④主键必须尽可能高效,一般为整数 ⑤主键值不能改变

 

  • 查看所有表

show tables;show create table stu /G;    /G改变显示方式横竖排

  • 显示表结构 

 

describe 表名; 简写desc 表名;

  • 删除表

drop table 表名;

drop table  表1,表2,表3;一次删除多表

  • dos命令导入表
mysql>use 数据库
mysql>source 表路径;
常见错误1:在MySQL中,反斜杠是转义字符。路径直接粘贴后转要使用/。
常见错误2:文件在c桌面上时,报错failed to open error22,文件移到其他盘符、包括c盘内部后正常。

 

(3)数据操作

  • 插入数据(增)

insert into 表名(字段1,字段2)values(值1,值2);字符用单引号

插入字段可以省略,插入的值和数据表字段顺序和个数都相同时

自动增长值插入可以用null代替,默认值用default代替。

insert into table_name(column_name1,column_name2)values('value1','value2')
//值要与数据库列名顺序相同
insert into stu1 values (null,'dan','女',default,90);
  • 修改数据(改)

update 表名 set 字段1=值1 where 条件;

update 表名 set 字段1=值1;将所有字段1都改为值1

update 表名 set 字段1=值1,字段2=值2  where 条件;

 update stu1 set `add`=default where id=1;
  • 查询数据(查)

select * from 表名;(*代表所有字段)

select 列名 from 表名 where 条件 【order by 排序字段 asc|desc】 【limit 起始位置,获取的记录数】

ASC是order by的默认排序选项。

select name ,sex from stu1;
 select name from stu1 where sex='女' or (sex='男' and id='上海');
 select * from stu1 where sex='女' order by score asc;  默认是升序,asc升,desc降
 select * from stu1 limit 2; 分页

 select * from stu1 limit 0,2; 取表中两条数据第一条和第二条,数据库中0开始是第一条,同数组。
 select * from stu1 order by score desc limit 3;取班级前三名
  • 删除数据(删)

delete from 表名 【where 条件】;可以在where条件中强制设置只删除一行数据 limit 1;

delere from 表名;删除数据,区分于 drop 表名(彻底删除表)

数据库会保留操作日志,如上,删除再增加数据,自增长id在删除数据基础上增加。

(4)数据库其他语法

  •  比较运算符
比较运算符逻辑运算符
>大于and
<小于or
<=小于等于not
>=大于等于  
=等于和赋值都是单等  
<>不等于  
  • 聚合函数 

sum():求和

avg():平均值

max():求最大值

min():求最小值

count():记录数

select max(score) from stu1; 最大值
select count(*) from stu1; 记录数
  • 其他函数

SHA() :加密,把一段文本加密为唯一的40字符编码;单向加密,无法解密。

  • 大小写

sql语句不区分大小写,php变量,数组区分大小写。

函数名、方法名、类名不区分大小写

php.ini配置项指令区分大小写

二、在php中扩展mysql

1.php开启mysql扩展

php本身是一个框架,它由php扩展而来。要通过php链接数据库,必须开启php链接mysql的扩展,也就是php的MySQL扩展。

2.php-MySQL函数 

(1)连接数据库

<?php
	//连接数据库
	$link=mysqli_connect('localhost','root','12345');
	if($link)
	{
		echo'success';		
	}
	else{
		die('failed');//终止后面程序执行,前面数据发送到客户端 //中止执行函数exit()或die()

	}

    $link=mysqli_connect('localhost','root','12345') or die('数据库连接失败');

    $link=@mysqli_connect('localhost','root','12345') or die('数据库连接失败');
    隐藏提示敏感信息。
?>

(2)选择数据库 

①通过执行数据库名来选择数据库

②通过选择函数选择

	$link=@mysqli_connect('localhost','root','123456') or die('数据库连接失败');
	方法1:$qlink=mysqli_query($link,'use gao') or die('数据库连接failed');
	方法2:mysqli_select_db($link,'gao') or die('failed');
	?>

(3)设置mysql客户端的字符编码(可选)

mysqli_query($link,'set names utf8');

(4)获取数据 (获取资源中数据)

方法1:循环取出,取出一条记录匹配成索引数组,mysqli_fetch_row()。缺点字段删除或添加无法变更。

	<?php
	    $link=@mysqli_connect('localhost','root','123456') or die('数据库连接失败');//1.连接数据库
		mysqli_select_db($link,'charge') or die('failed');//2.选择数据库

	$rs=mysqli_query($link,'select*from products');//3.*****获取products表数据*****
	?>
	<table>
		<tr>
			<th>编号</th>
			<th>品名</th>
			<th>规格</th>
			<th>价格</th>
			<th>数量</th>
			<th>样图</th>
			<th>网址</th>
		</tr>
	<?php		
	while($rows=mysqli_fetch_row($rs))//4.*****循环取出。取出一条记录匹配成索引数组*****
	{
		echo'<tr>';
		echo'<td>'.$rows[0].'</td>';
		echo'<td>'.$rows[1].'</td>';
		echo'<td>'.$rows[2].'</td>';		
		echo'<td>'.$rows[3].'</td>';
		echo'<td>'.$rows[4].'</td>';
		echo $rows[5]==''?'<td>图像为空</td>':'<td><img src="'.$rows[5].'"></td>';
		echo'<td>'.$rows[6].'</td>';		
		echo'</tr>';
	}
	?>		
	</table>

方法2:循环取出,取出一条记录匹配成关联数组,mysqli_fetch_assoc();匹配字段名。

	<?php		
	while($rows=mysqli_fetch_assoc($rs))//4.循环取出。取出一条记录匹配成关联数组。数组的键和数据表的字段名相关联。
	{
		echo'<tr>';
		echo'<td>'.$rows['pid'].'</td>';//注意:关联数组的键必须要和字段名完全一致,区分大小写。
		echo'<td>'.$rows['pname'].'</td>';
		echo'<td>'.$rows['pparameter'].'</td>';		
		echo'<td>'.$rows['pprice'].'</td>';
		echo'<td>'.$rows['pamount'].'</td>';
		echo $rows['pimages']==''?'<td>图像为空</td>':'<td><img src="'.$rows['pimages'].'"></td>';
		echo'<td>'.$rows['pweb'].'</td>';		
		echo'</tr>';
	}
	?>

方法3:取出资源中的当前记录,匹配成的数组既支持关联数组,也支持索引数组,mysqli_fetch_array()。

方法4:(每一天记录当成一个对象,每一个字段当成对象的一个属性。)从记录集中取出一条数据,匹配成对象,指针下移一条,mysqli_fetch_object()。

(对象调用属性,php中通过->符号调用属性)

	<?php		
	while($rows=mysqli_fetch_object($rs))//4.循环取出。取出一条记录匹配成关联数组。数组的键和数据表的字段名相关联。
	{
		echo'<tr>';
		echo'<td>'.$rows->pid.'</td>';//注意:关联数组的键必须要和字段名完全一致,区分大小写。
		echo'<td>'.$rows->pname.'</td>';
		echo'<td>'.$rows->pparameter.'</td>';		
		echo'<td>'.$rows->pprice.'</td>';
		echo'<td>'.$rows->pamount.'</td>';
		echo $rows->pimages==''?'<td>图像为空</td>':'<td><img src="'.$rows->pimages.'"></td>';
		echo'<td>'.$rows->pweb.'</td>';		
		echo'</tr>';
	}
	?>

(5)释放资源,关闭链接。

用mysql_free_result()释放资源;mysqli_close()关闭链接。

	mysqli_free_result($rs);//释放资源
	mysqli_close($link);//关闭链接

页面执行完毕后,所有的变量全部销毁,所以也可以不用手动释放资源。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值