热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL基础学习笔记(持续更新中)

一、MySQL基础1.数据库概念1.1为什么要学MySQL个人理解:随着互联网的发展,数据变得烦杂,冗余,量大

一、MySQL基础


1. 数据库概念


1.1 为什么要学MySQL

个人理解:随着互联网的发展,数据变得烦杂,冗余,量大,为了保证数据的持久性以及健壮性等等,同时也为了方便人们很好的处理数据,这就发明了数据库DB。


  • 实现数据的持久性
  • 拥有专门管理的数据软件:数据库管理系统DBMS

1.2 数据库相关概念:

DB∶数据库,保存一组有组织的数据的容器。

DBMS∶数据库管理系统,又称为数据库软件(产品),用于管理DB中的数据。

SQL:结构化查询语言:专门用来与数据库管理系统(DBMS)通信的语言。


  • 不是某个特定数据库供应商专有的语言,几乎所有DBMS都支持SQL
  • 简单易学
  • 一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。

2. DBMS的分类:


  • 基于共享文件系统的DBMS(Access)
  • 基于客户机——服务器(C/S 架构)的DBMS(MySQL、Oracle、SQLServer)服务端比较重要。

2.1 RDBMS 与非 RDBMS

2.1.1 关系型数据库

实质:


  • 二维表的格式、二元关系。
  • 数据库由多个表组成
  • 可以支持单表、多表复杂查询,同时有事务支持(安全性很高的数据访问要求得以实现)


2.1.2 非关系型数据库


  • 可以看成传统关系型数据库的阉割版本舍得,舍弃了一些功能,获得某些高性能的功能。
  • 键值型数据库:内存中。Redis
  • 文档型数据库:MongoDB
  • 搜索引擎数据库:Solr
  • 列式数据库:降低系统的I/O,适用于分布式文件系统。
  • 图形数据库。

3. 关系型数据库的设计规则


  • 典型数据结构就是数据表,这些数据表的组成都是结构化的。
  • 将数据库放到表中,表再放到库中。
  • 一个数据库中可以有多个表,每个表都有一个的名字,用来标识这个表。表名具有唯一性。
  • 表具有一些特性,这些特性定义了数据在表中如何存储,类似java中“类”的设计。
  • 表由列组成,我们也称为字段。所有表都是由一个列或多个列组成的,每一列类似java中的“属性”。
  • 表中的数据是按行存储的,每一行类似java中的“对象”

3.1 表、记录、字段


  • E-R模型:实体集、属性、联系集
  • 实体集对应一个表,实体对应表中的一行、也称为一条记录。一个属性对应于数据库中的一列,也称为一个字段。

3.2 表的关联关系


  • 表与表之间的数据记录有关系。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。
  • 四种关系:一对一关联、一对多关联、多对多关联、自我引用。

3.2.1一对一关系(one-to-one)


  • 实际运用不多,因为一对一的关系可以创建成一张表。
  • 一张表拆分为两张表:两个表的记录是一一对应的关系。
    • 但是表的字段太多时,我们可以将表拆分为常用和不常用的两张表。
  • 两种建标原则:
    • 外键唯一:主表的主键和从表的外键唯一。形成主外关系,外键唯一。
    • 外键是主键:主表的主键和从表的主键,形成主外键关系。


3.2.2 一对多关系(one-to-many)


  • 常见实例场景:客户表和订单表,分类表和商品表,部门表和员工表
    • 也就是说一个表里面的一条记录可以对应到另一个表中的多条记录。
  • 一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键

在这里插入图片描述



3.2.3 多对多关系(many-to-many)


  • 要表示多对多关系,必须创建第三个表,该表通常称为联接表,它将多对多关系划分为两个一对多关系。将这两个表的主键都插入到第三个表中。
    在这里插入图片描述

  • 多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键。



3.2.4 自我引用(Self reference)


  • 一个表里面有对应关系

在这里插入图片描述




二、MySQL环境搭建

位置信息(删除时都要删):


  • 软件安装的位置
  • 数据库数据的位置
  • 服务的位置(确保每次服务都有开启,这样才能使用MySQL)
  • 环境变量的位置
  • 注册表

1. MySQL的卸载

卸载方式:


  • 控制面板下卸载程序

  • 通过360、电脑管家卸载

  • 通过MySQL安装包本身卸载

  • 最后要重启电脑


2. MySQL的下载、安装、配置


2.1 下载安装:

下载通过msi文件安装。

要在管理员模式下打开cmd:


  • net start mysql80 开启MySQL服务

  • net stop mysql80 关闭MySQL服务

  • 也可在服务中手动开启手动关闭

注意:后面要加版本号80

安装好后登录uroot用户:


  • mysql -uroot -p
  • 再输入密码进入mysql
  • quit、exit指令为退出mysql
  • 如果有多个版本的MySQL,访问时得注意端口号
    • mysql -uroot -P 3306 -p
    • 3306为你安装MySQL时进程的端口号
  • 访问本机或者其他地址的MySQL
    • mysql -uroot -P 3306 -h localhost (访问本地的MySQL)



2.2 配置


  • 配置环境变量
    • 在path路径下配置
    • 路径为MySQL安装路径下bin文件的位置

3. MySQL的基础使用


3.1 基本使用指令

show databases; #展示现在所有的数据库
create databases dbtest1; #创建一个数据库
use dbtest1; #使用这个数据库进行操作。(以下操作在这个数据库中进行)* create table students(id int,name varchar[15]); #——创建一个表(关系模式)show tables; #在这个数据库下显示所有的表select * from students #在这个student表中筛选信息,*代表全部的意思。(正则表达式)insert into students values(1001,'Tom');insert into students values(1002,'Jeff');#往表里插入信息(用这个语句插入中文字符串会报错)insert into students values(1002,'汤姆'); #报错,但是在8.0版本中是可以的!因为以前版本的CHARSET = latin1 (latin中没有汉字中文编码,mysql最初是在瑞典被创建的,所以采用Latin码)show create table students; #战士创建表时的相关信息show create database dbtest1; #展示创建数据库时的相关信息
show variables like 'character_%'; #展示此版本下所使用的字符集
show variables like 'collation_%'; #展示字符集的比较规则
drop database dbtest1; #把数据库删除
alter database dbtest1 charset utf8; #修改修改数据库的字符编码为utf8

修改字符集通过MySQL数据目录下的my.ini文件配置修改(5.7以前(包括5.7)版本才需要)


3.2 MySQL图形化管理工具


  • MySQL Workbench
  • Navicat Premunim (已安装)
  • SQLyog (已安装)
  • dbeaver(利于做大数据的操作)

三、初识SQL语言


1. SQL的分类

SQL:数据查询语言

/*
DDL:数据定义语言。
CREATE\ALTER\DROP\RENAME\TRUNCATEDML数据操作语言。(使用频率最高)
INSERT\DELETE\UPDATE\SELECT
增 删 改 查DCL:数据控制语言。
COMMIT\ROLLBACK\SAVEPOINT\GRANT\REVOKE
COMMIT\ROLLBACK(与事物相关的操作,单独取出称为TCL:事物控制语言)因为查询语句使用的非常频繁,所以很多人把查询语句单拎出来一类:DQL(数据查询语言)学习技巧:大处着手、小处着手。
*/

2. SQL语言的规则与规范


2.1 基本规则


  • 可以写在一行或者多行,可读性,各子句分行写,必要时使用缩进。
  • 每条命令以 ; 或 \g 或 \G 结束
  • 关键字不能被缩写也不能分行
  • 关于标点符号
    • 必须保证所有的()、单引号、双引号是成对结束的。
    • 必须使用英文状态下的半角输入方式。
    • 字符串型和日期时间类型的数据可以使用单引号 (’ ') 表示
    • 列的表名,尽量使用双引号 (" "),而且不建议省略as

2.2 SQL大小写规范


  • MySQL在windows环境下是大小写不敏感的

    • windows操作系统本身不区分大小写
  • MySQL在Linux环境下是大小写敏感的

    • 数据库名、表名、表的别名、变量名是严格区分大小写的。
    • 关键字、函数名、列名(或字段名)、列的别名(字段的别名)是忽略大小写的。
  • 推荐采用统一的书写规范

    • 数据库名、表名、表别名、字段名、字段别名等都小写
    • SQL关键字、函数名、绑定变量等都大写

2.3 注释

#单行注释 (MySQL注释独有的方式)
-- 单行注释(--后空格)
/*
多行注释
*/

2.4 命名规则


  • pass to do

2.5 数据导入指令


  • 在命令客户端登录mysql,使用source指令导入

mysql> source d:\mysqldb.sql
#source + 数据库的绝对路径

  • 直接基于图形化管理界面导入数据库,Navicat直接拉文件进去。
    SQLyog中选择 “工具“ —— ”执行sql脚本“ —— 选中xxx.sql即可。

3. 基本的SELECT语句

SELECT 1; #没有任何子句**
SELECT 9/2; #没有任何子句**
SELECT 1+1 FROM DUAL; #dual是一个伪表**

3.1 SELECT … FROM …

这个就相当于投影π

SELECT 字段1,字段2,... FROM 表名; #字段就是属性名
SELECT * FROM 表名; # *代表所有的字段,把所有的属性列显示出来。选择语句会返回给我们一个结果集。

3.2 列的别名

SELECT employee_id emp_id,last_name AS lname,department_id FROM employees;
#表中字段名原本为employee_id,查询时加一个空格或者AS后面跟上另外一个名字(我们自己取的),查询返回结果集时,字段名就是我们定义的名字。但这并不会本质上改变我们表的字段名。
#as:全称为alias(别名)(可以省略不写、默认存在)
#列的别名同样也可以用一对双引号引起来。避免别名有空格而产生歧义性。

3.3 去除重复行

去除冗余的信息,获取不重复的数据

SELECT DISTINCT depatment_id FROM employees; #去除重复的department_id信息
SELECT DISTINCT depatment_id,salary FROM employees;
#给 department_id,salary 两个字段整体去重!
SELECT salary,DISTINCT depatment_id FROM employees
#错误写法!!先选了所有的salary再去重id,得到的结果集合表的记录条数不一致!

3.4 空值参与运算

**空值:null **

#空值null不等同于0、''、'null',null是一个未知的。
SELECT employee_id, salary "月工资",salary * (1 + commission_pct) * 12 "年工资" FROM employees;SELECT employee_id, salary "月工资",salary * (1 + IFNULL(commission_pct,0)) * 12 "年工资" FROM employees;#表示的意思就是,判断commission_pct是否为null,若为null则用0代替。

空值参与运算,结果一定为null
解决方法:引入IFNULL(,)


3.5 着重号

` 这就是着重号(英文输入下1左边的按键)
也就是你所用的字段名、表名与关键字或者保留字冲突(重名),就必须要用``引起来。


3.6 查询常数

SELECT '尚硅谷',employee_id,last_name FROM employees;
#前面的常数'尚硅谷'将会作为一个单独的字段出现在所查询到的结果集里面的每一行。

4. 显示表结构

使用DESCRIBE或DESC命令,表示表结构。

DESCRIBE employees;
or
DESC employees;
#显示了表中字段的详细信息。

5. 过滤数据

只筛选出满足某些条件的数据
相当于SIGMA选择,遵循先选择后投影的原则

SELECT *
FROM employees
#过滤条件,只选择出部门号为90的
WHERE department_id = 90;#WHERE要声明在FROM结构后面。SELECT *
FROM employees
#过滤条件,只选择出名字为'King'的
WHERE last_name = 'King';#SQL 是在windows下是不区分大小写的。



四、运算符


1. 算数运算符


1.1 四则运算

**+ - * /(div) **

SELECT 100, 100 + 0, 100 - 0, 100 + 50, 100 + 50 -30, 100 + 35.5, 100 - 35.5;
#结果就是一个表,属性列为这些运算的值,同时只有一个元组,内容也为这些运算值。#在SQL中,+没有连接作用,就表示加法运算。此时会将字符串转换为数值(隐式转换)
SELECT 100 * '1' FROM DUAL;
#结果:属性名为 100 + '1',元组值为101。#此时将'a'看做0处理。
SELECT 100 * 'a' FROM DUAL;#此时结果为null
SELECT 100 * null FROM DUAL;#100 div 0 结果为null

在SQL中,除法默认的就是浮点数。比如100/2 结果就为 50.000000


1.2 取模运算

%(mod)

#取模运算的结果符号取决于被模数的符号。
SELECT 12 % 3, 12 % 5, 12 MOD -5, -12 % 5, -12 % -5
FROM employees;#练习:查询员工id为偶数的员工信息
SELECT employee_id, last_name, salary
FROM employees
WHERE employee_id % 2 = 0;



2. 比较运算符

比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL。

比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。


字母符号中文名称用途语句范例
=等于运算符判断两个值、字符串或表达式是否相等SELECT C FROM TABLE WHERE A = B;
<&#61;>安全等于运算符安全地判断两个值、字符串或表达式是否相等&#xff08;注意NULL &#xff09;SELECT C FROM TABLE WHERE A <&#61;> B;
<>或者!&#61;不等于运算符判断两个值、字符串或表达式是否不相等SELECT C FROM TABLE WHERE A <> B;
SELECT C FROM TABLE WHERE A !&#61; B;
<小于运算符判断前面的值、字符串或表达式是否小于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A ;
<&#61;小于等于运算符判断前面的值、字符串或表达式是否小于等于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A <&#61; B;
>大与运算符判断前面的值、字符串或表达式是否大于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A > B;
>&#61;大于等于运算符判断前面的值、字符串或表达式是否大于等于后面的值、字符串或表达式SELECT C FROM TABLE WHERE A >&#61; B;

2.1 &#61;

SELECT 1 &#61; 2, 1 !&#61; 2, 1 &#61; &#39;1&#39;, 1 &#61; &#39;a&#39;, 0 &#61; &#39;a&#39; FROM employees;
#结果 0 1 1 0 1
#字符串存在隐式转换。如果转换数值不成功&#xff0c;则看做0。 SELECT &#39;a&#39; &#61; &#39;a&#39;, &#39;ab&#39; &#61; &#39;ab&#39;, &#39;a&#39; &#61; &#39;b&#39; FROM employees;
#结果 1 1 0
#两边都是字符串的话&#xff0c;则按照ANSI的比较规则进行比较。SELECT 1 &#61; NULL, NULL &#61; NULL FROM employees;
#结果 NULL NULL
#只要有NULL参与判断&#xff0c;结果一定为NULL。SELECT last_name, salary, commission_pct
FROM employess
WHERE commission_pct &#61; NULL;
#此时有NULL参与运算&#xff0c;不会有任何结果。

2.2 <&#61;>

SELECT 1 &#61; NULL, NULL &#61; NULL FROM employees;
#结果 0 1
#安全等于&#xff1a;若两个比较值&#xff0c;只有一个为NULL那么结果为NULL&#xff0c;如果两个为NULL那么结果为1。#练习&#xff0c;查询表中commission_pic属性值NULL的元组
SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pic <&#61;> NULL;

2.3 非符号比较运算符

在这里插入图片描述


  • IS NULL / IS NOT NULL / ISNULL( )

#练习1 查询表中commission_pic属性值为NULL的元组
SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pic IS NULL;
#或以下这种写法
SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pic ISNULL(commission_pct);#练习2 查询表中commission_pic属性值不为NULL的元组
SELECT last_name, salary, commission_pct
FROM employees
WHERE commission_pic IS NOT NULL;
#或
SELECT last_name, salary, commission_pct
FROM employees
WHERE NOT commission_pic <&#61;> NULL;

注意:运算表达书是有值的&#xff0c;只有当值为1时才输出&#xff0c;有的有NULL参与运算可能直接使运算结果为NULL从而不显示数据。


  • LEAST( )从多个属性 / 值 中&#xff0c;值的比较&#xff0c;返回较小的那个。
  • GREATEST( )从多个属性 / 值 中&#xff0c;值的比较&#xff0c;返回较大的那个。

SELECT LEAST(&#39;g&#39;,&#39;b&#39;,&#39;c&#39;,&#39;d&#39;), GREATEST(&#39;g&#39;,&#39;b&#39;,&#39;c&#39;,&#39;d&#39;);
SELECT LEAST(last_name,first_name), LEAST(LENGTH(last_name),LENGTH(first_name)) FROM employees;

  • BETWEEN…AND… &#xff08;包括边界值&#xff09;

#查询工资在6000到8000之间的数据
SELECT last_name, salary, commission_pct
FROM employees
WHERE salary BETWEEN 6000 AND 8000;
#运用逻辑操作符等价&#xff1a;
SELECT last_name, salary, commission_pct
FROM employees
WHERE salary >&#61; 6000 AND salary <&#61; 8000;#查询工资不在6000 到 8000 之间
SELECT last_name, salary, commission_pct
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000;
#运用逻辑操作符等价&#xff1a;
SELECT last_name, salary, commission_pct
FROM employees
WHERE salary >&#61; 6000 AND salary <&#61; 8000;

  • IN (set) / NOT IN (set) &#xff1a;离散型数据查找&#xff0c;查找一个集合里面的数据

#查找部门id为 10,20,30部门的员工信息。
SELECT last_name,salary,department_id
FROM employees
WHERE department_id IN (10,20,30);#以下这种写法是错误的&#xff0c;10,20,30本身非0&#xff0c;作或运算就为真&#xff0c;所以压根就没有选出数据。
SELECT last_name,salary,department_id
FROM employees
#WHERE department_id &#61; 10 OR 20 OR 30; 错误
WHERE department_id &#61; 10 OR department_id &#61; 20 OR department_id &#61; 30;#查询工资不是6000,7000,8000的员工信息。
SELECT last_name,salary,department_id
FROM employees
WHERE salary NOT IN (6000,7000,8000);

  • LIKE&#xff1a;模糊匹配查询&#xff08;正则表达式&#xff09;

#练习1&#xff1a;查询last_name中包含字符&#39;a&#39;的员工信息。
SELECT last_name
FRoM employees
WHERE last_name LIKE &#39;%a%&#39;;
# % 代表不确定个数的字符&#xff08;0, 1或者多个&#xff09;#练习2&#xff1a;查询last_name中以&#39;a&#39;开头的员工信息。
SELECT last_name
FRoM employees
WHERE last_name LIKE &#39;a%&#39;;#练习3&#xff1a;查询last_name中包含字符&#39;a&#39;且包含字符&#39;e&#39;的员工信息。
#写法1&#xff1a;
SELECT last_name
FRoM employees
WHERE last_name LIKE &#39;%a%&#39; AND last_name LIKE &#39;%e%&#39;;
#写法2&#xff1a;
SELECT last_name
FRoM employees
WHERE last_name LIKE &#39;%a%e%&#39; OR last_name LIKE &#39;%e%a%&#39;;##练习4&#xff1a;查询last_name中第二个字符为&#39;a&#39;的员工信息。
SELECT last_name
FRoM employees
WHERE last_name LIKE &#39;_a%&#39;;
#下划线代表一个不确定的字符。#练习4&#xff1a;第二个字符为&#39;_&#39;且第3个字符是&#39;a&#39;的员工信息。
SELECT last_name
FRoM employees
WHERE last_name LIKE &#39;_\_a%&#39;;#练习5(了解即可)&#xff1a;第二个字符为&#39;_&#39;且第3个字符是&#39;a&#39;的员工信息。
SELECT last_name
FRoM employees
WHERE last_name LIKE &#39;_$_a%&#39; ESCAPE &#39;$&#39;;
#使用ESCAPE让美元符号$变成转移符号。

  • REGEXP / RLIKE &#xff1a;正则表达式

REGEXP运算符在进行匹配时&#xff0c;常用的有下面几种通配符&#xff1a;

(1)&#39;^&#39;匹配以该字符后面的字符开头的字符串。
(2)&#39;$&#39;匹配以该字符前面的字符结尾的字符串。
(3)&#39;.&#39;匹配任何一个单字符。
(4)"[...]"匹配在方括号内的任何字符。例如&#xff1a;"[abc]"匹配"a"或"b"或"c"。为了命名字符的范围&#xff0c;使用一个&#39;-&#39;。"[a-z]"匹配任何字母&#xff0c;而"[0-9]"匹配任何数字。
(5)&#39;*&#39;匹配零个或多个在它前面的字符。例如&#xff0c;"x*"匹配任何数量的&#39;x&#39;字符&#xff0c;"[0-9]*"匹配任何数量的数字&#xff0c;而"*"匹配任何数量的任何字符。

SELECT &#39;atguigu&#39; REGEXP &#39;gu.gu&#39;
FROM exployees;
#找出&#39;atguigu&#39;这个字符中有没有&#39;gu....gu&#39;这个字符&#xff0c;...表示中间无论有多少字符。



3.逻辑运算符


运算符作 用示例
NOT 或 !逻辑非SELECT NOT A
AND 或 &&逻辑与SELECT A AND B
SELECT A && B
OR 或 ||逻辑或SELECT A OR B
SELECT A || B
XOR逻辑异或SELECT A XOR B

推荐阅读
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • 本文深入解析了通过JDBC实现ActiveMQ消息持久化的机制。JDBC能够将消息可靠地存储在多种关系型数据库中,如MySQL、SQL Server、Oracle和DB2等。采用JDBC持久化方式时,数据库会自动生成三个关键表:`activemq_msgs`、`activemq_lock`和`activemq_ACKS`,分别用于存储消息数据、锁定信息和确认状态。这种机制不仅提高了消息的可靠性,还增强了系统的可扩展性和容错能力。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • PHPCMS全站迁移时URL地址的更新与替换策略 ... [详细]
  • Oracle字符集详解:图表解析与中文乱码解决方案
    本文详细解析了 Oracle 数据库中的字符集机制,通过图表展示了不同字符集之间的转换过程,并针对中文乱码问题提供了有效的解决方案。文章深入探讨了字符集配置、数据迁移和兼容性问题,为数据库管理员和开发人员提供了实用的参考和指导。 ... [详细]
  • 如何有效防御网站中的SQL注入攻击
    本期文章将深入探讨网站如何有效防御SQL注入攻击。我们将从技术层面详细解析防范措施,并结合实际案例进行阐述,旨在帮助读者全面了解并掌握有效的防护策略。希望本文能为您的网络安全提供有益参考。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文深入探讨了如何选择适合业务需求的MySQL存储引擎,详细解析了不同存储引擎的特点、适用场景及其在数据存储和管理中的优势。通过对比InnoDB、MyISAM等主流引擎,为读者提供了全面的技术指导和专业建议,帮助开发者在实际应用中做出明智的选择。 ... [详细]
author-avatar
mobiledu2502862777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有