web开发

1.vscode

2.html

HTML(Hypertext Markup Language)是一种用于创建网页的标记语言。它使用标签(tag)来描述网页的结构和内容,并通过标签之间的嵌套和属性来定义网页的各种元素和特性。

HTML的基本语法规则如下:

使用尖括号(< >)来表示标签,如<tagname>。
标签通常是成对出现的,有开始标签和结束标签,结束标签在标签名前加上斜杠(/),如</tagname>。
标签可以包含属性,用于提供元素的额外信息。属性通常是以键值对的形式出现,如attribute="value"。
标签可以嵌套,一个标签可以包含其他标签。
以下是HTML中常见的一些标签和属性:

<html>:表示HTML文档的根元素。
<head>:定义文档的头部区域,通常包含文档的元数据和链接引用。
<title>:定义文档的标题,显示在浏览器的标题栏或标签页上。
<body>:定义文档的主体内容。
<h1> - <h6>:定义标题,从h1到h6依次表示不同级别的标题。
<p>:定义段落。
<a>:定义超链接,用于跳转到其他页面或位置。
<img>:定义图像,用于显示图片。
<ul>:定义无序列表。
<ol>:定义有序列表。
<li>:定义列表项。
<table>:定义表格。
<tr>:定义表格的行。
<td>:定义表格的单元格。
除了以上标签,HTML还有其他的各种标签和属性,用于定义不同的元素和样式。通过使用不同的标签和属性的组合,可以创建出丰富多样的网页内容和布局。

3.JS

JavaScript(简称JS)是一种用于编写网页交互和动态效果的脚本语言。它是一种解释型语言,可以直接在网页中嵌入并在浏览器中执行。

以下是JavaScript的基本语法规则:

变量声明:使用var、let或const关键字声明变量。例如:

		
javascript

		
var x = 5;
let y = 10;
const z = 15;

    
	
数据类型:JavaScript中的数据类型包括数字(Number)、字符串(String)、布尔值(Boolean)、对象(Object)、数组(Array)、函数(Function)等。例如:

		
javascript

		
var age = 25; // 数字
var name = "John"; // 字符串
var isStudent = true; // 布尔值
var person = {name: "John", age: 25}; // 对象
var numbers = [1, 2, 3, 4, 5]; // 数组
function sayHello() { // 函数
    console.log("Hello!");
}

    
	
运算符:JavaScript支持常见的算术运算符(+、-、*、/、%)、比较运算符(==、!=、<、>、<=、>=)、逻辑运算符(&&、||、!)等。例如:

		
javascript

		
var x = 5;
var y = 10;
var z = x + y; // 15
var isGreater = x > y; // false
var isTrue = x === 5 && y !== 10; // true

    
	
条件语句:使用if...else语句根据条件执行不同的代码块。例如:

		
javascript

		
var x = 5;
if (x > 10) {
    console.log("x is greater than 10");
} else {
    console.log("x is less than or equal to 10");
}

    
	
循环语句:使用for、while或do...while语句来重复执行代码块。例如:

		
javascript

		
for (var i = 0; i < 5; i++) {
    console.log(i);
}

var i = 0;
while (i < 5) {
    console.log(i);
    i++;
}

var i = 0;
do {
    console.log(i);
    i++;
} while (i < 5);

    
	
函数:使用function关键字定义函数,可以接受参数并返回值。例如:

		
javascript

		
function addNumbers(a, b) {
    return a + b;
}

var result = addNumbers(5, 10); // 15

    
	
事件处理:通过给HTML元素添加事件监听器,可以在特定事件发生时执行相应的JavaScript代码。例如:

		
html

		
<button onclick="sayHello()">Click me</button>
<script>
    function sayHello() {
        console.log("Hello!");
    }
</script>

    
	

4.Vue

Vue.js 是一种流行的前端 JavaScript 框架,用于构建用户界面和单页应用程序。它采用了基于组件的开发模式,通过提供响应式的数据绑定和组件化的架构,使得构建交互式的Web界面更加简单和高效。

以下是 Vue.js 的一些基本语法:

插值:使用双花括号({{ }})将数据绑定到模板中。例如:

		
html

		
<div>{{ message }}</div>

    
	
指令:Vue.js 的指令是以 v- 前缀的特殊属性,用于对元素进行动态绑定和操作。例如:

v-bind:用于动态绑定属性。例如:<img v-bind:src="imageUrl">
v-on:用于绑定事件监听器。例如:<button v-on:click="handleClick">Click me</button>
v-if 和 v-else:用于条件渲染。例如:
		
html

		
<div v-if="showMessage">Hello!</div>
<div v-else>Goodbye!</div>

    
	
计算属性:使用 computed 关键字定义计算属性,它会根据响应式数据的变化自动更新计算结果。例如:

		
javascript

		
computed: {
    fullName() {
        return this.firstName + ' ' + this.lastName;
    }
}

    
	
监听属性变化:使用 watch 关键字监听属性的变化,并在变化时执行相应的操作。例如:

		
javascript

		
watch: {
    firstName(newValue, oldValue) {
        console.log('First name changed from ' + oldValue + ' to ' + newValue);
    }
}

    
	
条件渲染:使用 v-if、v-else-if 和 v-else 来根据条件选择性地渲染元素。例如:

		
html

		
<div v-if="showMessage">Hello!</div>
<div v-else-if="showWarning">Warning!</div>
<div v-else>Error!</div>

    
	
列表渲染:使用 v-for 来遍历数组或对象,并渲染相应的元素。例如:

		
html

		
<ul>
    <li v-for="item in items">{{ item }}</li>
</ul>

    
	
事件处理:使用 v-on 指令来绑定事件监听器,可以直接调用方法或传递参数。例如:

		
html

		
<button v-on:click="handleClick">Click me</button>
<button v-on:click="handleClick('param')">Click me</button>

5.Ajax

AJAX(Asynchronous JavaScript and XML)是一种用于在网页中进行异步数据交互的技术。它通过在不刷新整个页面的情况下,通过 JavaScript 发送 HTTP 请求并接收服务器返回的数据,实现动态更新页面内容。

使用 AJAX 可以实现以下几个步骤:

创建 XMLHttpRequest 对象:使用 XMLHttpRequest 对象创建一个新的 AJAX 请求。例如:

		
javascript

		
var xhr = new XMLHttpRequest();

    
	
设置请求参数:使用 open() 方法设置请求的 HTTP 方法、URL 和是否异步。例如:

		
javascript

		
xhr.open('GET', 'https://api.example.com/data', true);

    
	
设置回调函数:使用 onreadystatechange 属性设置一个回调函数,用于处理服务器响应的数据。例如:

		
javascript

		
xhr.onreadystatechange = function() {
    if (xhr.readyState === 4 && xhr.status === 200) {
        // 处理服务器返回的数据
        var response = xhr.responseText;
        console.log(response);
    }
};

    
	
发送请求:使用 send() 方法发送 AJAX 请求。对于 GET 请求,可以将参数拼接在 URL 后面,对于 POST 请求,可以将参数作为 send() 方法的参数传递。例如:

		
javascript

		
xhr.send();

    
	
通过以上步骤,可以发送 AJAX 请求并接收服务器返回的数据。在回调函数中可以对返回的数据进行处理,例如更新页面内容或执行其他操作。

除了原生的 XMLHttpRequest,现代的 JavaScript 框架如 Vue.js 和 jQuery 也提供了更简化和封装的 AJAX 方法。例如,使用 jQuery 的 AJAX 方法可以更方便地发送请求和处理响应。例如:

		
javascript

		
$.ajax({
    url: 'https://api.example.com/data',
    method: 'GET',
    success: function(response) {
        // 处理服务器返回的数据
        console.log(response);
    },
    error: function(xhr, status, error) {
        // 处理请求错误
        console.log(error);
    }
});

6.Vue

Vue.js 提供了许多特殊的用法和功能,让开发者能够更加灵活和高效地构建交互式的Web应用。以下是一些 Vue.js 的特殊用法:

Vue 组件:Vue.js 是一个基于组件的框架,允许开发者将页面拆分为多个可复用的组件。每个组件都有自己的模板、脚本和样式,使得代码更加清晰和易于维护。组件可以嵌套使用,形成一个组件树。

Vue 指令:Vue.js 提供了许多内置指令,如 v-if、v-show、v-for、v-bind、v-on 等,用于在模板中实现数据绑定、条件渲染、列表渲染、事件处理等功能。

Vue 生命周期钩子:Vue.js 提供了一系列的生命周期钩子函数,如 beforeCreate、created、mounted、updated、destroyed 等,允许开发者在组件的不同阶段执行特定的操作,实现更精细的控制。

Vue 计算属性:Vue.js 的计算属性允许开发者根据响应式数据计算出一个新的属性,并在模板中使用。计算属性具有缓存机制,只有在依赖的响应式数据发生变化时才会重新计算。

Vue 监听属性变化:Vue.js 提供了 watch 选项,允许开发者监听特定属性的变化,并在变化时执行相应的操作。可以用于监听数据的变化并做出反应。

Vue 插槽:Vue.js 的插槽功能允许开发者在组件模板中插入可变内容,使得组件更具灵活性和可复用性。插槽可以用于传递内容、组件或函数。

Vue 动态组件:Vue.js 的动态组件功能允许开发者根据条件动态地渲染不同的组件。可以根据数据的变化选择性地渲染不同的组件。

Vue 过渡和动画:Vue.js 提供了过渡和动画的功能,可以在元素插入、更新或移除时添加动画效果。通过 transition 和 transition-group 组件可以实现简单的过渡效果。

7.Element

Element UI 是一个基于 Vue.js 的桌面端组件库,提供了丰富的 UI 组件和交互效果,可以帮助开发者快速构建漂亮且功能丰富的 Web 应用程序。

以下是一些 Element UI 的常用用法:

安装和导入:使用 npm 安装 Element UI,然后在项目中导入需要使用的组件。例如:

		
bash

		
npm install element-ui

    
	
		
javascript

		
import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

    
	
使用组件:在 Vue 组件中使用 Element UI 的组件,可以通过标签名或组件对象的方式引入。例如:

		
html

		
<template>
  <el-button type="primary">Primary Button</el-button>
</template>

    
	
		
javascript

		
import { Button } from 'element-ui';

export default {
  components: {
    'el-button': Button
  }
}

    
	
表单和输入框:Element UI 提供了丰富的表单和输入框组件,如 el-form、el-input、el-select、el-checkbox 等。可以通过这些组件快速构建表单页面和实现表单验证。

布局和容器:Element UI 提供了一系列的布局和容器组件,如 el-row、el-col、el-container、el-header、el-aside、el-main 等。可以使用这些组件构建响应式布局。

消息提示和弹窗:Element UI 提供了消息提示和弹窗组件,如 el-message、el-notification、el-dialog 等。可以使用这些组件实现消息提示、确认对话框、模态框等功能。

数据展示和表格:Element UI 提供了数据展示和表格组件,如 el-table、el-pagination、el-tag、el-badge 等。可以使用这些组件展示数据、排序、分页等。

图标和样式:Element UI 集成了一些常用的图标和样式,可以快速美化页面。可以使用 el-icon 和 el-button 的 icon 属性添加图标,也可以使用内置的样式类。

国际化:Element UI 支持国际化,可以根据需要切换不同的语言。可以使用 el-i18n 组件进行国际化的配置和切换。

8.maven

Maven 是一个用于构建和管理 Java 项目的工具。它提供了一种标准的项目结构、依赖管理和构建过程,使得开发者能够更方便地管理项目的依赖、构建和部署。

以下是一些 Maven 的常用功能和概念:

项目结构:Maven 使用一种标准的项目结构,将源代码、资源文件和配置文件分别放置在不同的目录中。例如,Java 源代码放在 src/main/java 目录下,资源文件放在 src/main/resources 目录下。

POM 文件:POM(Project Object Model)是 Maven 的核心概念,它是一个 XML 文件,描述了项目的元数据、依赖关系、构建配置等信息。POM 文件位于项目的根目录下,名为 pom.xml。

依赖管理:Maven 使用 POM 文件来管理项目的依赖关系。开发者可以在 POM 文件中声明项目依赖的库和版本号,Maven 会根据这些声明自动下载并管理依赖。

构建生命周期:Maven 定义了一套标准的构建生命周期,包括 Clean、Compile、Test、Package、Install 和 Deploy 等阶段。开发者可以通过执行 Maven 命令来执行相应的构建阶段。

插件:Maven 提供了许多插件,用于扩展和定制构建过程。插件可以执行各种任务,如编译代码、运行测试、打包应用程序等。

仓库:Maven 使用仓库来存储项目的依赖和构建产物。它分为本地仓库和远程仓库。本地仓库位于本地开发机上,用于存储项目依赖的库。远程仓库位于网络上,用于共享和下载依赖。

构建命令:Maven 使用命令行工具来执行构建任务。常用的命令包括 clean、compile、test、package、install、deploy 等。

9.http与https

HTTP(Hypertext Transfer Protocol)和 HTTPS(Hypertext Transfer Protocol Secure)是用于在客户端和服务器之间传输数据的协议。

HTTP 是一种不安全的协议,数据在传输过程中是明文的,容易被窃听和篡改。它使用 TCP(Transmission Control Protocol)作为传输协议,默认使用端口号80。HTTP 协议简单、高效,适用于对数据安全性要求不高的场景。

HTTPS 是在 HTTP 的基础上加入了 SSL/TLS(Secure Sockets Layer/Transport Layer Security)加密协议,通过对数据进行加密和认证,保证数据在传输过程中的安全性。HTTPS 使用 TCP 作为传输协议,默认使用端口号443。HTTPS 的加密和认证机制可以防止数据被窃听、篡改和伪造,保护用户的隐私和数据安全。

以下是 HTTP 和 HTTPS 的一些区别:

安全性:HTTP 不加密数据,容易被窃听和篡改;HTTPS 使用 SSL/TLS 加密数据,保证数据在传输过程中的安全性。

证书:HTTPS 使用数字证书来验证服务器的身份,确保通信的安全性和可信性。证书由可信的第三方机构(CA,Certificate Authority)签发,用于证明服务器的身份和公钥。

性能:HTTPS 由于要进行加密和解密操作,相对于 HTTP 来说会增加一定的计算和网络开销,导致性能稍微下降。

默认端口号:HTTP 使用默认端口号80,而 HTTPS 使用默认端口号443。

使用场景:HTTP 适用于对数据安全性要求不高的场景,如一般的网页浏览;HTTPS 适用于对数据安全性要求较高的场景,如登录、付款等涉及敏感信息的操作。

10.postman的使用

Postman 是一款常用的 API 开发和测试工具,它提供了一个用户友好的界面,使得开发者可以方便地创建、发送和调试 HTTP 请求,并查看服务器的响应结果。

以下是 Postman 的一些常用功能和使用步骤:

安装和启动:下载并安装 Postman 应用程序,然后启动它。

创建请求:在 Postman 的界面中,点击左上角的 "+" 按钮,选择请求类型(如 GET、POST、PUT、DELETE 等),并输入请求的 URL。

设置请求参数:可以通过查询参数、请求头、请求体等方式设置请求参数。在 Postman 的界面中,可以在 Params、Headers、Body 等选项卡中设置相应的参数。

发送请求:点击界面右侧的 "Send" 按钮,发送请求到服务器。

查看响应结果:在请求发送后,Postman 会显示服务器的响应结果,包括响应状态码、响应头和响应体等信息。

保存和管理请求:在 Postman 中,可以将请求保存到集合中,方便后续的查找和管理。可以创建不同的集合,并将相关的请求归类保存。

使用环境变量:Postman 支持使用环境变量来管理不同环境下的请求参数。可以在 Postman 的界面中创建和设置环境变量,并在请求中引用它们。

导出和导入请求:Postman 支持将请求导出为文件,也可以从文件中导入请求。这样可以方便地分享和备份请求。

运行测试脚本:Postman 允许开发者编写测试脚本,用于验证服务器的响应结果。可以在请求中添加测试脚本,并运行它们。

使用集成工具:Postman 还提供了一些集成工具和功能,如 Mock Server(模拟服务器)、API 文档生成等,可以进一步辅助开发和测试工作。

11.@RequestBody

@RequestBody 是 Spring 框架中用于接收 HTTP 请求体中数据的注解,通常用于处理 POST 请求中的 JSON 数据或表单数据。

在 Spring MVC 中,@RequestBody 注解可以用于方法参数上,表示将 HTTP 请求体中的数据绑定到该参数上。当客户端发送 POST 请求时,请求体中的数据可以是 JSON 格式的字符串、表单数据等,使用 @RequestBody 注解可以将这些数据映射到方法参数中。

以下是 @RequestBody 的使用示例:

		
java

		
@RestController
public class MyController {

    @PostMapping("/api/data")
    public ResponseEntity<String> processData(@RequestBody MyData myData) {
        // 处理接收到的数据
        // myData 参数会自动映射为请求体中的 JSON 数据

        return ResponseEntity.ok("Data received successfully");
    }
}

    
	
在上面的示例中,@RequestBody 注解用于将请求体中的 JSON 数据映射到 MyData 类型的参数 myData 中。Spring MVC 会自动将请求体中的 JSON 数据转换为 MyData 对象,并传递给 processData 方法进行处理。

需要注意的是,为了能够正确地将请求体中的数据映射到 Java 对象上,需要确保请求体中的数据格式与 Java 对象的属性名和类型匹配。通常可以使用 Jackson 等 JSON 序列化库来实现数据的转换和绑定。

 注解

在 Spring MVC 中,常用的接口注解包括:

@Controller:用于标识一个类为控制器(Controller),处理用户请求并返回响应结果。通常在 Spring MVC 中使用该注解来定义控制器类。

@RestController:是 @Controller 的一个变体,结合了 @Controller 和 @ResponseBody 注解的功能。它用于标识一个类为 REST 风格的控制器,处理用户请求并返回 RESTful 风格的响应结果。

@RequestMapping:用于映射请求路径和处理方法之间的关系。可以用于类级别和方法级别,用于标识控制器类或处理方法对应的请求路径。

@GetMapping:是 @RequestMapping 的一个缩写注解,用于映射 GET 请求路径和处理方法之间的关系。

@PostMapping:是 @RequestMapping 的一个缩写注解,用于映射 POST 请求路径和处理方法之间的关系。

@PutMapping:是 @RequestMapping 的一个缩写注解,用于映射 PUT 请求路径和处理方法之间的关系。

@DeleteMapping:是 @RequestMapping 的一个缩写注解,用于映射 DELETE 请求路径和处理方法之间的关系。

@PathVariable:用于将 URL 中的路径参数绑定到方法参数上。可以在方法参数上使用该注解,指定路径参数的名称,Spring MVC 会自动将路径参数的值绑定到对应的方法参数上。

@RequestParam:用于将请求参数绑定到方法参数上。可以在方法参数上使用该注解,指定请求参数的名称,Spring MVC 会自动将请求参数的值绑定到对应的方法参数上。

@RequestBody:用于接收 HTTP 请求体中的数据。可以在方法参数上使用该注解,Spring MVC 会自动将请求体中的数据绑定到对应的方法参数上。

@ResponseBody:用于将方法返回的对象转换为响应体返回给客户端。可以在方法上使用该注解,Spring MVC 会自动将方法返回的对象转换为 JSON 或其他格式的响应体,并发送给客户端。

12.三层架构

在 Spring MVC 中,常用的三层架构模式是将应用程序分为表现层(Presentation Layer)、业务逻辑层(Business Layer)和数据访问层(Data Access Layer)。

表现层(Presentation Layer):表现层负责处理用户请求和响应,将用户的输入转化为业务逻辑层能够处理的数据格式,并将处理结果返回给用户。在 Spring MVC 中,表现层由控制器(Controller)和视图(View)组成。控制器负责接收用户请求,调用业务逻辑层的服务进行处理,并将处理结果传递给视图进行展示。

业务逻辑层(Business Layer):业务逻辑层负责处理应用程序的业务逻辑,包括对数据的处理、业务规则的实现等。在 Spring MVC 中,业务逻辑层通常由服务层(Service Layer)来实现,服务层负责封装业务逻辑,提供给控制器调用。

数据访问层(Data Access Layer):数据访问层负责与数据库或其他数据存储系统进行交互,进行数据的增删改查操作。在 Spring MVC 中,数据访问层通常由持久层(Persistence Layer)来实现,持久层负责封装数据访问的细节,提供给业务逻辑层调用。

这种三层架构的设计模式可以将应用程序的不同功能模块分离开来,实现模块之间的松耦合,提高代码的可维护性和可测试性。在 Spring MVC 中,可以使用 Spring 框架的依赖注入(DI)和控制反转(IOC)功能来实现不同层之间的解耦和协作。

 

具体使用 Spring MVC 的三层架构可以按照以下步骤进行:

表现层(Presentation Layer):

创建控制器(Controller)类,使用 @Controller 或 @RestController 注解标识。
在控制器类中定义处理请求的方法,使用 @RequestMapping 或其他请求映射注解标识请求路径。
在方法中处理用户请求,调用业务逻辑层的服务进行处理,并将处理结果传递给视图进行展示。
使用 @RequestParam、@PathVariable 或 @RequestBody 注解将请求参数绑定到方法参数上。
业务逻辑层(Business Layer):

创建服务层(Service Layer)接口,定义业务逻辑的方法。
创建服务层实现类,实现服务层接口,并使用 @Service 注解标识。
在服务层实现类中编写具体的业务逻辑代码,可以调用数据访问层的方法进行数据操作。
数据访问层(Data Access Layer):

创建持久层(Persistence Layer)接口,定义数据访问的方法。
创建持久层实现类,实现持久层接口,并使用 @Repository 注解标识。
在持久层实现类中使用 Spring 的 JdbcTemplate、Hibernate、MyBatis 等技术进行数据库操作。
配置文件和依赖注入:

在 Spring MVC 的配置文件中配置组件扫描,以便自动扫描和装配控制器、服务层和持久层的组件。
使用 @Autowired 或 @Resource 注解将服务层注入到控制器中,将持久层注入到服务层中。
配置数据库连接信息、事务管理等相关配置。

13.mysql

MySQL 是一种开源的关系型数据库管理系统(RDBMS),它是最流行和广泛使用的数据库之一。以下是 MySQL 的一些特点和用法:

关系型数据库:MySQL 是一种关系型数据库,数据以表格的形式组织,表格之间可以建立关系,方便进行数据的查询和管理。

多用户和多线程:MySQL 支持多用户同时访问数据库,并且可以通过多线程处理多个并发请求,提高数据库的性能和并发性。

SQL 语言支持:MySQL 支持标准的 SQL 语言,可以使用 SQL 语句进行数据的增删改查操作,以及定义数据表、索引、视图等数据库对象。

存储引擎:MySQL 提供了多种存储引擎,如 InnoDB、MyISAM 等,可以根据不同的需求选择合适的存储引擎,以优化数据库的性能和功能。

跨平台支持:MySQL 可以在多个操作系统上运行,如 Windows、Linux、macOS 等,提供了跨平台的数据库解决方案。

易用性和扩展性:MySQL 具有良好的易用性和扩展性,可以方便地安装和配置,支持大规模数据存储和高并发访问。

在使用 MySQL 时,可以通过以下步骤进行操作:

安装 MySQL:下载并安装 MySQL 数据库管理系统。

创建数据库:使用 SQL 语句创建一个新的数据库,可以使用命令行工具或可视化工具(如 MySQL Workbench)进行操作。

创建表:在数据库中创建表格,定义表格的列和数据类型,可以设置主键、外键等约束。

插入数据:使用 SQL 语句插入数据到表格中,可以一次插入多行数据。

查询数据:使用 SQL 语句查询表格中的数据,可以使用 SELECT 语句进行简单查询,也可以使用 JOIN 操作进行复杂查询。

更新和删除数据:使用 SQL 语句更新和删除表格中的数据,可以使用 UPDATE 和 DELETE 语句进行操作。

除了基本的增删改查操作,MySQL 还支持事务处理、存储过程、触发器、视图等高级功能,可以根据实际需求进行使用。

 14.mysql的 DDL与DML与DQL与DML

在 MySQL 数据库中,DDL(Data Definition Language)、DML(Data Manipulation Language)、DQL(Data Query Language)和 DCL(Data Control Language)是不同类型的 SQL 语言,用于不同的数据库操作。

DDL(数据定义语言):DDL 用于定义数据库的结构和对象,包括创建、修改和删除数据库、表、索引、视图等。常见的 DDL 命令有:

CREATE:用于创建数据库、表、索引、视图等。
ALTER:用于修改数据库、表、列、索引等的结构。
DROP:用于删除数据库、表、索引、视图等。
TRUNCATE:用于清空表中的数据。
DML(数据操作语言):DML 用于对数据库中的数据进行操作,包括插入、更新和删除数据。常见的 DML 命令有:

INSERT:用于向表中插入新的数据。
UPDATE:用于更新表中的数据。
DELETE:用于删除表中的数据。
DQL(数据查询语言):DQL 用于从数据库中查询数据,包括选择和过滤数据。常见的 DQL 命令有:

SELECT:用于选择表中的数据,并可以进行条件过滤、排序等操作。
DCL(数据控制语言):DCL 用于控制数据库的访问权限和事务处理,包括用户管理、权限控制、事务控制等。常见的 DCL 命令有:

GRANT:用于授权用户访问数据库对象。
REVOKE:用于撤销用户对数据库对象的访问权限。
COMMIT:用于提交事务。
ROLLBACK:用于回滚事务。
这些 SQL 语言可以组合使用,完成复杂的数据库操作。例如,使用 DDL 创建数据库和表结构,使用 DML 插入和更新数据,使用 DQL 查询数据,使用 DCL 控制用户权限和事务处理。

15.DQL的增删改查

DQL(数据查询语言):

查询所有数据:
		
sql

		
SELECT * FROM table_name;

    
	
条件查询:
		
sql

		
SELECT column1, column2 FROM table_name WHERE condition;

    
	
排序查询:
		
sql

		
SELECT column1, column2 FROM table_name ORDER BY column1 ASC/DESC;

    
	
聚合函数查询:
		
sql

		
SELECT COUNT(*) FROM table_name;
SELECT SUM(column) FROM table_name;
SELECT AVG(column) FROM table_name;

    
	
DML(数据操作语言):

插入数据:
		
sql

		
INSERT INTO table_name (column1, column2) VALUES (value1, value2);

    
	
更新数据:
		
sql

		
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;

    
	
删除数据:
		
sql

		
DELETE FROM table_name WHERE condition;

16.DML的增删改查

DML(Data Manipulation Language)是用于对数据库中的数据进行增删改查操作的语言。在 MySQL 中,常见的 DML 命令包括 INSERT、UPDATE、DELETE 和 SELECT。以下是 DML 的增删改查操作示例:

插入数据(INSERT):

插入一条数据:

		
sql

		
INSERT INTO table_name (column1, column2) VALUES (value1, value2);

    
	
插入多条数据:

		
sql

		
INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4), ...;

    
	
更新数据(UPDATE):

更新符合条件的数据:

		
sql

		
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;

    
	
删除数据(DELETE):

删除符合条件的数据:

		
sql

		
DELETE FROM table_name WHERE condition;

    
	
查询数据(SELECT):

查询所有数据:

		
sql

		
SELECT * FROM table_name;

    
	
查询指定列的数据:

		
sql

		
SELECT column1, column2 FROM table_name;

    
	
条件查询:

		
sql

		
SELECT column1, column2 FROM table_name WHERE condition;

    
	
排序查询:

		
sql

		
SELECT column1, column2 FROM table_name ORDER BY column1 ASC/DESC;

    
	
聚合函数查询:

		
sql

		
SELECT COUNT(*) FROM table_name;
SELECT SUM(column) FROM table_name;
SELECT AVG(column) FROM table_name;

17.DDL的增删改查

创建数据库(CREATE DATABASE):

		
sql

		
CREATE DATABASE database_name;

    
	
删除数据库(DROP DATABASE):

		
sql

		
DROP DATABASE database_name;

    
	
创建表(CREATE TABLE):

		
sql

		
CREATE TABLE table_name (
  column1 datatype,
  column2 datatype,
  ...
);

    
	
修改表(ALTER TABLE):

		
sql

		
ALTER TABLE table_name
  ADD column_name datatype;

    
	
删除表(DROP TABLE):

		
sql

		
DROP TABLE table_name;

    
	
创建索引(CREATE INDEX):

		
sql

		
CREATE INDEX index_name ON table_name (column_name);

    
	
删除索引(DROP INDEX):

		
sql

		
DROP INDEX index_name ON table_name;

18.DML的增删改查

DML(Data Manipulation Language)是用于对数据库中的数据进行增删改查操作的语言。在 MySQL 中,常见的 DML 命令包括 INSERT、UPDATE、DELETE 和 SELECT。以下是 DML 的增删改查操作示例:

插入数据(INSERT):

插入一条数据:

		
sql

		
INSERT INTO table_name (column1, column2) VALUES (value1, value2);

    
	
插入多条数据:

		
sql

		
INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4), ...;

    
	
更新数据(UPDATE):

更新符合条件的数据:

		
sql

		
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;

    
	
删除数据(DELETE):

删除符合条件的数据:

		
sql

		
DELETE FROM table_name WHERE condition;

    
	
查询数据(SELECT):

查询所有数据:

		
sql

		
SELECT * FROM table_name;

    
	
查询指定列的数据:

		
sql

		
SELECT column1, column2 FROM table_name;

    
	
条件查询:

		
sql

		
SELECT column1, column2 FROM table_name WHERE condition;

    
	
排序查询:

		
sql

		
SELECT column1, column2 FROM table_name ORDER BY column1 ASC/DESC;

    
	
聚合函数查询:

		
sql

		
SELECT COUNT(*) FROM table_name;
SELECT SUM(column) FROM table_name;
SELECT AVG(column) FROM table_name;

19.DQL的条件查询

在 MySQL 中,使用 DQL(Data Query Language)进行条件查询可以通过 WHERE 子句来指定查询条件。以下是 DQL 条件查询的示例用法:

		
sql

		
SELECT column1, column2 FROM table_name WHERE condition;

    
	
在上述语句中,column1 和 column2 是要查询的列名,table_name 是要查询的表名,condition 是要指定的查询条件。下面是一些常见的查询条件示例:

等于条件(=):
		
sql

		
SELECT * FROM table_name WHERE column1 = value;

    
	
不等于条件(<> 或 !=):
		
sql

		
SELECT * FROM table_name WHERE column1 <> value;

    
	
大于条件(>):
		
sql

		
SELECT * FROM table_name WHERE column1 > value;

    
	
小于条件(<):
		
sql

		
SELECT * FROM table_name WHERE column1 < value;

    
	
大于等于条件(>=):
		
sql

		
SELECT * FROM table_name WHERE column1 >= value;

    
	
小于等于条件(<=):
		
sql

		
SELECT * FROM table_name WHERE column1 <= value;

    
	
区间条件:
		
sql

		
SELECT * FROM table_name WHERE column1 BETWEEN value1 AND value2;

    
	
模糊匹配条件:
		
sql

		
SELECT * FROM table_name WHERE column1 LIKE 'pattern';

    
	
其中,pattern 是要匹配的模式,可以使用通配符 % 表示任意字符。

多条件组合:
		
sql

		
SELECT * FROM table_name WHERE condition1 AND condition2;
SELECT * FROM table_name WHERE condition1 OR condition2;
SELECT * FROM table_name WHERE NOT condition;

20.DQL的聚合函数

在 MySQL 中,DQL(Data Query Language)可以使用聚合函数对数据进行汇总计算。聚合函数可以对一列或多列的数据进行统计,返回计算结果。以下是一些常见的聚合函数的示例用法:

COUNT:计算行数或非 NULL 值的数量。
		
sql

		
SELECT COUNT(*) FROM table_name;  -- 计算表中的总行数
SELECT COUNT(column) FROM table_name;  -- 计算某列的非 NULL 值数量

    
	
SUM:计算数值列的总和。
		
sql

		
SELECT SUM(column) FROM table_name;  -- 计算某列的总和

    
	
AVG:计算数值列的平均值。
		
sql

		
SELECT AVG(column) FROM table_name;  -- 计算某列的平均值

    
	
MAX:找出数值列的最大值。
		
sql

		
SELECT MAX(column) FROM table_name;  -- 找出某列的最大值

    
	
MIN:找出数值列的最小值。
		
sql

		
SELECT MIN(column) FROM table_name;  -- 找出某列的最小值

    
	
这些聚合函数可以与 SELECT 语句一起使用,用于统计和汇总数据。需要注意的是,聚合函数通常会返回一个单一的结果,而不是每行的结果。另外,聚合函数还可以与其他 DQL 语句(如 WHERE、GROUP BY、HAVING 等)一起使用,以满足更复杂的查询需求。

需要根据具体的表名和列名进行替换。在使用聚合函数时,也可以使用别名来指定结果的列名,以提高结果的可读性。例如:

		
sql

		
SELECT COUNT(*) AS total_rows FROM table_name;  -- 使用别名指定结果列名

31.DQL的分组

在 MySQL 中,DQL(Data Query Language)可以使用 GROUP BY 子句对查询结果进行分组操作。通过分组,可以将具有相同值的行归为一组,并对每个组应用聚合函数进行计算。以下是使用 GROUP BY 进行分组的示例用法:

		
sql

		
SELECT column1, column2, aggregate_function(column3)
FROM table_name
GROUP BY column1, column2;

    
	
在上述语句中,column1 和 column2 是要分组的列,aggregate_function 是要应用的聚合函数,table_name 是要查询的表名。下面是一些常见的聚合函数和分组的示例:

使用 COUNT 函数统计每个分组中的行数:
		
sql

		
SELECT column1, COUNT(*)
FROM table_name
GROUP BY column1;

    
	
使用 SUM 函数计算每个分组中某列的总和:
		
sql

		
SELECT column1, SUM(column2)
FROM table_name
GROUP BY column1;

    
	
使用 AVG 函数计算每个分组中某列的平均值:
		
sql

		
SELECT column1, AVG(column2)
FROM table_name
GROUP BY column1;

    
	
使用 MAX 函数找出每个分组中某列的最大值:
		
sql

		
SELECT column1, MAX(column2)
FROM table_name
GROUP BY column1;

    
	
使用 MIN 函数找出每个分组中某列的最小值:
		
sql

		
SELECT column1, MIN(column2)
FROM table_name
GROUP BY column1;

    
	
需要根据具体的表名和列名进行替换。在分组查询中,SELECT 子句中的列必须是 GROUP BY 子句中出现的列或者是聚合函数的结果。同时,还可以使用 HAVING 子句来对分组后的结果进行过滤,类似于 WHERE 子句对原始数据进行过滤。

32.DQL的排序

在 MySQL 中,DQL(Data Query Language)可以使用 ORDER BY 子句对查询结果进行排序操作。通过 ORDER BY,可以按照指定的列或表达式对查询结果进行升序(ASC)或降序(DESC)排序。以下是使用 ORDER BY 进行排序的示例用法:

		
sql

		
SELECT column1, column2
FROM table_name
ORDER BY column1 ASC/DESC;

    
	
在上述语句中,column1 是要排序的列,column2 是要查询的列,table_name 是要查询的表名。ASC 表示升序排序,DESC 表示降序排序。可以根据需要选择排序的列,并指定升序或降序排序。

下面是一些常见的排序示例:

按照单个列进行排序:
		
sql

		
SELECT column1, column2
FROM table_name
ORDER BY column1 ASC;

    
	
按照多个列进行排序:
		
sql

		
SELECT column1, column2
FROM table_name
ORDER BY column1 ASC, column2 DESC;

    
	
使用表达式进行排序:
		
sql

		
SELECT column1, column2
FROM table_name
ORDER BY column1 + column2 DESC;

    
	
需要根据具体的表名和列名进行替换。在排序查询中,可以根据需要指定多个列和表达式进行排序,也可以使用 ASC 或 DESC 关键字来指定升序或降序排序。默认情况下,如果不指定排序方式,默认为升序排序(ASC)。

33.DQL的分页

在 MySQL 中,DQL(Data Query Language)可以使用 LIMIT 子句进行分页查询。LIMIT 子句用于限制查询结果返回的行数,并可以指定从结果集的哪一行开始返回。以下是使用 LIMIT 进行分页查询的示例用法:

		
sql

		
SELECT column1, column2
FROM table_name
LIMIT offset, count;

    
	
在上述语句中,column1 和 column2 是要查询的列,table_name 是要查询的表名,offset 是要返回的结果集的起始行数,count 是要返回的结果集的行数。

下面是一些常见的分页查询示例:

返回前 N 行数据:
		
sql

		
SELECT column1, column2
FROM table_name
LIMIT N;

    
	
返回从第 M 行开始的 N 行数据:
		
sql

		
SELECT column1, column2
FROM table_name
LIMIT M, N;

    
	
需要根据具体的表名、列名和分页参数进行替换。在分页查询中,LIMIT 子句的第一个参数指定起始行数(偏移量),第二个参数指定要返回的行数。偏移量从 0 开始,表示第一行。

34.多表查询

在 MySQL 中,可以使用 JOIN 操作进行多表查询。JOIN 操作用于将多个表根据指定的关联条件连接在一起,以获取相关联的数据。以下是使用 JOIN 进行多表查询的示例用法:

		
sql

		
SELECT t1.column1, t2.column2
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.id;

    
	
在上述语句中,table1 和 table2 是要查询的表名,t1 和 t2 是表的别名,column1 和 column2 是要查询的列名,id 是两个表之间的关联条件。通过使用 ON 子句,指定了两个表之间的关联条件。

下面是一些常见的多表查询示例:

内连接(INNER JOIN):
		
sql

		
SELECT t1.column1, t2.column2
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.id;

    
	
内连接返回两个表中满足关联条件的交集。

左连接(LEFT JOIN):
		
sql

		
SELECT t1.column1, t2.column2
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.id;

    
	
左连接返回左表中的所有行,以及满足关联条件的右表中的匹配行。如果右表中没有匹配的行,则返回 NULL 值。

右连接(RIGHT JOIN):
		
sql

		
SELECT t1.column1, t2.column2
FROM table1 t1
RIGHT JOIN table2 t2 ON t1.id = t2.id;

    
	
右连接返回右表中的所有行,以及满足关联条件的左表中的匹配行。如果左表中没有匹配的行,则返回 NULL 值。

全连接(FULL JOIN):
		
sql

		
SELECT t1.column1, t2.column2
FROM table1 t1
FULL JOIN table2 t2 ON t1.id = t2.id;

    
	
全连接返回左表和右表中的所有行,如果某个表中没有匹配的行,则返回 NULL 值。

35.Mysql的事务

在 MySQL 中,事务(Transaction)是一组数据库操作,它们被作为一个单独的工作单元进行处理。事务具有以下特性,常被称为 ACID 特性:

原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败回滚,保证了数据的一致性。
一致性(Consistency):事务在开始和结束时,数据库的状态必须保持一致,即满足所有的约束和规则。
隔离性(Isolation):事务的执行是相互隔离的,每个事务的操作不会对其他事务产生影响。
持久性(Durability):一旦事务提交成功,其结果将永久保存在数据库中,即使出现系统故障也不会丢失。
在 MySQL 中,可以使用以下语句来定义和控制事务:

开启事务:START TRANSACTION; 或 BEGIN;
提交事务:COMMIT;
回滚事务:ROLLBACK;
例如,如果要执行一组数据库操作作为一个事务,可以使用如下的代码块:

		
sql

		
START TRANSACTION;
-- 执行一系列数据库操作
-- ...
COMMIT;

    
	
在事务中,如果任何一个操作失败或者发生错误,可以使用 ROLLBACK; 回滚事务,将数据库恢复到事务开始之前的状态。

36.mysql的索引

在 MySQL 中,索引(Index)是一种数据结构,用于提高查询效率。索引可以帮助数据库快速定位和访问数据,类似于书籍的目录。MySQL 支持多种类型的索引,包括以下几种常见的索引类型:

主键索引(Primary Key Index):主键索引是唯一标识表中每一行的索引,用于保证数据的唯一性和快速查找。一个表只能有一个主键索引。

唯一索引(Unique Index):唯一索引用于保证数据的唯一性,不允许重复值。一个表可以有多个唯一索引。

普通索引(Index):普通索引也称为非唯一索引,用于提高查询的速度。一个表可以有多个普通索引。

全文索引(Full-Text Index):全文索引用于在文本数据中进行全文搜索,支持关键字和短语的匹配。全文索引适用于大段文本的搜索,如文章内容等。

组合索引(Composite Index):组合索引是基于多个列的索引,用于提高多列查询的效率。组合索引可以包含多个列,按照指定的列顺序进行排序。

创建索引的语法如下:

		
sql

		
CREATE INDEX index_name ON table_name (column1, column2, ...);

    
	
其中,index_name 是索引的名称,table_name 是要创建索引的表名,column1, column2, ... 是要创建索引的列名。

除了创建索引,还可以使用 ALTER TABLE 语句来添加、删除和修改索引。例如,添加主键索引的语法如下:

		
sql

		
ALTER TABLE table_name ADD PRIMARY KEY (column1);

    
	
需要根据具体的表名和列名进行替换。在创建索引时,需要根据实际需求选择适当的索引类型和列,以提高查询效率。然而,索引并不是万能的,过多或不恰当的索引可能会影响插入、更新和删除操作的性能,因此需要谨慎设计和管理索引。

37.索引失效

索引失效是指在查询中,数据库无法有效地使用索引来加速查询操作,从而导致查询性能下降。索引失效可能会发生在以下情况下:

不使用索引列进行查询:如果查询条件中没有使用到索引列,数据库无法利用索引来加速查询。例如,如果索引是在列A上,但查询条件是基于列B的,那么索引就无法发挥作用。

对索引列进行函数操作:如果在查询条件中对索引列进行函数操作,如使用函数进行计算、转换或格式化等,数据库无法直接使用索引进行匹配。这会导致索引失效,需要对函数操作进行优化或调整查询方式。

使用 OR 连接多个条件:在查询条件中使用 OR 连接多个条件时,如果其中一个条件无法使用索引,整个查询可能会导致索引失效。这是因为 OR 连接的条件需要进行全表扫描,无法利用索引进行快速匹配。

数据列的类型不匹配:如果查询条件中的数据类型与索引列的数据类型不匹配,数据库可能无法正确使用索引。例如,如果索引列是整数类型,但查询条件中使用了字符串类型,索引可能无法发挥作用。

数据分布不均匀:如果索引列的数据分布不均匀,即某些值的出现频率非常高,而其他值较少出现,那么对于那些高频值的查询,索引可能会失效,数据库会选择全表扫描。

为了避免索引失效,可以采取以下措施:

确保查询条件中使用到了索引列,并避免对索引列进行函数操作。
尽量避免使用 OR 连接多个条件,可以改写为使用 IN 或 UNION 进行多个查询。
确保查询条件中的数据类型与索引列的数据类型匹配。
对于数据分布不均匀的情况,可以考虑使用更合适的索引策略,如覆盖索引、联合索引等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值