超基础MySQL常用知识,总有一个知识点你不常想起

本文详细介绍了MySQL的常见操作,包括查看字符编码、修改密码、创建及删除用户、创建数据库和表、设置权限、复制表和记录、删除数据等,涵盖了数据库管理的基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

客户端操作

查看mysql字符编码的设置情况

方式一:

status

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pYYhpq7M-1594136404989)(imgs/06/mysql_20200707001.png)]

方式二:

show variables like 'char%';

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3dewyEDE-1594136404990)(imgs/06/mysql_20200707002.png)]

修改mysql的用户密码

set password for root@localhost=password('1234');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FP6KUpNq-1594136404991)(imgs/06/mysql_20200707003.png)]

创建用户与设置用户权限

## 创建用户:
## 		用户名格式: 用户名@主机名
CREATE USER 新用户名 IDENTIFIED BY '密码';
## 为用户赋予相应的权限:
## 		所有权限:ALL;如果仅允许SELECT和UPDATE,那么就设置为:"SELECT,UPDATE"
##		表示所有数据库:*.*
GRANT 赋予的权限 ON 数据库名.表名 TO 用户名;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2YoSNO4E-1594136404992)(imgs/06/mysql_20200707004.png)]

删除用户

如果想删除某个用户,或者在创建用户的时候报这样的错误:

ERROR 1396 (HY000): Operation CREATE USER failed for 'wjtest'@'%'

那么就可以执行下面这样的操作:

# 查看mysql的用户
## 或者 SELECT user FROM mysql.user;
use mysql;
select user from user;

# 删除test用户
drop user 'test'@'%';

# 刷新mysql权限
flush privileges;

创建数据库

创建数据库

CREATE DATABASE 数据库名;

数据库名和表名,在windows、macOS和Linux上的处理方法并不相同。在windows和macOS的环境中不区分字符的大小写,但是在Linux环境中却区分大小写。

举个例子:tb1和TB1在windows和macOS环境中会作为相同的表名处理;但在Linux中不会。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8zZQFETP-1594136404993)(imgs/06/mysql_20200707005.png)]

显示数据库信息

SHOW DATABASES;

指定使用的数据库

指定数据库

USE 数据库名;

显示当前使用的数据库

SELECT DATABASE();

创建表

CREATE TABLE 表名 (列名1 数据类型, 列名2 数据类型, ...);

对于数据库名、表名和列名可以使用``(反括号)括起来使用。

显示所有表

SHOW TABLES;

指定字符编码创建表

当输入字符到表中出现字符乱码的情况时,可以在命令行后面指定字符编码;如:

CREATE TABLE tb1 (empid varchar(10), name varchar(10), age int) CHARSET=utf8;

确认表的列结构

DESC 表名;

数据类型

数据库的表中只能输入各个列指定格式的数据。这种数据的格式称为数据类型。数据类型具有降低输入错误数据的可能性、保证数据库整体可信赖性的特点。

常用的数据类型

数值类型

数据类型含义
INT整型:整数类型(占32位二进制)
TINYINT极小整型:-128~127
SMALLINT小整型:-32768~32767
MEDIUMINT中整型:-8388608~8388607
BIGINT大整型:超级大了
FLOAT单精度浮点数,占4字节
DOUBLE双精度浮点数,占8字节
DECIMAL精确小数,DECIMAL(最大位数,小数点之后的位数)的格式中的“最大位数”可以指定不大于65的值,“小数点之后的位数”可以指定不大于30的值。不会产生误差

字符串类型

数据类型含义
CHAR固定长度字符串,长度不超过255个字符
VARCHAR可变长度字符串,1~65532字节,长度取决于使用的字符编码
TEXT长文本字符串,长度不超过65535个字节
LONGTEXT极长文本字符串,长度不超过4294 967 295个字节

日期与时间类型

数据类型含义
TIME表示时间类型
DATE表示日期类型
DATETIME同时可以表示日期和时间类型

修改提示符的字符串

# 提示符还可以 通过"\d"设置数据库名,"\h"设置主机名,"\u"设置用户名
promp 作为提示符显示的文本

修改表

修改列的数据类型

ALTER TABLE 表名 MODIFY 列名 数据类型;

修改数据类型要慎重,如果列中存在数据,原则上就不应该再修改列的数据类型了。

添加列

ALTER TABLE 表名 ADD 列名 数据类型;

修改列的位置

将列添加到最前面

ALTER TABLE 表名 ADD 列名 数据类型 FIRST;

把列添加到指定位置

ALTER TABLE 表名 ADD 列名 数据类型 AFTER 指定列名;

修改列名和数据类型

ALTER TABLE 表名 CHANGE 修改前的列名 修改后的列名 修改后的数据类型;

删除列

ALTER TABLE 表名 DROP 列名;

设置主键

创建主键

主键用于在多条记录中确定一条记录时使用的标识符。具备以下特征:

  • 没有重复的值;
  • 不允许输入空值(NULL);

在创建表的时候设置主键

CREATE TABLE 表明 (列名 数据类型 PRIMARY KEY, ...);

设置唯一键

唯一键虽然不允许列中有重复值,但允许输入NULL。

CREATE TABLE 表明 (列名 数据类型 UNIQUE, ...);

使用具有自动连续编号功能

要使列具有自动连续编号功能,就得在定义列的时候进行以下三项设置:

  1. 数据类型为INT等整数类型;
  2. 加上AUTO_INCREMENT
  3. 设置PRIMARY KEY,使列具有唯一性;
CREATE TABLE 表明 (列名 数据类型 AUTO_INCREMENT PRIMARY KEY , ...);

连续编号的初始化

如果把表中的数据都删除,然后重新输入记录,自动编号不会从1开始分配,而是从最大值+1的值开始分配。如果过想要从1开始分配,则可以:初始化AUTO_INCREMENT的值:

ALTER TABLE 表名 AUTO_INCREMENT=1;

注意:如果表中还有数据,这时设置AUTO_INCREMENT的值比表中已经存在的编号最大值小,那么下一次编号是最大值+1,而不是设置的AUTO_INCREMENT

设置列的默认值

CREATE TABLE 表名 (列名 数据类型 DEFAULT 默认值, ...);

创建索引

当查找表中的数据时,如果过数据量过于庞大,查找操作就会花费很多时间。在这种情况下,最好在表上创建索引。如果事先创建了索引,那么查找时就不会对全表进行扫描,而是利用索引进行扫描。

创建索引

CREATE INDEX 索引名 ON 表名 (列名);

查看索引

## 横向显示
SHOW INDEX FROM 表名;
## 纵向显示
SHOW INDEX FROM \G

删除索引

DROP INDEX 索引名 ON 表名;

索引和处理速度的关系:创建了索引并不一定会缩短查找时间;在相同值较多的情况下最好不好创建索引。

  • 当对创建了索引的表进行更新时,也需要对已经存在的索引信息进行维护。检索速度快,更新速度慢;
  • 在使用索引的情况下,即使索引在创建过程中出现了错误,查找结果也不会受到任何影响。创建索引只会影响数据库整体的处理速度。

复制、删除表和记录

复制表的三种方法

复制表的列结构和记录

使用SELECT的结果复制列结构和记录,然后创建新的表。该方法不能复制AUTO_INCREMENT等属性。需要在复制后重新设置。

CREATE TABLE 新表名 SELECT * FROM 元表名;

复制完后,需要先使用DESC 表名确认表的结构之后再使用。

仅复制表的列结构

在创建表名后面加上LIKE指定复制的元表,这种复制方法会复制AUTO_INCREMENT等属性。

CREATE TABLE 新表名 LIKE 元表名;
仅复制记录
INSERT INTO 表名 SELECT * FROM 元表名;

删除表、数据库和记录

删除表

DROP TABLE 表名;  ## 如果表不存在的情况下会发生错误,建议用下面一条命令删除
## 当目标表存在时将其删除
DROP TABLE IF EXISTS 表名;

删除数据库

DROP DATABASE 数据库名;

删除表中所有记录

DELETE FROM 表名;

在不登录mysql的情况下操作mysql

使用mysqladmin创建数据库

mysqladmin -u 用户名 -p密码 CREATE 数据库名
## 删除该数据库
mysqladmin -u 用户名 -p密码 DROP 数据库名

使用mysql命令执行查询

如果在不启动mysql的情况下想要操作mysql,可以加上 -e选项,并且用""双引号将后面的命令括起来。

mysql 数据库名 -u 用户名 -p密码 -e "命令"

举个例子:

mysql db1 -u root -proot -e "SELECT * FROM tb1";

参考资料

西泽梦路(著) , 卢克贵 (译) . MySQL基础教程 . 人民邮电出版社 . 2020.1

<think>好的,我需要帮助用户寻找能够实现自动数据采集、提取、融合、推理并导入到Neo4j以构建知识图谱的大规模模型方案和工具。首先,我要回顾用户提供的引用内容,看看有没有相关的信息。 根据引用[1],Neo4j是一个高性能的图数据库,适合存储和管理知识图谱,并且有Cypher查询语言和可视化工具。引用[3]提到知识图谱的构建过程包括从各种数据源提取知识要素,存入模式层和数据层。用户需要自动化或半自动化的技术手段来实现这一点。 接下来,我需要将整个构建流程拆解成数据采集、提取、融合、推理和导入Neo4j这几个步骤,并为每个步骤推荐合适的工具或模型。 数据采集方面,网络爬虫工具如Scrapy和Apify是常见的选择,但用户可能需要处理不同结构的数据,所以还需要处理非结构化数据的工具,比如Apache Nifi或ETL工具如Talend。 数据提取涉及实体识别和关系抽取,这里自然想到自然语言处理模型。BERT、GPT系列和T5都是强大的预训练模型,可以微调用于信息提取。SpaCy和NLTK是常用的NLP库,适合处理文本数据。 数据融合需要解决实体对齐和冲突消解,OpenEA和Dedupe是相关工具。知识表示学习模型如TransE和RotatE能将实体和关系映射到向量空间,帮助发现隐含联系。 推理部分需要逻辑推理和规则引擎,Drools和Apache Jena适合基于规则的推理。图神经网络如GCN和GAT能处理图结构数据,进行复杂推理。DeepProbLog结合概率图和逻辑推理,适合不确定性推理。 导入Neo4j可以使用官方驱动neo4j-driver或Py2neo,结合APOC工具包处理数据导入和清洗。自动化流程可以用Apache Airflow或Luigi来编排任务。 最后,整合这些工具和模型,形成端到端的自动化流程。可能需要结合大模型如GPT-4或ChatGLM3来处理非结构化数据,提升自动化水平。同时,确保引用用户提供的参考文献,比如在提到Neo4j时引用[1][2][3]。 需要检查是否有遗漏的步骤或更合适的工具推荐,确保每个环节都有对应的解决方案,并且逻辑连贯。另外,用户可能关心开源工具和商业产品的选择,应尽量涵盖这两方面,但根据引用内容,主要提到的是Neo4j和TensorFlow,所以可能需要补充其他工具的信息。最后,生成相关问题,帮助用户深入探讨各个步骤的具体实现和优化方法。</think>### 分步解答:知识图谱自动化构建方案 #### 一、整体架构设计 基于引用[3]的知识图谱构建流程,自动化方案需覆盖以下核心环节: $$ \text{数据采集} \rightarrow \text{数据提取} \rightarrow \text{数据融合} \rightarrow \text{知识推理} \rightarrow \text{Neo4j存储} $$ ![知识图谱架构图](https://via.placeholder.com/600x200?text=知识图谱架构示意图)[^3] --- #### 二、关键技术与工具选型 1. **自动化数据采集** - **网页数据采集**:使用`Scrapy`框架或`Apify`平台实现结构化/半结构化数据抓取 - **非结构化数据处理**:采用`Apache Nifi`实现流式数据管道,支持PDF/图像/文本混合处理 - **数据库对接**:通过`Talend`等ETL工具对接MySQL/Oracle等关系型数据库 2. **智能信息提取** - **实体关系抽取**: - 预训练模型:微调`BERT`/`RoBERTa`实现命名实体识别(NER)[^1] - 多模态处理:使用`LayoutLM`处理表格/文档混合数据 - 工具集成:`SpaCy`工业级NLP管道实现实体关系三元组提取 - **事件抽取**:基于`T5`的文本到三元组生成模型 3. **知识融合与对齐** - **实体消歧**:采用`Dedupe`库实现模糊匹配 - **知识嵌入**:使用`TransE`/`RotatE`进行知识表示学习[^2] - **冲突检测**:基于`OWL`本体语言定义一致性约束规则 4. **知识推理与扩展** - **规则推理**:集成`Drools`规则引擎实现业务逻辑推理 - **图神经网络**:使用`PyTorch Geometric`构建GNN推理模型 - **概率推理**:`ProbLog`处理不确定性知识推理 5. **Neo4j存储优化** - **批量导入**:采用`neo4j-admin import`工具处理千万级节点 - **动态更新**:利用`APOC`工具包实现增量更新 - **可视化查询**:通过`Bloom`进行交互式图谱探索 --- #### 三、大模型集成方案 | 任务类型 | 推荐模型 | 集成方式 | |----------------|-------------------------|---------------------------| | 非结构化解析 | GPT-4/Vicuna | API接口调用+提示工程 | | 多模态处理 | LLaVA/VisualBERT | 模型微调+特征融合 | | 知识推理 | ChatGPT/ChatGLM3 | 思维链(CoT)提示策略 | | 代码生成 | CodeLlama/WizardCoder | 自动生成Cypher查询语句 | --- #### 四、实现径示例 ```python # Neo4j自动化写入示例 from neo4j import GraphDatabase from transformers import pipeline # 1.信息提取 ner_pipeline = pipeline("ner", model="dslim/bert-base-NER") entities = ner_pipeline("苹果公司由史蒂夫·乔布斯于1976年创立") # 2.知识融合 def entity_linking(entities): # 使用Embedding进行语义匹配 return linked_entities # 3.Neo4j写入 driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password")) def create_node(tx, name, label): tx.run(f"MERGE (a:{label} {{name: $name}})", name=name) with driver.session() as session: for entity in linked_entities: session.execute_write(create_node, entity["text"], entity["label"]) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栖溪阁晓生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值