MySQL - mysql服务基本操作以及基本SQL语句与函数

文章目录

  • 操作mysql
    • 客户端与 mysql 服务之间的小九九
    • 了解 mysql
  • 基本 SQL 语句
    • 语法书写规范
    • SQL分类
    • DDL
    • mysql数据类型
      • 数值类型
      • 字符类型
      • 日期类型
    • 示例
      • 修改(表操作)
    • DML
      • 添加数据
      • 删除数据
      • 修改数据
    • DQL
      • 查询多个字段
      • 条件查询
      • 聚合函数
      • 分组查询
      • 排序查询
      • 分页查询
      • DQL语句的执行顺序
    • DCL
      • 用户权限
      • 权限控制分配
    • 函数
      • 常用字符串函数
        • 练习
      • 常见数值函数
        • 练习
      • 常见日期函数
        • 练习
      • 流程函数
        • 练习

操作mysql

下载mysql我就不写文章了,怎么卸载倒是有一篇(在我的博客中)

下载完成mysql之后我们可以通过管理员的身份来运行cmd命令窗口,我们可以通过以下两条命令来启动 mysql 或者停止 mysql 服务

# net stop mysql80       它的作用是停止 mysql 服务
# net start mysql80       它的作用是开启 mysql 服务

mysql启动停止图片
现在我们只是启动了 mysql ,他现在还没有和我们的客户端进行一个连接,我们现在需要让 mysql 连接到我们的客户端,有三种连接方式,新手推荐都练习一下,有益于理解mysql 与客户端之间的一些联系

  1. 首先我们可以通过 MySQL 8.0 Command Line Client 这个软件来进行连接
  2. 我们可以通过命令行来跑 mysql连接服务 或者说连接 mysql ,如果是命令行就需要配置一下环境变量了,否则 window 无法寻找到 连接 mysql 的程序。

配置地址为:
mysql配置地址
然后我们可以执行该命令来让客户端连接 mysql 服务:mysql [-h 127.0.1.1] [-p 3306] -u root -p
mysql连接
3. 我们还可以使用可视化管理工具进行连接,这个比较简单,就不进行截图演示了。

客户端与 mysql 服务之间的小九九

首先客户端会向 mysql 服务器发送 sql 语句,表面上是让 mysql 去执行语句做出操作,其实mysql内部是很奇妙的,首先 mysql 接受到客户端传来的 sql 语句会直接给到内部的 DBMS 数据库管理系统,它是会去操作以及维护数据库的,它可操作以及维护多个数据库 ,每个数据库可包含多个表,每个表可包含多个字段。

了解 mysql

mysql 数据库是一种关系型数据库,所谓关系型数据库也就是通过表结构来存储数据的数据库,反之则为非关系型数据库,例如 mongodb 就是一种非关系型数据库(NoSQL)

官方的解释是:关系型数据库是建立在关系模型基础上,有多张互相连接的二维表组成的数据库。

关系型数据库格式统一,方便维护;同时 SQL语言标准统一,使用方便。这便是它的优点。

基本 SQL 语句

语法书写规范

  1. 首先 mysql 语句单行多行书写都可以,但是该语句结束时必须使用分号结尾 ;
  2. 可使用空格或缩进来增强可读性
  3. 不区分大小写,只是关键字建议大写,这是比较规范的
  4. 单行注释 -- 注释内容# 注释内容
  5. 多行注释 /* 注释内容 */

SQL分类

  • DDL(Data Definition Language): 数据定义语言,用来定义数据库对象(数据库,表,字段)
  • DML(Data Manipulation Language): 数据操作语言,用来对数据表中的数据进行增删改
  • DQL(Data Query Language): 数据查询语言,用来查询数据库中表的记录
  • DCL(Data Control Language): 数据控制语言,用来创建数据库用户、控制数据库的访问权限

DDL

  1. 查询
  • 查询所有数据库:SHOW DATABASES;
  • 查询当前数据库:SELECT DATABASE();
  1. 创建
  • CREATE DATABASE [ IF NOT EXISTS ] 数据库名称 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
  1. 删除
  • DROP DATABASE [ IF EXISTS] 数据库名称;
  1. 使用某数据库
  • USE 数据库名称;

  1. 查询当前数据库所有表
  • SHOW TABLES;
  1. 查询表结构
  • DESC 表名;
  1. 查询指定表的建表语句
  • SHOW CREATE TABLE 表名;
	CREATE TABLE 表名称(字段1 数据类型[ COMMENT 字段1注释],字段1 数据类型[ COMMENT 字段1注释],字段1 数据类型[ COMMENT 字段1注释],字段1 数据类型[ COMMENT 字段1注释]) [COMMENT 表注释];

最后一个字段后面不加逗号

mysql数据类型

数值类型

  • TINYINT(小整数值) : 占用一个字节;有符号范围时(-128,127);无符号范围时(0,255)
  • SMALLINF(大整数值) : 占用两个字节;有符号范围时(-32768,32767);无符号范围时(0,65535)
  • MEDIUMINF(大整数值) : 占用三个字节;有符号范围时(-8388608,8388607);无符号范围时(0,16777215)
  • INF / INFEGER(大整数值) : 占用四个字节;有符号范围时(-2147483648,217483647);无符号范围时(0,4294967295)
  • BIGINT(极大整数值) : 占用八个字节;有符号范围时(-2 ^ 63,2 ^ 63 - 1);无符号范围时(0,2 ^ 64 - 1)
  • FLOAT(单精度浮点数值) : 占用四个字节
  • DOUBLE(双精度浮点数值) : 占用八个字节
  • DECIMAL(小数值【精确定点数】)

有符号标识:SIGNED;无符号标识:UNSIGNED

当我们对分数或者年龄等做记录的时候就不需要用到有符号的负数了,我们可以这样写: age TINYINT UNSIGNED

对于浮点数我们可以这样限定它的范围:score double(限制位数,小数位数)

字符类型

字符类型有很多,我就列出一下,不会全部介绍,因为常用到的也就是 char、以及 varchar

  • char: 0-255 bytes 定长字符串
  • varchar:0-65535 bytes 变长字符串

定长意思就是已经开辟了这么大的空间,无论在实际操作中是存多少字符,它也是这么长的,有一点浪费空间的意思
而变长则是需要判断实际字符长度在分配空间

各有各的长处,变长性能比较差,但却不浪费空间,char浪费空间却性能胜与 varchar。

  • TINYBLOB:不超过255个字符的二进制数据
  • TINYTEXT:短文本字符串
  • BLOB:二进制形式的长文本数据
  • TEXT:长文本数据
  • MEDIUMBLOB:二进制形式的中等长度文本数据
  • MEDIUMTEXT:中等长度文本数据
  • LONGBOLB:二进制格式极大文本数据
  • LONGTEXT:超大文本数据

日期类型

  • DATE: YYYY-MM-DD (日期)
  • TIME: HH:MM:SS (时间)
  • YEAR: YYYY (年)
  • DATETIME: YYYY-MM-DD HH:MM:SS (混合日期)
  • TIMESTAMP: YYYY-MM-DD HH:MM:SS (混合日期【时间戳】)

示例

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| carbon             |
| examination_pro    |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| testdb             |
+--------------------+
7 rows in set (0.00 sec)mysql> use testdb;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| testdb     |
+------------+
1 row in set (0.00 sec)mysql> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| user             |
+------------------+
1 row in set (0.02 sec)mysql> desc user;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| name      | varchar(10) | YES  |     | NULL    |       |
| workno    | varchar(10) | YES  |     | NULL    |       |
| id        | int         | YES  |     | NULL    |       |
| gender    | char(1)     | YES  |     | NULL    |       |
| idcard    | char(18)    | YES  |     | NULL    |       |
| entrydate | date        | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)mysql> show create table user;
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table|
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| user  | CREATE TABLE `user` (`name` varchar(10) DEFAULT NULL COMMENT '用户名称',`workno` varchar(10) DEFAULT NULL COMMENT '工号',`id` int DEFAULT NULL COMMENT '编号',`gender` char(1) DEFAULT NULL COMMENT '性别',`idcard` char(18) DEFAULT NULL COMMENT '身份证号',`entrydate` date DEFAULT NULL COMMENT '入职时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='员工表' |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)mysql>

修改(表操作)

  • 添加字段
    ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMENT 注释] [约束];

  • 修改字段

  1. 修改数据类型
    ALTER TABLE 表名 MODIFY 字段名 新的数据类型(长度);
  2. 修改字段名称和字段类型
    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
  • 删除字段

ALTER TABLE 表名 DROP 字段名;

  • 修改表名称

ALTER TABLE 表名 RENAME TO 新表名;

  • 删除表
  1. 删除表
    DROP TABLE [ IF EXISTS ] 表名;
  2. 删除指定表,并且重新创建该表
    TRUNCATE TABLE 表名;

DML

添加数据

  • 给指定字段添加数据
    INSERT INTO 表名 (字段名1,字段名2,...) VALUES(值1,值2,...);

  • 给全部字段添加数据
    INSERT INTO 表名 VALUES(值1,值2,...);

  • 批量添加数据
    INSERT INTO 表名 (字段名1,字段名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);
    INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);

删除数据

DELETE FROM 表名 [WHERE 条件] ;

修改数据

UPDATE 表名 SET 字段名1 = '修改之后的值1',字段名2 = '修改之后的值2,... [WHERE 条件];'


DQL

查询多个字段

  • 查询
    SELECT 字段名1,字段名2,字段名3,... FROM 表名;
    SELECT * FROM 表名;

  • 别名
    SELECT 字段1 [ AS 别名1 ],字段2 [ AS 别名2 ],字段3 [ AS 别名3 ],... FROM 表名;

  • 去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

条件查询

SELECT 字段列表 FROM 表名 WHERE 条件列表;

  • 条件:
    – <
    – >
    – >=
    – <=
    – =
    – <> 或者 != 【表示不等于】
    – BETWEEN…AND… 【再某个范围之内(包含最大值以及最小值)】
    – IN 【在in之后的列表中的值,多选一】
    – LIKE 占位符 【模糊查询 _匹配单个字符,%匹配多个字符】
    – IS NULL 【是NULL】
    – IS NOT NULL 【不为NULL】
    – AND 或者 && 【并且】
    – OR 或者 || 【或】
    – NOT 或者 ! 【非,不是】

聚合函数

SELECT 聚合函数(字段列表) FROM 表名;

聚合函数:

  • count :统计数量
  • max : 最大值
  • min:最小值
  • avg:平均值
  • sum:求和
    null值不参与聚合运算

分组查询

SELECT 字段列表 FROM 表名 [ WHERE 条件] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ];

都是过滤条件 where 和 having 的区别在哪里呢?

  • 执行的时机不同:where 是在分组之前进行过滤,不满足 where 中的条件的话,不参与分组;而 having 是在分组之后进行过滤的
  • 判断条件不同:where 不能对聚合函数进行判断,having 可以对聚合函数进行判断

排序查询

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;

排序方式包含:

  1. ASC (升序)
  2. DESC (降序)

分页查询

SELECT 字段列表 FROM 表名 LIMIT 起始索引,每页查询条数;

DQL语句的执行顺序

  1. SELECT
  2. FROM
  3. WHERE
  4. GROUP BY
  5. HAVING
  6. ORDER BY
  7. LIMIT

DCL

用户权限

  1. 查询用户
USE mysql;
SELECT * FROM user;
  1. 创建用户
    CREATE USER '用户名'@'主机名' IDENTIFIEN BY '密码';
  2. 修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
  1. 删除用户
    DROP USER'用户名'@'主机名';

主机名如果为local host 那么该数据库只能在当前主机访问,也就是当前操作电脑上可以访问;如果主机名命名为 % 那么表示该数据库可以在任意主机上访问

权限控制分配

当我们有了多个用户权限,自然要给不同的用户分配不同的权限,而所分配的权限也就是该用户可执行的操作,例如查询、插入、修改、删除(库 / 表),简称CRUD。

如果要给予所有权限,那么可使用 ALL 或者 ALL PRIVILEGES

  1. 查询权限
    SHOW GRANTS FOR '用户名'@'主机名';
  2. 授予权限
    CRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
  3. 撤销权限
    REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

如果要操作该数据库的所有表的权限,那么我们可以将表名写做:*来表示通配该数据库所有表

同样的所有数据库也可以表示为 *


函数

常用字符串函数

  1. 字符串的拼接,将多个字符串拼接为一个字符串
CONCAT(STR1,STR2,STR3...)
  1. 字符串全部转小写
LOWER(str)
  1. 字符串全部转大写
UPPER(str)
  1. 左填充,用字符串pad对str左边进行填充,达到n个字符长度
LPAD(str,n,pad)
  1. 右填充,用字符串pad对str右边进行填充,达到n个字符长度
RPAD(str,n,pad)
  1. 去掉字符串左右两边的空格
TRIM(str)
  1. 返回字符串 str 从 start 位置起的 len 个长度的字符串
SUBSTRING(str,start,len)
练习
SELECT CONCAT('Hello ',' MySQL') AS '字符串拼接';SELECT LOWER(CONCAT('Hello',' MySQL')) AS '字符串转小写';SELECT UPPER(CONCAT('Hello',' MySQL')) AS '字符串转大写';SELECT LPAD(UPPER(CONCAT('Hello',' MySQL')),18,'_') AS '左填充字符串';SELECT RPAD(UPPER(CONCAT('Hello',' MySQL')),18,'_') AS '右填充字符串';SELECT TRIM(CONCAT('  Hello ',' MySQL  ')) AS '字符串去除两边空格';SELECT SUBSTRING(RPAD(UPPER(CONCAT('Hello',' MySQL')),18,'_'),5,3) AS '字符串截取';
# 这里需要注意索引值从1开始

常见数值函数

  1. 向上取整
CEIL(x)
  1. 向下取整
FLOOR(x)
  1. 返回 x / y 的模
MOD(x,y)
  1. 返回 0~1内的随机数
RAND()
  1. 求参数 x 的四舍五入的值,保留 y 位小数
ROUND(x,y)
练习
SELECT CEIL(200.1) AS '向上取整';
SELECT FLOOR(200.9) AS '向下取整';
SELECT MOD(12,7) AS '求模';
SELECT RAND() AS '随机数';
SELECT ROUND(RAND() * 200,3) AS '四舍五入';

常见日期函数

  1. 返回当前日期
CURDATE()
  1. 返回当前时间
CURTIME()
  1. 返回当前日期和时间
NOW()
  1. 获取指定的date年份
YEAR(date)
  1. 获取指定的date月份
MONTH(date)
  1. 获取指定的date日期
DAY(data)
  1. 返回一个日期/时间值加上一个时间间隔expr后的时间值
DATE_ADD(date,INTERVAL expr type)
  1. 返回起始时间date1和结束时间date2之间的天数
DATEDIFF(date1,date2)
练习
SELECT CURDATE() AS '当前日期';
SELECT CURTIME() AS '当前时间';
SELECT NOW() AS '当前日期和时间';SELECT YEAR('1999-01-06') AS '指定日期年份';SELECT MONTH('1999-01-06') AS '指定日期月份';SELECT DAY('1999-01-06') AS '指定日期';SELECT DATE_ADD('1989-01-01',INTERVAL 70 MONTH) AS '时间推进';SELECT DATE_ADD('1989-01-01',INTERVAL -70 DAY) AS '时间推进';SELECT DATEDIFF('2023-10-2','2001-10-19') AS '间隔天数';

流程函数

  1. 如果 value 为 true,返回第一个值,否则返回第二个值
IF(value,x,y)
  1. 如果 value 不为空,返回第一个值,否则返回第二个值
IFNULL(value1,value2)
  1. 如果 value1 为 true,返回res1,否则返回default默认值
CASE WHEN [value1] THEN [res1] ...ELSE[default] END
  1. 如果 value1 的值等于 val1,返回res1,否则返回default默认值
CASE [value1] WHEN [val] THEN [res1] ...ELSE[default] END
练习
SELECT IF((CEIL(RAND() * 10)  + 1 = 8),1,0) AS '判断';SELECT IFNULL((SELECT workno FROM emp WHERE username = '王小二'),'为空') AS '判断NULL';SELECT username,(CASE age WHEN 23 THEN '符合23岁的标准' WHEN 24 THEN '勉强接受' ELSE '不符合标准' END) AS '标准' FROM emp;SELECT CASE WHEN ((SELECT age FROM emp WHERE username = '王小二') = 23) THEN '符合23岁的标准' ELSE '不符合标准' END AS '标准';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/94014.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据科学】Scikit-learn[Scikit-learn、加载数据、训练集与测试集数据、创建模型、模型拟合、拟合数据与模型、评估模型性能、模型调整]

这里写目录标题 一、Scikit-learn二、加载数据三、训练集与测试集数据四、创建模型4.1 有监督学习评估器4.1.1 线性回归4.1.2 支持向量机(SVM)4.1.3 朴素贝叶斯4.1.4 KNN 4.2 无监督学习评估器4.2.1 主成分分析(PCA)4.2.2 K Means 五、模型拟合5.1 有监督学习5.2 无监督学习 六…

React18入门(第一篇)——JSX、TSX语法详解

文章目录 一、JSX 语法简介二、和 HTML 标签的几点不同三、JSX 属性四、JSX 事件4.1 简单点击事件4.2 类型限制4.3 带参数&#xff0c;箭头函数 五、插入 JS 变量六、JSX 中使用条件判断七、循环 一、JSX 语法简介 JSX - 是 JS 的扩展&#xff0c;写在 JS 代码里面&#xff0c…

STM32 DMA从存储器发送数据到串口

1.任务描述 &#xff08;1&#xff09;ds18b20测量环境温度存储到存储器&#xff08;数组&#xff09;中。 &#xff08;2&#xff09;开启DMA将数组中的内容&#xff0c;通过DMA发送到串口 存在问题&#xff0c;ds18b20读到的数据是正常的&#xff0c;但是串口只是发送其低…

python (*)和(**)的用法

在Python中&#xff0c;星号除了用于乘法数值运算和幂运算外&#xff0c;还有一种特殊的用法"在变量前添加单个星号或两个星号"&#xff0c;实现多参数的传入或变量的拆解&#xff0c;本文将详细介绍"星号参数"的用法。 # 什么是星号变量&#xff08;*&am…

ORACLE insert 性能比较

ORACLE insert 性能比较 在Oracle数据库中&#xff0c;不是提交越频繁越好。恰恰相反&#xff0c;批量提交可以得到更好的性能。这篇文章给大家简单展示一下在Oracle数据库中逐行提交于批量提交两者之间的性能差别。最后再给出一种可以极大改变性能的方法。 1.创建表t_ref&…

闲话Python编程-函数

在Python实际编程过程中&#xff0c;组织代码结构的两个重要手段是&#xff1a;函数和类。有了函数&#xff0c;我们才能把一个个内聚的流程封装起来&#xff1b;有了类&#xff0c;我们才能把一个个现实对象抽象表达出来&#xff0c;即使你说不用自己写类&#xff0c;但是你用…

Redis Cluster Gossip Protocol: 目录

术语说明 server&#xff1a;当前的节点 cluster&#xff1a;每个节点的内存中都有一个集群信息结构&#xff0c;里面包含了集群中各个节点的状态信息&#xff08;包括server自己&#xff09; myself&#xff1a;当前节点在cluster中的实体 node&#xff1a;cluster节点字典中…

C/C++ 数据结构 - 队列

1.队列 https://blog.csdn.net/LiuBo_01/article/details/80412290 1 #include <stdio.h>2 #include <stdlib.h>3 4 typedef struct Node5 {6 int data;7 struct Node* next;8 }N;9 10 typedef struct11 {12 N* front;13 N* rear;14 }Q;15 16 //…

WSL安装异常:WslRegisterDistribution failed with error: 0xc03a001a

简介&#xff1a;如果文件夹右上角是否都有两个相对的蓝色箭头&#xff0c;在进行安装wsl时&#xff0c;设置就会抛出 Installing WslRegisterDistribution failed with error: 0xc03a001a的异常 历史攻略&#xff1a; 卸载WSL WSL&#xff1a;运行Linux文件 WSL&#xff1…

Java下正面解除警告Unchecked cast: ‘java.lang.Object‘ to ‘java.util.ArrayList‘

就是我在反序列化时&#xff0c;遇到这样一个警告&#xff1a; Unchecked cast: java.lang.Object to java.util.ArrayList<com.work1.Student>然后我去网上查&#xff0c;有些人说用SuppressWarnings(“unchecked”)去忽略警告&#xff0c;但是我觉得作为一名合格的程序…

postgresql-自增字段

postgresql-自增字段 标识列IdentitySerial类型Sequence序列 标识列Identity -- 测试表 create table t_user( -- 标识列自增字段user_id integer generated always as identity primary key,user_name varchar(50) not null unique );-- 自动生成序列 CREATE SEQUENCE public…

【重拾C语言】三、分支程序设计(双分支和单分支程序设计、逻辑判断、多分支程序设计、枚举类型表示;典型例题:判断闰年和求一元二次方程根)

目录 前言 三、分支程序设计 3.1 判断成绩是否及格——双分支程序设计 3.2 成绩加上获奖信息—单分支程序设计 3.3 逻辑判断——布尔类型 3.4 获奖分等级——多分支程序设计 3.5 表示汽车种类——枚举类型 3.6 例题 3.6.1 例题——判断某个年份是否闰年 3.6.2 例题—…

【PyCharm Community Edition】:excel操作

Excel操作 相关模块openpyxlxlrdshutil 实例 相关模块 openpyxl 可以对.xlsx,.xlsm,.xltx,.xltm文件格式操作 打开文件&#xff1a;wb_xlsx openpyxl.load_workbook(“文件名”)新建文件&#xff1a;wb_xlsx openpyxl.Workbook()新建sheet表&#xff1a;wb_xlsx_sheet wb…

alibaba dragonwell jdk

阿里巴巴Dragonwell8快速指南 dragonwell-project/dragonwell8 Wiki GitHub 阿里巴巴Dragonwell8用户指南 dragonwell-project/dragonwell8 Wiki GitHub 阿里巴巴Dragonwell8常见问题 dragonwell-project/dragonwell8 Wiki GitHub

MySQL 性能优化

MySQL 性能优化 数据库命名规范 所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用 MySQL 保留关键字&#xff08;如果表名中包含关键字查询时&#xff0c;需要将其用单引号括起来&#xff09;数据库对象的命名要能做到见名识意&#xff0c;并且最…

【记录】IDA|IDA怎么查看当前二进制文件自动分析出来的内存分布情况(内存范围和读写性)

IDA版本&#xff1a;7.6 背景&#xff1a;我之前一直是直接看Text View里面的地址的首尾地址来判断内存分布情况的&#xff0c;似乎是有点不准确&#xff0c;然后才想到IDA肯定自带查看内存分布情况的功能&#xff0c;而且很简单。 可以通过View-Toolbars-Segments&#xff0c…

OpenMesh 网格简化之顶点聚类

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 顶点聚类方法将落在给定大小体素中的所有顶点集中到单个顶点之上,其过程有点类似于点云体素下采样,之后再基于聚类之后的顶点重新连接面片,以达到网格简化的目的。 二、实现代码 #define _USE_MATH_DEFINES #in…

同学苹果ios的ipa文件应用企业代签选择签名商看看这篇文章你再去吧

同学我们要知道随着互联网的发展&#xff0c;苹果应用市场的火爆&#xff0c;越来越多的开发者加入到苹果应用开发行业中来。同时&#xff0c;苹果应用市场上的应用也在不断增多&#xff0c;用户数量也在不断增加&#xff0c;苹果应用代签是指通过第三方公司为开发者的应用进行…

计算机视觉——飞桨深度学习实战-起始篇

后面我会直接跳到实战项目&#xff0c;将计算机视觉的主要任务和目标都实现一遍&#xff0c;但是需要大家下去自己多理解和学习一下。例如&#xff0c;什么是深度学习&#xff0c;什么是计算机视觉&#xff0c;什么是自然语言处理&#xff0c;计算机视觉的主要任务有哪些&#…

14.(开发工具篇github)如何在Github配置ssh key

第一步&#xff1a;检查本地主机是否已经存在ssh key 上图表示已存在。跳第三步 第二步&#xff1a;生成ssh key ssh-keygen -t rsa -C "xxxxxx.com"第三步&#xff1a;获取ssh key公钥内容&#xff08;id_rsa.pub&#xff09; cat id_rsa.pub第四步&#xff1a;G…