96SEO 2026-02-20 05:48 14
1、更新软件源在确保ubuntu系统能正常上网的情况下执行以下命令

/etc/mysql/mysql.conf.d/mysqld.cnf
values(hehe,w,18,杭州指针信息技术有限公司);
1、计算机的资源有限不可能把数据全部存储在内存中且内存掉电后数据会丢失为了能让程序在关机重启后继续使用必须把数据保存到磁盘的文件中。
2、随着程序的功能越来越复杂、数据量越来越大从文件中读写数据需要大量的重复性操作从文件中读取出指定的数据需要复杂的逻辑。
3、不同的程序它的访问文件的操作不同就意味着读写文件的代码无法复用。
5、使用数据库程序员不需要自己管理数据而是通过数据库提供的接口进行读写操作至于数据在文件中是如何保存、查找与程序员无关。
关系型数据库是指采用了关系模型来组织数据的数据库其以行和列的形式存储数据以便于用户理解关系型数据库这一系列的行和列被称为表一组表组成了数据库。
用户通过查询来检索数据库中的数据而查询是一个用于限定数据库中某些区域的执行代码。
关系模型可以简单理解为二维表格模型而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
非关系型数据库严格上不止一种数据库应该是一种数据结构化存储方法的集合可以是文档或者键值对等。
NoSQL泛指非关系型的数据库NoSQL最常见的解释是“non-relational”
SQL”也被很多人接受。
NoSQL仅仅是一个概念泛指非关系型的数据库区别于关系数据库。
NoSQL是一项全新的数据库革命性运动其拥护者们提倡运用非关系型的数据存储相对于铺天盖地的关系型数据库运用这一概念无疑是一种全新的思维的注入。
SQL是结构化查询语言的缩写是数据库的标准委员会用来访问和操作数据库的统一语言所有的数据库都支持SQL语言也就是我们只需要学习SQL语言就可以操作所有的关系型数据库。
虽然ANSI组织定义了统一的SQL语言标准但不同的数据库厂商对SQL的支持程度不同有的还添加了新的语法如果只使用标准的SQL语句理论上可以操作所有的数据库然后把每种数据库特有的SQL语法称为SQL的方言。
支持多种类型大致可以分为三类数值、日期/时间和字符串(字符)类型。
2、这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL
3、关键字INT是INTEGER的同义词关键字DEC是DECIMAL的同义词。
类型byte范围有符号无符号最大值TINYINT1-128,127255SMALLINT2-327683276765535MEDIUMINT3-8388608838860716777215INT4-214748364821474836474294967295BIGINT8-9,223372036854775808922337203685477580718446744073709551615FLOAT4(-3.402823466E38-1.175494351E-38)
(1.175494351E-383.402823466351E38)1.175494
E38DOUBLE8(-1.7976931348623157E308-2.225073858507
1、表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
2、每个时间类型有一个有效值范围和一个零值当指定不合法的MySQL不能表示的值时使用零值。
类型byte范围格式用途DATE31000-01-01/9999-12-31YYYY-MM-DD日期值TIME3-838:59:59/838:59:59HH:MM:SS时间值或持续时间YEAR11901/2155YYYY年份值DATETIME81000-01-01
hh:mm:ss混合日期和时间值TIMESTAMP41970-01-01
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。
该节描述了这些类型如何工作以及如何在查询中使用这些类型。
类型byte用途CHAR0-255定长字符串VARCHAR0-65535变长字符串TINYBLOB0-255不超过
个字符的二进制字符串TINYTEXT0-255短文本字符串BLOB0-65535二进制形式的长文本数据TEXT0-65535长文本数据MEDIUMTEXT0-16777215中等长度文本数据MEDIUMBLOB0-1677215二进制形式的中等长度文本数据LONGBLOB0-4294967295二进制形式的极大文本数据LONGTEXT0-4294967295极大文本数据
类型类似但它们保存和检索的方式不同。
它们的最大长度和是否尾部空格被保留等方面也不同。
在存储或检索过程中不进行大小写转换。
VARCHAR不同的是它们包含二进制字符串而不要非二进制字符串。
也就是说它们包含字节字符串而不是字符字符串。
这说明它们没有字符集并且排序和比较基于列值字节的数值值。
修改列如果表中已有数据新的字段如果能兼容之前的数据则修改成功否则修改失败
总结1、把表结构设计完善后再添加数据。
2、尽量不要修改旧表的结构而设计一张新的表让他们建立联系。
注意在设计表时某些字段为设置一些约束条件如果插入的数据不满足这些条件(非空、唯一)则插入失败。
注意如果不写where则整张表全部删除所以为了安全MySQL数据库默认不支持该操作
一个数据库会被若干个客户端同时访问数据库的底层为了保护数据的完整性修改数据时会加锁保护。
理论上每个客户端修改一次数据都要加一次锁但频繁的加锁会降低数据库的运行速度所以数据设计一种确认修改的动作。
客户端对数据库进行若干次修改了数据库不会立即修改硬盘上的数据而是把修改过的数据暂存客户端直接客户端执行了确认修改的命令此时数据库才会加锁然后把修改后的数据更新到硬盘上。
在数据库一个用户插入一条数据时只有它自己能查询到其它用户并不能立即看到只有执行了commit语句后其它用户才能看到。
当用户对数据进行修改后如果发现操作错误可以使用rollback语句返回到上一次commit;
使用rollback取消操作时会取消所有的操作直接回到上次commit的时刻但这样可以会浪费一部分有意义的操作可以在一个的阶段设置在保存点让rollback返回到指定的位置。
values(二师兄,123123,13388666688,1);
values(二师兄,123123,13388666687,2);
values(二师兄,123123,13388666686,3);
values(二师兄,123123,13388666685,4);
values(二师兄,123123,13388666684,5);
所有MySQL数据库的C语言接口就声明在mysql/mysql.h头文件中但前提是安装libmysqlclient-dev库。
功能分配或初始化与mysql_real_connect()相适应的MYSQL对象。
mysql1、参数是NULL指针该函数将分配、初始化、并返回新对象2、参数是MYSQL对象地址将初始化对象并返回对象的地址。
返回值成功初始化的MYSQL*句柄。
如果无足够内存以分配新的对象返回NULL。
错误在内存不足的情况下返回NULL。
注意如果mysql_init分配了新的对象当调用mysql_close来关闭连接时将释放该对象。
mysql已有MYSQL结构的地址调用mysql_real_connect()之前必须调用mysql_init()来初始化MYSQL结构。
host主机名或IP地址。
如果“host”是NULL或字符串localhost连接将被视为与本地主机的连接。
如果操作系统支持套接字Unix或命名管道Windows将使用它们而不是TCP/IP连接到服务器。
port如果不是0其值将用作TCP/IP连接的端口号host参数决定了连接的类型。
unix_socket该字符串描述了应使用的套接字或命名管道注意“host”参数决定了连接的类型。
client_flag值通常为0但是也能将其设置为下述标志的组合。
返回值如果连接成功返回MYSQL*连接句柄,与第1个参数的值相同。
如果连接失败返回NULL。
*mysql_character_set_name(MYSQL
功能将查询的全部结果读取到客户端分配1个MYSQL_RES结构并将结果置于该结构中。
返回值结果为NULL语句执行出现错误或执行的是没有结果的SQL语句如INSERT语句。
通过检查mysql_error()是否返回非空字符串mysql_errno()是否返回非0值或mysql_field_count()是否返回0可以检查是否出现了错误。
功能返回上次UPDATE更改的行数上次DELETE删除的行数或上次INSERT语句插入的行数。
对于UPDATE、DELETE或INSERT语句可在mysql_query()后立刻调用。
对于SELECT语句mysql_affected_rows()的工作方式与mysql_num_rows()类似。
返回值大于0的整数表明受影响或检索的行数。
0表示UPDATE语句未更新记录在查询中没有与WHERE匹配的行或未执行查询。
-1表示查询返回错误或者对于SELECT查询在调用mysql_store_result()之前调用了mysql_affected_rows。
由于mysql_affected_rows返回无符号值通过比较返回值和(my_ulonglong)-1或等效的(my_ulonglong)~0检查是否为“-1”。
mode:为真启用autocommit模式为假禁止autocommit模式。
用的库是libmysqlclient-dev所以编译时需要添加参数
可以排除重复数据如果多个字段查询那么所有查询的字段值都一样才算重复
语句查询时可以对表中的数值字段直接进行算术运算如果想改变运算的优先级可以使用小括号。
在where字句中可以使用关系运算符和逻辑运算符只有条件为真的数据才会显示
判断一个范围使用判断运算符加逻辑运算符也能达到同样的效果[a,b]。
is
判断字段值是不是为空在数据表中空值是一种状态而不是一个特定的值。
select
模糊查询Linux系统命令行中使用的通配符字符型字段使用才合适select
注意判断字段值是不为空在数据表中空值是一种状态而不是一个特定的值。
注意MySQL数据库在排序时把空值当作最小值Oracle数据库把空值当作了最大值。
使用SELECT查询时如果结果集数据量很大比如几万行数据放在一个页面显示的话数据量太大不如分页显示每次显示100条。
要实现分页功能实际上就是从结果集中显示第1~100条记录作为第1页显示第101~200条记录作为第2页以此类推。
因此分页实际上就是从结果集中“截取”出第M~N条记录。
当需要的数据分布在不同的表中就需要多张表连接查询无条件的连接会产生笛卡乐积有海量的无效数据需要配合where子句进行连接。
全连接、外连接MySQL不支持该语法可以使用union关键字把左外连接、右外连接联合在一起实现外连接、全连接。
左外连接
在多表查询时由于表名在访问重名字段时语句过长可以给表名取一个简单的别名也可以解决一张表自连接的查询。
把一个查询结果作为另一个查询语句的基础这种查询叫子查询或嵌套查询。
普通函数一条记录就会产生一个结果而组函数一次查询只产生一个结果这两种函数不能混用
注意MySQL中有丰富的数据处理函数但程序员也可以先把查询到的结果转换成相关的数据类型再使用编程语言中的数据处理函数。
class_id,count(id),max(id),min(id)
class_name,teacher.name,count(id)
class.class_id,min(class_name),min(teacher.name),count(student.id)
class_name,teacher.name,count(id)
class.class_id,class_name,teacher.name,count(id)
class_name,teacher.name,class.class_id
查询出班级人数在3人以上的班级显示班级名班级ID班级人数并且对按班级人数进行排序。
student.class_id,max(class_name),count(name)
student.class_idclass.class_idgroup
例如顾客表(姓名、编号、地址、……)其中地址列还可以细分为国家、省、市、区等所以按照第一次范围地址更改为地区编号(例如身份证号的前6位)。
From,2NF在第一范式的基础上更进一层目标是确保表中的每列都和主键相关
如果一个关系满足第一范式并且除了主键以外的其它列都依赖于该主键则满足第二范式.
例如订单表(订单编号、产品编号、产品数量、定购日期、产品价格、……)订单编号为主键产品价格和主键列没有直接的关系即产品价格列不依赖于主键列应删除然后连接产品表根据产品编号获得该项数据。
From,3NF在第二范式的基础上更进一层目标是确保每列都和主键列直接相关而不是间接相关
如果一个关系满足第二范式并且除了主键以外的其他列都只能依赖主键列列与列之间不存在相互依赖关系则满足第三范式。
例如订单表(订单编号定购日期顾客编号顾客姓名……)初看该表没有问题满足第二范式每列都和主键列订单编号相关再细看你会发现顾客姓名和顾客编号相关为了满足第三范式应去掉顾客姓名列放入客户表中。
总结字段不可再分字段跟主键都有关系字段与主键有强直接关系遵循这三范式能让数据库中的表更灵活、强大、节约存储空间但并不能保证查询速度最快所以在实际开发过程中会突破三范式牺牲存储空间以达到速度最优。
约束是对数据和表的限制可以提高表中数据的准确性和可靠性一般在创建表、修改表时使用在已有数据的情况下修改表的约束不一定能成功。
默认值给字段设置完默认值后当插入数据不提供该字段的数据值数据库自动填充默认值
检查设置一个条件判断当数据不满足条件时插入失败但MySQL数据库不支持
一张表子表的值引用自另一张表父表被引用的字段必须具备唯一性子表中的外键字段的值必须来自父表或者是null值。
这种字段可以不用手动插入值由系统提供默认的序列值但必须满足以下要求
索引是一种提高查询速度的技术如果把数据库看作字典那么索引就是字典的目录。
注意MySQL数据库会自动对表进行优化主键、非空且唯一的字段会自动优化成索引。
2、但索引的本质其实也是硬盘地址的表里面存储着字段数据所在的硬盘位置创建索引需要额外的存储空间是典型用空间换取时间。
3、而且使用索引虽然提高了查询速度但会降低插入、更新、删除数据的速度。
4、MySQL数据库会自动为主键创建索引所有在MySQL数据库中不建议主动创建索引。
视图是一张虚拟的表它本身并不包含数据而是作为一个select语句保存在数据库中。
如果设计表时遵循了三大范式我们的数据库中会有很多张表(零散)查询数据时会有很多连接查询SQL语句就需要写的非常长非常麻烦。
2、使用视图的用户只能访问被允许访问的数据对数据库权限的管理只能精细到某张表但使用视图可以管理某些列的某些行可以大大提高数据的安全性。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback