当前位置: 首页 > news >正文

竞价单页 网站郑州网站优化培训

竞价单页 网站,郑州网站优化培训,服务器的做网站空间,宁波海曙网站开发公司电话一、子查询基础 1.1 子查询概述 子查询是指在一个查询语句内部嵌套另一个查询语句的过程。子查询可以嵌套在 SELECT、FROM、WHERE 或 HAVING 子句中#xff0c;用于从数据库中检索数据或执行其他操作。子查询通常返回一个结果集#xff0c;该结果集可以被包含它的主查询使用…一、子查询基础 1.1 子查询概述 子查询是指在一个查询语句内部嵌套另一个查询语句的过程。子查询可以嵌套在 SELECT、FROM、WHERE 或 HAVING 子句中用于从数据库中检索数据或执行其他操作。子查询通常返回一个结果集该结果集可以被包含它的主查询使用。 以下是子查询的一般概述 位置 子查询可以出现在 SQL 语句的不同部分包括 SELECT 子句、FROM 子句、WHERE 子句、HAVING 子句等。返回结果 子查询通常返回一个结果集这个结果集可以是一个值、一列值、一行值或者多行多列值。用途 子查询的主要用途之一是在一个查询中使用另一个查询的结果。这样可以在较复杂的查询中进行逻辑判断、过滤数据或进行计算。类型 子查询可以分为单行子查询和多行子查询。单行子查询返回一行一列的结果而多行子查询返回多行多列的结果。比较运算符 子查询通常使用比较运算符如 、、、IN、EXISTS 等将其结果与主查询中的数据进行比较。性能考虑 使用过多的子查询可能会影响查询的性能因此在编写查询时要注意优化。 以下是一个简单的例子演示了子查询的基本用法 SELECT employee_name, salary FROM employees WHERE salary (SELECT AVG(salary) FROM employees);上述查询中子查询 (SELECT AVG(salary) FROM employees) 返回员工薪水的平均值然后主查询选择薪水高于平均值的员工信息。 1.2 单行子查询 单行子查询是一种子查询其结果集只包含单一的行和单一的列。这种类型的子查询通常用于比较操作符如 、、、、的右侧以便与主查询中的某个值进行比较。单行子查询的结果可以是一个具体的值也可以是一个表达式。 下面是一个简单的例子演示了单行子查询的用法 SELECT employee_name, salary FROM employees WHERE salary (SELECT AVG(salary) FROM employees);在上述例子中(SELECT AVG(salary) FROM employees) 是一个单行子查询它返回员工薪水的平均值。主查询选择了那些薪水高于平均值的员工信息。 单行子查询还可以在其他场景中使用例如在选择默认值或计算中。以下是一个示例 SELECT product_name, price,(SELECT MAX(price) FROM products) AS max_price FROM products;在这个例子中单行子查询 (SELECT MAX(price) FROM products) 返回产品价格的最大值然后主查询选择了产品名称、价格和最大价格。 1.3 多行子查询 多行子查询是一种子查询其结果集可以包含多行和多列。这种类型的子查询通常用于比较操作符如 IN、ANY、ALL 等以便与主查询中的一组值进行比较。 以下是一个使用多行子查询的简单示例 SELECT customer_name FROM customers WHERE customer_id IN (SELECT customer_id FROM orders WHERE order_date 2023-01-01);在这个例子中多行子查询 (SELECT customer_id FROM orders WHERE order_date 2023-01-01) 返回了在指定日期之后下过订单的所有客户的ID。主查询选择了那些在子查询结果集中的客户信息。 多行子查询还可以用于 EXISTS 子句例如 SELECT employee_name FROM employees e WHERE EXISTS (SELECT 1 FROM projects p WHERE p.manager_id e.employee_id);在这个例子中多行子查询 (SELECT 1 FROM projects p WHERE p.manager_id e.employee_id) 返回了有项目的员工信息。主查询选择了那些在子查询结果集中存在项目的员工信息。 1.4 子查询应用场景 子查询在 SQL 查询中有多种应用场景它们能够增加查询的灵活性和表达能力。以下是一些常见的子查询应用场景 筛选数据 使用子查询在 WHERE 子句中进行条件筛选以过滤出满足特定条件的数据。例如选择薪水高于平均值的员工或者选择在指定日期之后下过订单的客户。SELECT employee_name, salary FROM employees WHERE salary (SELECT AVG(salary) FROM employees);嵌套查询 在 SELECT 子句中使用子查询将子查询的结果作为主查询的一部分进行计算或显示。例如计算每个员工的平均销售额并显示在查询结果中。SELECT employee_id, employee_name,(SELECT AVG(sales) FROM sales WHERE sales.employee_id employees.employee_id) AS avg_sales FROM employees;IN 子句 使用子查询在 WHERE 子句中进行多个值的比较例如选择属于某个特定部门的员工。SELECT employee_name FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE department_name Sales);EXISTS 子句 判断子查询是否返回结果常用于判断某个条件是否满足。例如选择有项目的员工信息。SELECT employee_name FROM employees e WHERE EXISTS (SELECT 1 FROM projects p WHERE p.manager_id e.employee_id);子查询与连接 结合子查询和连接操作以便在复杂的数据关系中检索所需的信息。SELECT customer_name FROM customers WHERE customer_id IN (SELECT customer_id FROM orders WHERE order_date 2023-01-01);这些是一些常见的子查询应用场景但并不局限于此。子查询在 SQL 查询语言中的应用非常灵活可以根据具体的业务需求和数据结构进行定制。 二、多表查询与子查询的结合运用 2.1 使用子查询进行条件过滤 使用子查询进行条件过滤是一种常见的 SQL 操作它允许你在 WHERE 子句中使用子查询来过滤主查询的结果。以下是一个例子演示如何使用子查询进行条件过滤 假设有两个表orders 存储订单信息包括 order_id 和 order_date以及 products 存储产品信息包括 product_id 和 product_name。 现在我们想要获取在某个特定日期之后下过订单的产品信息可以使用子查询来实现 SELECT product_id, product_name FROM products WHERE product_id IN (SELECT product_idFROM ordersWHERE order_date 2023-01-01 );在这个例子中子查询 (SELECT product_id FROM orders WHERE order_date 2023-01-01) 返回了在指定日期之后下过订单的产品的 product_id 列表。主查询则使用这个列表来过滤 products 表中的产品信息最终得到满足条件的产品列表。 Tip这只是一个简单的例子实际应用中可以根据具体业务需求进行更复杂的条件过滤。使用子查询进行条件过滤的好处在于它提供了一种灵活的方式来根据其他查询的结果动态地确定主查询的条件。 2.2 子查询与连接的结合运用 子查询与连接的结合可以帮助在复杂的数据关系中检索所需的信息。以下是一个例子演示如何使用子查询和连接进行结合运用 假设有两个表employees 存储员工信息包括 employee_id 和 employee_name以及 projects 存储项目信息包括 project_id 和 manager_id表示项目经理的员工ID。 现在我们想要获取每个项目的项目名称以及项目经理的姓名。我们可以使用连接操作和子查询来实现 SELECT project_name, employee_name AS manager_name FROM projects JOIN employees ON projects.manager_id employees.employee_id;在这个例子中projects.manager_id 与 employees.employee_id 进行连接以获取项目经理的姓名。这是一个基本的连接操作。 然而如果你想要获取每个项目的项目名称以及项目经理的姓名和其它信息可以使用子查询来获取项目经理的信息 SELECT project_name,(SELECT employee_name FROM employees WHERE employee_id projects.manager_id) AS manager_name,(SELECT department_name FROM employees WHERE employee_id projects.manager_id) AS manager_department FROM projects;在这个例子中子查询 (SELECT employee_name FROM employees WHERE employee_id projects.manager_id) 用于获取项目经理的姓名另一个子查询 (SELECT department_name FROM employees WHERE employee_id projects.manager_id) 用于获取项目经理所在的部门。主查询选择了项目名称以及子查询中获取的项目经理相关信息。 这种结合运用可以根据具体需求更灵活地检索所需的信息并充分发挥 SQL 查询的表达能力。 2.3 子查询在多表查询中的嵌套应用 在多表查询中子查询的嵌套应用可以帮助解决更为复杂的数据检索问题。下面是一个例子演示了在多表查询中使用子查询的嵌套应用 假设有三个表employees 存储员工信息包括 employee_id 和 employee_nameprojects 存储项目信息包括 project_id 和 project_nameassignments 存储员工分配到项目的信息包括 employee_id 和 project_id。 现在我们想要获取每个项目的项目名称以及参与该项目的员工数量。我们可以使用嵌套子查询来实现 SELECT project_id, project_name,(SELECT COUNT(*) FROM assignments WHERE assignments.project_id projects.project_id) AS employee_count FROM projects;在这个例子中主查询从 projects 表中选择项目的 project_id 和 project_name然后嵌套的子查询 (SELECT COUNT(*) FROM assignments WHERE assignments.project_id projects.project_id) 用于计算每个项目参与的员工数量。子查询中的条件将项目表与分配表关联起来以获取每个项目的员工数量。 这样的嵌套子查询可以应用于多表查询的各种情况例如计算聚合函数、获取相关信息等。需要注意的是过度使用嵌套子查询可能会影响查询性能因此在实际应用中需要根据具体情况进行优化。 这只是一个简单的示例实际应用中可能涉及更多的表和更复杂的关系但通过嵌套子查询你可以更灵活地处理多表查询的需求。 三、性能优化与最佳实践 3.1 索引的重要性 索引在数据库中起着重要的作用它是一种数据结构用于提高数据库查询的性能。以下是索引的一些重要性 加速数据检索 索引可以帮助数据库引擎快速定位表中的特定行从而加速数据检索的速度。通过使用索引数据库可以直接跳转到存储了目标数据的位置而不必扫描整个表。优化查询性能 对于经常执行的查询语句通过在相关列上创建索引可以显著减少查询的执行时间。这对于大型数据库和复杂查询尤为重要。排序和聚合操作 索引不仅加速数据检索还有助于提高排序和聚合操作的性能。对于需要对结果进行排序或进行聚合计算的查询使用索引可以减少排序和扫描的开销。加速连接操作 在进行连接操作时如果连接的列上存在索引可以减少连接的复杂度提高连接操作的速度。这对于关联多个表的查询非常重要。唯一性约束 索引可以用于实现唯一性约束确保表中某一列的数值是唯一的。这对于防止重复数据的插入非常有用。加速数据修改操作 尽管索引在数据检索上有很大优势但在执行插入、更新和删除等修改操作时可能会稍微降低性能。然而合理使用索引可以最小化这种影响。支持全文搜索 对于包含全文搜索的数据库全文索引可以加速搜索操作提高搜索的效率。减少磁盘 I/O 操作 索引可以减少需要读取的数据量从而减少磁盘 I/O 操作提高数据库系统的整体性能。 虽然索引对性能有很多好处但过度创建索引也可能导致一些问题比如增加写操作的开销、占用更多的磁盘空间等。因此在设计数据库时需要根据具体的查询需求和操作模式谨慎选择创建索引的列。综合考虑查询的频率、表的大小和数据修改的频率等因素可以找到适合应用场景的索引策略。 3.2 适当使用 JOIN 语句 使用 JOIN 语句是在 SQL 查询中关联多个表的一种重要方式。适当使用 JOIN 语句可以帮助你在单个查询中检索到需要的关联数据提高查询的效率和灵活性。以下是一些建议以确保 JOIN 语句的适当使用 理解不同类型的 JOIN SQL 支持不同类型的 JOIN包括 INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL OUTER JOIN。了解这些不同类型的 JOIN 如何工作以及它们之间的区别是非常重要的。根据实际需求选择适当的 JOIN 类型。选择合适的关联条件 在使用 JOIN 时确保选择合适的关联条件以确保关联的行是相关的。关联条件通常是基于两个表之间的共同列进行的如员工表的员工ID与项目表的经理ID。SELECT employee_name, project_name FROM employees INNER JOIN projects ON employees.employee_id projects.manager_id;小心使用多重 JOIN 当在一个查询中使用多个 JOIN 时确保了解数据关系以避免生成过于复杂和难以理解的查询。可以使用表别名来使查询更易读。SELECT e.employee_name, p.project_name, d.department_name FROM employees e INNER JOIN projects p ON e.employee_id p.manager_id INNER JOIN departments d ON e.department_id d.department_id;使用索引加速 JOIN 确保关联列上存在索引以加速 JOIN 操作。索引可以帮助数据库引擎更快地定位和匹配关联的行。考虑性能影响 JOIN 操作在性能上可能有一些开销特别是在关联大型表时。在设计查询时考虑到数据量、索引和表的结构以最小化性能影响。了解 NULL 值的处理 在使用 LEFT JOIN 或 RIGHT JOIN 时要考虑到可能出现的 NULL 值。了解 NULL 值的处理方式并确保查询的结果符合预期。SELECT customers.customer_name, orders.order_id FROM customers LEFT JOIN orders ON customers.customer_id orders.customer_id;适当使用 JOIN 语句可以使查询更为灵活并帮助你获取相关联的数据。但要谨慎使用确保查询的可读性和性能。根据实际需求选择合适的 JOIN 类型并注意关联条件的准确性。 3.3 编写高效的子查询 编写高效的子查询对于优化查询性能非常重要。以下是一些建议可以帮助你编写高效的子查询 选择适当的子查询类型 子查询可以是标量子查询返回单一值、行子查询返回一行多列、列子查询返回单列多行或表子查询返回多行多列。选择适当的子查询类型以满足你的查询需求。避免在循环中使用子查询 在循环或迭代中执行子查询可能导致性能问题因为每次迭代都会执行一次子查询。尽量通过连接操作或其他手段来避免在循环中执行子查询。使用 EXISTS 或 NOT EXISTS 替代 IN 或 NOT IN 在某些情况下使用 EXISTS 或 NOT EXISTS 可能比使用 IN 或 NOT IN 更有效尤其是在子查询返回大量数据时。-- 使用 EXISTS SELECT employee_name FROM employees e WHERE EXISTS (SELECT 1 FROM projects p WHERE p.manager_id e.employee_id);-- 使用 IN SELECT employee_name FROM employees WHERE employee_id IN (SELECT manager_id FROM projects);优化子查询的 WHERE 子句 在子查询中的 WHERE 子句中使用索引和适当的条件以提高子查询的性能。使用连接操作代替子查询 在某些情况下使用连接操作可能比子查询更有效。尤其是在子查询中涉及多个表时连接操作通常更为灵活和高效。限制子查询返回的结果集 在子查询中使用合适的条件限制返回的结果集大小。这可以减小主查询的处理负担。考虑使用临时表 在某些情况下创建临时表并将结果存储在其中然后在主查询中引用这个临时表可能会提高性能。这对于大型数据集或复杂的计算可能特别有帮助。使用索引加速子查询 确保子查询涉及的列上有适当的索引以提高查询性能。避免嵌套过深 避免嵌套过多的子查询因为这可能会导致复杂度增加并降低可读性。在可能的情况下考虑使用连接或其他手段替代嵌套子查询。利用数据库性能工具进行调优 使用数据库管理系统提供的性能分析工具了解查询执行计划以便识别和优化潜在的性能瓶颈。 通过综合考虑这些因素你可以更有效地编写子查询提高查询性能并优化数据库操作。 四、示例与演练 4.1 实际 SQL 查询示例 当涉及到实际 SQL 查询时具体的查询语句会依赖于数据库的结构以及你想要检索或操作的数据。以下是一些实际的 SQL 查询示例每个例子都展示了一个不同的查询场景 基本查询 从一个表中选择所有列和所有行。SELECT * FROM employees;条件筛选 选择符合特定条件的行。SELECT product_name, price FROM products WHERE price 100;多表连接 使用 INNER JOIN 连接两个表检索相关联的数据。SELECT customers.customer_id, customers.customer_name, orders.order_id FROM customers INNER JOIN orders ON customers.customer_id orders.customer_id;聚合函数 使用聚合函数计算统计信息。SELECT department_id, AVG(salary) AS avg_salary, COUNT(*) AS employee_count FROM employees GROUP BY department_id;子查询 使用子查询选择符合条件的子集。SELECT employee_name, salary FROM employees WHERE salary (SELECT AVG(salary) FROM employees);排序和限制 按特定列的顺序排序结果并限制返回的行数。SELECT product_name, price FROM products ORDER BY price DESC LIMIT 10;更新操作 更新表中的数据。UPDATE employees SET salary salary * 1.1 WHERE department_id 2;插入操作 插入新的数据行。INSERT INTO products (product_name, price) VALUES (New Product, 50.00);删除操作 删除符合条件的数据行。DELETE FROM orders WHERE order_date 2023-01-01;这些只是一些基本的例子实际查询语句会根据你的具体需求和数据库结构而变化。在编写实际的 SQL 查询时确保使用适当的索引、优化查询语句并通过数据库管理系统提供的工具分析查询性能。 4.2 案例分析与解析 以下是一个简单的案例分析与解析假设我们有一个包含员工和项目信息的数据库。 案例 我们想要找出每个部门的平均工资并列出工资高于部门平均工资的员工信息。 解析 为了实现这个目标我们可以使用聚合函数、JOIN 操作和子查询。以下是一个可能的解决方案 -- 步骤1: 计算每个部门的平均工资 WITH DepartmentAverage AS (SELECT department_id, AVG(salary) AS avg_salaryFROM employeesGROUP BY department_id )-- 步骤2: 列出工资高于部门平均工资的员工信息 SELECT e.employee_id, e.employee_name, e.salary, e.department_id FROM employees e JOIN DepartmentAverage d ON e.department_id d.department_id WHERE e.salary d.avg_salary;在这个解决方案中我们使用了 Common Table Expression (CTE) 来计算每个部门的平均工资。然后我们使用 JOIN 操作将员工表与计算得到的平均工资表关联起来。最后通过 WHERE 子句过滤出工资高于部门平均工资的员工信息。 这个案例分析涉及到多个 SQL 概念和技术 聚合函数 使用 AVG() 计算平均工资。WITH 语句 使用 CTE 存储中间结果提高可读性和可维护性。JOIN 操作 通过连接两个表来关联员工和部门平均工资信息。子查询 在 WHERE 子句中使用子查询来过滤结果。 五、常见问题与解决方案 5.1 多表查询常见错误 在进行多表查询时有一些常见的错误可能会影响查询的正确性或性能。以下是一些多表查询中常见的错误以及如何避免它们 忽略连接条件 忘记在 JOIN 操作中指定正确的连接条件导致不相关的行被错误地关联在一起。 -- 错误的连接缺少连接条件 SELECT * FROM employees JOIN departments ON employees.department_id departments.department_id;解决方法 确保在 JOIN 操作中指定正确的连接条件以避免不相关的行被关联。 忽略 NULL 值 在使用 LEFT JOIN 或 RIGHT JOIN 时忽略了 NULL 值可能导致结果不符合预期。 -- 错误的 LEFT JOIN没有处理 NULL 值 SELECT customers.customer_id, orders.order_id FROM customers LEFT JOIN orders ON customers.customer_id orders.customer_id;解决方法 在使用 LEFT JOIN 或 RIGHT JOIN 时要考虑 NULL 值并根据需要进行适当的处理。 使用过多的连接 连接太多的表可能会导致查询复杂度增加和性能下降。 -- 过多的连接 SELECT * FROM employees JOIN departments ON employees.department_id departments.department_id JOIN projects ON employees.project_id projects.project_id;解决方法 仅连接必要的表确保查询足够简单且易于理解。 未使用索引 在连接列上缺少索引可能导致连接操作的性能下降。 -- 缺少索引的连接列 SELECT customers.customer_name, orders.order_id FROM customers JOIN orders ON customers.customer_id orders.customer_id;解决方法 在连接的列上建立适当的索引以提高连接操作的性能。 未使用 WHERE 子句进行筛选 没有使用 WHERE 子句限制结果集可能导致返回大量的数据影响性能。 -- 未使用 WHERE 子句进行筛选 SELECT * FROM employees JOIN departments ON employees.department_id departments.department_id;解决方法 使用 WHERE 子句筛选结果集只检索所需的数据。 未考虑性能 在设计查询时未考虑查询的性能可能导致较慢的查询速度。 -- 性能不佳的查询 SELECT * FROM large_table1 JOIN large_table2 ON large_table1.column_id large_table2.column_id;解决方法 考虑查询的性能使用合适的索引和优化技术确保查询效率较高。 在编写多表查询时仔细检查连接条件、处理 NULL 值、限制结果集大小并考虑性能是避免常见错误的关键。同时使用数据库系统提供的性能分析工具来检查查询执行计划帮助发现潜在的性能问题。 5.2 子查询常见问题 在使用子查询时有一些常见问题可能会影响查询的正确性或性能。以下是一些关于子查询的常见问题及其解决方法 返回多个值的子查询 如果子查询返回了多个值但主查询期望得到单一值会导致错误。 -- 错误的子查询返回多个值 SELECT employee_name FROM employees WHERE salary (SELECT AVG(salary) FROM employees);解决方法 确保子查询返回的结果是单一值。可以使用聚合函数、LIMIT 1 或其他方法确保子查询的结果是单一值。 处理 NULL 值的子查询 子查询中的 NULL 值可能影响主查询的结果。例如使用 IN 或 NOT IN 子查询时注意 NULL 的处理。 -- 错误的子查询可能返回 NULL SELECT customer_name FROM customers WHERE customer_id IN (SELECT customer_id FROM orders);解决方法 使用 EXISTS 或 NOT EXISTS 子查询来处理 NULL 值或者通过合适的条件确保子查询不返回 NULL。 性能问题 子查询可能导致性能问题特别是在主查询返回大量数据时。 -- 性能不佳的子查询 SELECT employee_name FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE location New York);解决方法 考虑是否可以使用连接操作或其他更有效的方法替代子查询或者确保子查询在关联的列上有索引。 嵌套子查询的可读性问题 嵌套过深的子查询可能会降低查询的可读性使其难以理解。 -- 嵌套过深的子查询 SELECT employee_name FROM employees WHERE department_id IN (SELECT department_id FROM departments WHERE location_id IN (SELECT location_id FROM locations WHERE country_id US));解决方法 考虑使用连接操作或其他手段替代嵌套子查询或者通过使用 WITH 子句创建临时表来提高可读性。 过度使用子查询 使用太多的子查询可能会导致查询复杂度增加降低性能和可读性。 解决方法 评估是否可以通过连接操作、临时表或其他手段简化查询减少子查询的数量。 在使用子查询时要特别注意处理多个值、NULL 值、性能问题以及可读性问题。仔细考虑查询需求选择适当的方法并使用数据库管理系统提供的性能工具来进行调优。 六、总结 SQL查询中使用JOIN语句关联多表搭配子查询可提高灵活性。适当选择JOIN类型、索引、连接条件避免多表连接过度能优化性能。在子查询中需处理多个值、NULL值提升可读性防止嵌套过深。常规错误包括遗漏连接条件、处理NULL不当、性能问题、嵌套深度过大、过度使用子查询。通过评估需求、优化查询、使用工具进行性能分析可确保SQL查询高效、准确、可维护。
http://www.hkea.cn/news/14385724/

相关文章:

  • 广州南沙建设网站网页设计代码大全添加音乐
  • 网站建设定制设计长沙工商注册网上登记
  • 免费可以做旅游海报 的网站上海网站建设门户
  • 官方网站开发招标须知荆州做网站公司
  • 计算机本科论文 网站建设专业济南网站建设价格
  • 域名备案用的网站建设方案江苏建设服务信息网站
  • 营销网站建设的公司有哪些创业网站开发
  • 哈密北京网站建设东莞网页建设网站
  • 律师推广网站排名uc浏览器手机网页版
  • 高端网站建设 骆产品信息发布网站
  • 中国建设银行官方网站下载购物网站优惠券怎么做
  • 网站设计公司列表wordpress 搭建教育
  • 关于字体设计的网站宝塔面板加wordpress建站
  • 做熊猫tv网站的目的wordpress如何导入模板数据
  • 网站正常打开速度慢仿糗事百科网站源码dede二次开发分享+评论+互动
  • 网站设计旅行社新闻内容中国营销
  • 先做网站后备案吗网站开发最新流程
  • 网站菜单样式怎么根据已有网站做新网站
  • 广告图片网站源码产品软文范例大全
  • 网站开发与维护岗位说明书天津seo培训班在哪里
  • 手机免费建网站软件怎么查询网站备案服务商是哪个
  • 微网站模板制作建材做哪些网站
  • 网站怎么做支付宝接口石家庄网站建设平台
  • 九曲网站建设东莞有什么好玩的地方
  • 中国建设银行信用卡中心网站邮件服务商
  • 万网域名绑定到其它网站建网站一般要多少钱
  • 济南网站制作专业如何用手机制作网页链接
  • 网站开发需多少钱小说网站怎么做防采集
  • 编程学习入门网站wordpress apache伪静态
  • 即墨城乡建设局网站网站空间可以自己买吗