让PHP和数据库相结合,掌握原理
mysql数据库:
1.连接mysql数据库:
在MySQL数据库的安装位置-->bin文件夹下复制路径-->在我的电脑-->右击-->属性-->高级系统设置-->环境变量(path)-->编辑-->新建-->CTRL+v粘贴-->确定
进入cmd命令行-->输入mysql -u root -p--> 输入密码 默认密码root
2.关于MySQL数据库:
1.库和表单:表单是存放数据的,库是存放表单的
2.显示数据库:
显示全部数据库:show databases; 末尾加;不加分号会报错
显示部分数据库:show databases like “对应的匹配模式”;
如果忘记数据库名字可以用_下划线表示,表示当前位置的单个字符,或则加%:表示指示位置的多个字符
3.创建数据库:create database class11; 创建数据库class11 注意:这里的database最后没有s
创建下的数据库在安装路径下的data文件夹下,每创建一个数据库在data文件夹下就会创建一个对应的文件夹用来存储数据
4.删除数据库:drop database class11; 注意:不可以删除MySQL数据库自带的数据库文件
数据库可以删但是不能改名
关于表单:
1.选择/使用数据库:use class11;
2.查看库里的表单:show tables;
3.创建表单:1.create table 表名(字段名 字段属性,字段名 字段属性);
例如:create table student (id int(8),name char(16),sex char(4),addr char(32),tel int (16));
创建一个表单 内容有id
注意:字段属性有int(8) 整数 ,括号里表示显示几位数 (一般为2的n次幂)
char(16)字符串,括号里表示显示几个字符串,字母占一个位置,汉字占两个
2.create table 表名 like 表名; 复制一个表,复制结构,不复制数据
4.查看表单:
查看全部表单:select * form 表单名;
查看部分表单:select 字段名 form 表单名;如 select id,name from 表单名;
查看详细表单:select * form 表单名 where 限制条件(如id='1' and/or name="zhang");
5.向表单中添加数据:
insert into 表单名 [(字段名,字段名)] values (内容,内容);
[]字段可以不写,不写values值就必须和表的字段一一对应
如果写了,可以和表中字段不一一对应,但是values值要和字段名一一对应
修改表单内容:
1.添加字段:alter table 表单名 add 字段名 字段属性 after tel;
默认在最后添加 after 在tel之后 first 在表单第一个
2.删除字段:alter table 表单名 drop 字段名;
3.修改字段:alter table 表单名 旧字段名 新字段名 字段属性;
4.修改字段属性:alter table 表单名 字段名 新属性;
5.查看表结构:desc 表名; describe 表名; show columns form 表名;
6.修改表名:rename table 旧表名 to 新表名;
7.删除表:drop table 表名;
8.修改表数据:update 表名 set 字段名=值 where 条件;
9.删除数据:delete from 表名 where 条件;
中文模式:
在MySQL文件夹下找到my.ini配置文件,修改default-character-set=gbk character-set-server=gbk
图像化界面: localhost/phpmyadmin --> 账号密码都是root
=====================================20200303=====================
MySQL高级操作:
添加多个: insert into 表名 (字段名,字段名) values (内容,内容),(内容,内容);
去重:distinct 举例:select distinct 字段名 from 表名;
排序:order by 举例:select * from 表名 order by 列/列名;
解释:by后面可以放字段名 也可以放第几列(如第11列:by 11)
数学统计:select max(字段名) from 表名;
avg()平均值 sum()求和 max()最大值 min()最小值
拼接:concat()将括号内的数据合并,由多行变成一行显示
select [group_]concat(name,"-",math) from stu; 前端查出的数据只在一行显示
结果:
+-------------------------------------+
| group_concat(name,"-",math) |
+-------------------------------------+
| 张三-100,李四-119,王五-95,赵六-99 |
+-------------------------------------+
动态查询:两个表 user 和 weapon_name 先查看id括号里的再查看外面的
select w_name form weapon_name where id=(select weapon from user where uname="后裔");
user; weapon_name;
+------+-------+-------+ +------+--------+
| id | uname | weapon | | id | w_name |
+------+-------+--------+ +------+--------+
| 1 | 李白 | 1 | | 1 | 宝剑 |
| 2 | 后裔 | 2 | | 2 | 弓箭 |
| 3 | 小乔 | 3 | | 3 | 扇子 |
+------+-------+--------+ +------+--------+
限制查询结果:select * from user limit 2; 只显示上边两行
select * from user limit 3,2; 只显示从第3行往后2行的内容
比较运算符/逻辑运算符:>,>=,<,<=,and,or
select * from stu where math>=50 and math<=60;显示数学50-60之间的内容
select math from stu where name is ("张三","李四");显示张三和李四的数学成绩
数据的模糊查询:select math from stu where name like "%san"; %代表多个字符
select math from stu where name like "_hansan"; _代表单个字符
数据库数据类型:
一、整数类型:
1、tinyint:迷你整形,系统采用1个字节保存数据。1个字节=8位,代表的数值是0-255(-128-127) 真正存放数据是(-128-127)之间,超出127按127处理
2、int:整形
3、smallint:小整形,用2个字符保存数据,代表的数值范围(0-65535)真正存贮数据范围(-32768-32767)超出按32767处理
4、bigint:大整形,
二、小数类型:
1、浮点型:
(1.)float:单精度 小数点后7位
例如:float(M,N) M>N M是有效位,N是小数位 M如果是5,是指有效位小数点前后一共5位;N如果是2,是指小数位,表示保存小数点后2位
(2.)double:双精度 更准确 小数点后15位
2、定点型:
decimal:小数点后30位,与float用法相同 一般用在银行系统
三、枚举类型:
1、enum 在创建表单时使用
应用范围:对于保存的数据,有限定的个数,并且是确定的,为了方便使用,给予有限的结果进行标号,以不同的标号得出不同的结果
语法:enum(“男”,“女”,“保密”)当输入1-->男,2-->女,3-->保密
四、字符串类型:
char:定长字符 char(L)L代表字符数,长度为0-255,实际有效长度-128-127之间
varchar:边长字符 节约空间 用法:varchar(L) L代表字符数,长度0-65535,实际长度-32768-32767之间
test:文本类型
tinytext:存放数据2的8次+1数据 text:存放2的16次+1数据 mediumtest:存放2的24次+1数据 longtext:存放2的32次+1数据
==================================20200304================================
列属性:查看列属性:desc 表名;
null:是否允许为空 yes 允许 not 不允许
在定义列属性时,在属性后+not null 例:id int not null;
key:主键 在一个表格中具有唯一性 只能设置一个主键
主键的作用:设置为主键的字段,字段的值是不允许重复的,一般情况下会将id设为主键
添加主键的方式:
1、创建表时,在要添加主键的字段后加primary key;
2、修改列属性:alter table 表名 add primary key(字段);
添加主键失败原因:1、要设置的主键字段出现重复值
2、表格中已经存在主键
删除主键:alter table 表名 drop primary key;
主键自增长:只能在创建表时添加,在primary key后面加上属性:auto_inorement
default:默认值
在没有给字段添加数据时,该字段使用给定的默认值,如果用户添加了数据,则使用用户添加的数据
定义:在定义字段属性时,在属性后添加default“男”
举例:sex char(4)default“男”;
unique key:唯一键
作用:用来设置字段的值不允许重复,在一个表格中可以有多个。
使用:1.可以创建表单时,在对应的字段属性后面加unique key;
2.修改表单属性:alter table 表名 modify 字段名 字段属性(值)unique key;
删除:alter table 表名 drop index 唯一键字段名字;
主键和唯一键区别:
1.主键在一个表格中只能设置一个,唯一键可以设置多个
2.设置主键的字段不允许为空,默认值为0,唯一键不会影响null和default
MySQL数据库管理
一、数据备份
1.数据库备份形式:
(1.)整库备份
语法:mysqldump.exe -h主机号 -p端口号 -u用户名 -p密码 数据库名 > 备份位置
例如:mysqldump.exe -hlocalhost -p3306 -uroot -proot class11 > d:/bak.sql
还原:
语法:mysql -u用户名 -p密码 要还原库名 < 备份的位置
例如:mysql -uroot -proot class11 < d:/bak.sql
注意:1.空格问题,主机名、端口号、用户名、密码之间没有空格
2.文件后缀必须是.sql
(2.)单表备份
语法:mysqldump.exe -h主机号 -p端口号 -u用户名 -p密码 数据库名 表名 > 备份位置
举例:mysqldump.exe -hlocalhost -p3306 -uroot -proot class11 usr > d:/bak.sql
还原:
方法一:语法:mysql -u用户名 -p密码 要还原库名 < 备份的位置
例如:mysql -uroot -proot class11 < d:/bak.sql
方法二:语法:mysql > source 备份位置;
例如:source d:/bak.sql;
(3.)多表备份 与单表备份相同
语法:mysqldump.exe -h主机号 -p端口号 -u用户名 -p密码 数据库名 表名 表名 表名 > 备份位置
举例:mysqldump.exe -hlocalhost -p3306 -uroot -proot class11 usr user users > d:/bak.sql
还原:与单表备份还原一样
方法一:语法:mysql -u用户名 -p密码 要还原库名 < 备份的位置
例如:mysql -uroot -proot class11 < d:/bak.sql
方法二:语法:mysql > source 备份位置;
例如:source d:/bak.sql;
2、其他:information_schema 存放整个MySQL数据库的表结构
performance_schema 存放整个MySQL数据库的所有数据
MySQL 存放整个MySQL数据库的用户信息
test MySQL数据库测试库,没有太大的作用
二、用户管理 在MySQL数据库中有user表 里面存放MySQL的用户信息 select Host,User,Password from user;
创建用户:方法一:直接在user表中插入数据(不建议)
方法二:create user 用户名 indetified by "密码"
例如:create user 'user1'@'localhost/12.0.0.1' identifed by '123456' 指定IP和密码
create user 'user1'@'%' identifed by '123456' 指定密码,不指定IP 任何IP都能连
create user user1 不指定IP和密码
注意:用户名要写成用户名@主机名(localhost/127.0.0.1)
数据库文件支持远程登陆,远程登陆时需要验证账号和密码,还要验证对方的IP
删除用户:方法一:drop user 'user1'@'192.168.%.%';
方法二:直接在user表中删除(不推荐)
修改用户:
修改密码:set password for 用户名=password('新密码');
三、权限管理
1.数据权限分裂 三类权限
1.数据权限:增 insert 删 delete 改 update 查 select
2.结构权限:create drop
3.管理权限:create user grant赋权 revoke 撤权
2.权限管理 针对用户的 针对某个库 针对某个表单
1.授权管理:
基本语法:grant 权限列表 on 数据库.表名 to 用户名;
解释:权限列表 多个权限之间用 , 隔开;all privileges全部权限
数据库名:库名.* 某个库下的所有表单
库名.表名 某个库下的某个表
*.* 所有库下所有表
例如:grant select,update on class11.user to 'user3'@'%';
2.撤权
基本语法:revoke 权限列表 on 数据库.表名 from 用户名;
例如:revoke update on class11.user from user3;
提示:在不同的机器上 给用户赋权或撤权 不用重新登陆 立即生效 刷新一下,命令:flush privileges
3.破解root用户密码:不使用密码通过root用户进入MySQL数据库
mysqld.exe --skip-grant-tables 再打开一个cmd终端输入mysql就可以直接登陆root用户 mysqld.exe是MySQL数据库的救援模式
远程登陆:tomcat软件 root用户不能直接登陆
==========================================2020305===================================
数据库与PHP结合 在MySQL数据库中创建一个库class11
登陆:
在PHP创建一个HTML文件,输入
<form action="./che.php" method="post" enctype="application/x-www-form-urlencoded"> 连接.PHP
<input type="text" name="uname" placeholder="请输入用户名" value=""><br> 输入框
<input type="password" name="upassword" placeholder="请输入密码" value=""><br> 输入框
<input type="submit" value="登陆"><input type="submit" value="注册"> 按钮
</form>
在PHP先和数据库建立联系
$name=$_POST["uname"];
$password=$_POST["upassword"];
1. 连接数据库
$link=mysqli_connect("localhost","root","root","class11");
2.判断是否连接成功
var_dump((bool)$link);
if (!$link){
echo "数据库连接失败";
}
3. 准备数据库命令
$sql="select * from user where uname='$name' and upassword='$password'";
4. 发送数据库命令
$res=mysqli_query($link,$sql);
5. 获取数据库返回结果并做处理
$row=mysqli_fetch_array($res);//这个是将数据库返回结果转换成关联数组
if ($row!=null){
echo "登陆成功";
}else{
echo "登陆失败";
}
6.关闭数据库
mysqli_close($link);
注册:
MySQL数据库的部分笔记
最新推荐文章于 2023-06-19 23:07:41 发布