当前位置: 主页 > 数据库

数据库姓名的缺省值为未知姓名-压缩文件格式未知或数据已经被损坏

发布时间:2023-02-09 16:42   浏览次数:次   作者:佚名

MySQL 数据库

前言

本文 mysql 数据库由 Hashspace 于 2020 年 6 月编译编辑,总结了最常用、最实用的 MySQL 基本语句。

我祝你愉快地享受这份简明的文件。

原始链接 hashspace.cn/mysql-shujuku.html

内容SQL 也可以 Hello World创建数据库 创建数据库删除数据库 删除数据库列表数据库使用数据库 用于创建表 创建表 列出数据库中的所有表插入到 查询数据 选择更新数据 更新删除数据 删除清除表数据 删除表数据 删除表添加字段 更改表删除索引 优化索引类型更新索引 更改表添加索引 创建唯一索引 更改表添加唯一 删除索引 删除索引 索引

View 索引视图表 创建语句查询 SQL 执行计划查询数据库姓名的缺省值为未知姓名,终止 SQLmysqldump MySQL 导入和导出数据

MySQL 数据库简介

MySQL是最流行的免费和开源关系数据库系统。在国内外公司中得到广泛而深入的应用。它是目前数据库领域最重要的工具。

MySQL 下载

MySQL的官方下载地址是 dev.mysql.com/downloads/installer/

最新版本是MySQL 8.0

视窗安装程序 420Mb

dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-8.0.20.0.msi

苹果安装

brew install mysqld

Ubuntu/Linux 安装

apt install mysqld

MySQL 连接到数据库

您可以参考文章MySQL连接到数据库和MySQL初学者教程

SQL也可以是Hello World。

SQL 语句不区分大小写。SELECT 等效于 select 。

select "Hell World";

创建数据库

create database 数据库名字
删除数据库

删除数据库

drop database 数据库名字

列出数据库

show databases
使用

数据库使用

use 数据库名字

创建表

语法

CREATE TABLE 表名称
(
列名称1 数据类型 其它可选配置,
列名称2 数据类型 其它可选配置,
列名称3 数据类型 其它可选配置,
....
)

例如,创建包含姓名、生日和身高的学生信息表

CREATE TABLE `student` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(16) NOT NULL DEFAULT '',
  `birthday` date NOT NULL,
  `height` int NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

每个字段描述如下:

字段类型是否可以为空表示 idint unsignedNOT NULLid 是自递增主键AUTO_INCREMENT类型,因为每条记录的唯一 id int 是正数类型,无符号表示无符号类型即仅表示正数范围;NOT NULL 表示此字段不能为空 NULL,必须具有值 namevarchar(16) NOT NULL 字符串类型,16 个字符,默认值为空字符串 ''生日日期不为空日期类型,出生日期高度int不为空正类型,例如,180 表示身高 180cm KEY(id)PRIMARY 将主键指定为 id 字段引擎, 存储引擎,InnoDB 引擎,默认 CHARSET,指定字符集,并使用 utf8mb4 避免编码不兼容(默认类型可能与表情符号等特殊字符兼容

)。

ID 自增量主键AUTO_INCREMENT说明

每个表只能设置一个自动增量主键,也可以不设置。通常,为了确定表中记录的唯一性,应默认设置自递增主键 ID

不空描述NOT NULL

是可选类型,不写入意味着字段值可以为 null NULL

默认值说明

DEFAULT 为可选制图表达的字段设置初始默认值。

列出库中的所有表

show tables

从那里,您可以找到新创建的学生表插入

数据 插入到

语法

INSERT INTO 表名  (列1, 列2,...) VALUES (值1, 值2,....)

例如,在学生信息表中插入一段数据 姓名为杰克,生日1990-01-01,身高180

INSERT INTO `student` (`name`, `birthday`, `height`)
VALUES ('Jack', '1990-01-01', 180);

查询数据选择

语法

SELECT 列1,列2,... FROM 表名称

或所有列 *

SELECT * FROM 表名称

select * from student

或者使用“”标记表和字段名称,以防止触发MySQL关键字。

select * from `student`

其中查询条件

查找名称等于杰克的记录

select * from `student` where name='Jack'

结果:

idname生日身高1杰克1990-01-01180

几个查询示例:

查找高度大于或等于 170 的记录

select * from `student` where height >=170

和查询查找“名称”等于“千

斤顶”且“高度”大于或等于 170 的记录

select * from `student` where name='Jack' and height >=170

或查询

查找名称等于杰克或高度大于或等于 170 的记录

select * from `student` where name='Jack' or height >=170

空记录查询

查找手机号码为空的记录

select * from `student` where mobile is null
更新

数据 更新

语法

UPDATE 表名称 SET 某列名称 = 新值 WHERE 某列名称 = 某值

例如,使用生日为 1990-02-01 的 Jack 名称更新学生信息表

UPDATE student birthday='1990-02-01' where name='Jack'
删除

数据 删除

语法

DELETE FROM 表名称 WHERE 列名称 = 值

例如,删除学生信息表中名称为 Jack 的记录。

DELETE FROM student WHERE where name='Jack'

示例 2:删除学生信息表中名称为 Jack 和生日 1990-02-01 的记录。

DELETE FROM student WHERE where name='Jack' and  birthday='1990-02-01'

示例 3,如果不写入 where 部分,则删除表中的所有记录

DELETE FROM student

在这种情况下,请考虑使用 TRUNCATE,即清空表的语句

清空表数据转换

例如,清空学生表而不删除表结构

TRUNCATE  student

该表添加了字段“更改表”

语法

ALTER TABLE `表名字` ADD `新字段名`  字段类型 COMMENT '字段说明'

例如,在“学生信息表单学生”中,添加一个字段“移动电话号码”以键入 varchar(16),该字段为 16 个字符。

ALTER TABLE `student` ADD `mobile` varchar(16) COMMENT '手机号'

表删除字段更改表删除

语法

ALTER TABLE `表名字` DROP  `字段名`

例如,删除学生信息表中移动电话号码的“移动”字段

ALTER TABLE `student` DROP `mobile`

索引优化

索引是提高 SQL 操作效率的一种方法。在字段上设置索引优化时,在某些情况下,使用查询字段的位置可以非常快速地返回这些符合条件的记录。

例如,学生信息表单中有 100 条记录,我们现在正在查找名为 Jack 的学生记录

select * from student where name='Jack'

理论上,我们需要扫描所有 100 条记录并比较名称字段是否为 Jack。当我们索引 name 字段时,我们通常只需要扫描几条记录即可找到所有名称为 Jack 的记录,这大大提高了 SQL 的执行速度和效率。对于诸如网站之类的服务,非卡,慢通常有非常明显的效果。

索引类型

它分为 INDEX 普通索引、UNIQUE 唯一索引和 PRIMARY KEY 主键索引。

只能设置一个主键索引,并且可以设置多个索引/UNIQUE。

您可以在一个字段上设置索引,也可以在多个字段上设置联合索引。

创建索引 更改表 添加索引

语法

ALTER TABLE 表名字 ADD INDEX 索引名字(表字段)

该示例为学生信息期刊的 Studet 表中的名称字段编制索引

ALTER TABLE student ADD INDEX index_name (name)

创建唯一索引 更改表 添加唯一

示例:由于电话号码不应重复,因此请在学生信息表中为移动字段设置唯一索引

ALTER TABLE student ADD UNIQUE mobile (mobile)

这里我们将索引名称设置为具有相同字段名称的移动,可以根据需要或不同设置。

下降指数

例如,删除学生信息表中的移动索引

ALTER TABLE student DROP INDEX mobile;

注意:普通索引和唯一索引都使用 DROP 索引删除。

查看索引

show index from student;

查看表中的索引很方便,以下是对结果中一些字段的描述:

查看表创建语句

show create table student

返回结果如下

CREATE TABLE `student` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(16) NOT NULL DEFAULT '',
  `birthday` date NOT NULL,
  `height` int NOT NULL,
  `mobile` varchar(16) DEFAULT NULL COMMENT '手机号',
  PRIMARY KEY (`id`),
  UNIQUE KEY `mobile` (`mobile`),
  KEY `index_name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4
我们

可以看到数据库姓名的缺省值为未知姓名,表创建语句已经包含了我们新的唯一 KEY 移动(移动)和普通索引 KEY index_name(名称)。

查询SQL执行计划

当我们想知道在表中添加索引后查询是否变得更高效时,可以使用查询 SQL 执行计划的功能,即在 SQL 语句前面添加说明,例如:

explain select * from student where name='Jack' ;

查询并终止已执行的 SQL 数组

查询执行中的 SQL 任务

show processlist;

终止 SQL,其中 id 是上述结果中的 id

kill id

mysqldump MySQL 导入导出数据导出数据

整个图书馆

mysqldump -u 用户名 -p 数据库名 > 导出的文件名.sql

单个表

mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名.sql

导出表结构

不导出数据,只要表结构,加上参数-d参数

整个库结构

mysqldump -d -u 用户名 -p 数据库名 > 导出的文件名.sql

单表结构

mysqldump -d -u 用户名 -p 数据库名 表名> 导出的文件名.sql

导入数据

/

TMP/备份.sql是备份文件

MySQL 命令导入

mysql -u用户名    -p密码 

源命令导入

mysql -u 用户名 -p 
use 数据库
source /tmp/backup.sql