1 数据库
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
2 数据库的分类及区别
2.1 分类:
关系型数据库:MySQL、MariaDB(MySQL的代替品)、Microsoft Access等等
非关系型数据库(NoSQL):Redis、MongoDB、等等
2.2 区别:
2.2.1 关系型数据库优点:
易于维护:都是使用表结构,格式一致
使用方便:SQL语言通用,可用于复杂查询
复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询
2.2.2 缺点:
读写性能比较差,尤其是海量数据的高效率读写
固定的表结构,灵活度稍欠
高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
2.2.3 非关系型数据库优点:
格式灵活:存储数据的格式可以是Key,Value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型
速度快: NoSQL可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘
高扩展性
成本低:NoSQL数据库部署简单,基本都是开源软件
2.2.4 缺点:
不提供SQL支持,学习和使用成本较高
数据结构相对复杂,复杂查询方面稍欠
3 MYSQL数据库基本操作
从phpstudy本地文件中,输入cmd
3.1 输入命令行mysql -u root -p后再输入密码即可进入(初始密码应该为root)
3.2 show databases 查看有什么数据库
show databases;
3.3 create database [库名] 新建数据库
create database userinfo;
3.4 use [库名] 进入数据库
use userinfo;
3.5 create table 表名(字段名 字段类型, 字段名2 字段类型) 新建数据表
CREATE TABLE users (id INT(8) NOT NULL AUTO_INCREMENT, user VARCHAR(255) NOT NULL,pass VARCHAR(255) NOT NULL,PRIMARY KEY (id));
3.6 show tables 查看有什么表
show tables;
3.7 desc [表名] 查看表结构
desc users;
3.8
drop database [库名] ( 删除数据库)
Drop table [表名 ] (删除数据表)
Alter table 表名 add 字段名 字段类型 (添加表中的字段)
ALTER TABLE users ADD email VARCHAR(255);
Alter table drop 字段名 (删除表中的字段)
ALTER TABLE users DROP COLUMN pass;
Alter table 表名 change 旧字段名 新字段名 新类型 (修改表内字段名)
ALTER TABLE users CHANGE user username VARCHAR(255) NOT NULL;
4 MYSQL记录的增删改查
4.1 插入数据:
insert into 表名 values (值1,值2)
insert into 表名 (列名1,列名2) values (值1,值2)
INSERT INTO users VALUES (1, 'root', 'root123'),(2, 'admin', 'admin456'),(3, 'guest', 'guest789'),(4, 'user1', 'password1'),(5, 'user2', 'password2');
4.2 查询语句:
select * from 表名 where 条件
select * from users;
select 字段名 from 表名 where 条件
select user from users where id>1;

4.3 修改数据:
update 表名 set 列名 = 新列值 where 列名 = 旧列值
update 表名 set 列名 = 新列值 ,列名2 = 新列值 where 列名 = 旧列值
UPDATE user SET pass = 'newpassword' WHERE username = 'admin';
4.4 删除数据:
delete from 表 where 列名 = 列值
delete from users where id = 1;

5 运算符和结果处理
5.1 结果排序:
order by 1 排序第一个字段
order by 字段名 排序写了字段名的这个字段
[默认排序] [asc] [降序] [desc]
5.1.1. 按第一个字段(id
)降序排序
select * from users order by 1 desc;
5.1.2 按字段名排序(降序)
select * from users order by user desc;
5.2 分页:LIMIT n, m
LIMIT n, m 语句用于分页查询,其中 n 是起始行的偏移量(从0开始),m 是要取的记录数。
假设我们要从第2页开始,每页显示3条记录。起始偏移量是 1(因为页码从0开始),取 3 条记录:
select * from users order by id limit 1,3;
5.3 使用 GROUP_CONCAT() 函数
GROUP_CONCAT() 函数用于将多行数据合并成一个以逗号分隔的字符串。假设我们要按 user 列将所有用户的 id 合并成一个字符串:
select group_concat(id,user) as all_ids from users;
5.4 模糊查询:
like '%u%' 查询包uu的所有值
select * from users where user like '%u%';
like 'u%' 查询u开头的所有值
select * from users where user like 'u%';
like '%u' 查uu结尾的所有值
select * from users where user like '%u';
5.5 休眠函数:
Sleep (2) 数据库睡多久
select user,sleep(2) from users;
查询结果显示了 user 列中的所有值,以及 SLEEP(2) 的返回值(0)。
每一行记录都会执行一次 SLEEP(2),因此每一行记录都暂停了2秒。
结果中的 sleep(2) 列始终为0,因为 SLEEP() 函数返回0表示成功。
5.6 查询所在库:
select database();
5.7 数字运算符号:
+ - * / % 跟PHP中没有什么区别
5.8 逻辑运算符:
and [满足两个条件才可以] 查询用户名为 'admin' 并且密码为 'admin456' 的记录:
SELECT * FROM users WHERE user = 'admin' AND pass = 'admin456';
or[满足一个条件就可以] 查询用户名为 'admin' 或者用户名为 'guest' 的记录:
SELECT * FROM users WHERE user = 'admin' OR user = 'guest';
5.9 联合查询:
union 将两个查询语句的结果一起输出【重复的不输出】
select * from users where id=1 union select 1,2,3 union select 1,2,3;
union all 将两个查询语句的结果一起输出【重复的也输出】
select * from users where id=1 union select 1,2,3 union all select 1,2,3;
需要满足条件,相同列数
select * from users where id=1 union select 1,2,3,4;
5.10 子查询:
是嵌套在其他查询中的查询。子查询通常包含在小括号中,并且会在主查询之前执行。子查询可以出现在 SELECT、FROM、WHERE、HAVING 等子句中。
查询 users
表中密码为 'admin456' 或 'guest789' 的用户:
SELECT user, pass FROM users WHERE pass IN (SELECT pass FROM users WHERE pass IN ('admin456', 'guest789'));
6 PHP与数据库的交互
6.1 静态网页:
纯文本,没有任何与后端交互的地方

6.2 动态网页:
可以与后端交互,比如留言板,搜索 等
document.lastModified 是 JavaScript 中的一个属性,用于返回当前文档的最后修改日期和时间。这个属性通常用于网页开发中,以显示或检查网页的最后修改时间。
在网页控制台中输入document.lastModified判断网页是否为动态网页。
比如搜索:
传参 -> PHP处理 -> 到数据库获取 -> 显示数据
很核心的一点就是PHP控制MYSQL的操作其实是要使用到MySqli扩展的,是PHP自带的一个,当看到一个函数有Mysqli_ 前缀的时候,一般都属于是mysqli的扩展
- THE END -
最后修改:2024年7月24日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://huangxin.ltd/mysql%e6%95%b0%e6%8d%ae%e5%ba%93%e5%9f%ba%e7%a1%80/
共有 0 条评论