《MySQL数据库》数据导入、导出、表处理—/—<4>

一、插入数据

1、可使用外部工具navicat导入数据的情况下

因为部分公司不允许使用外部工具去导入数据

对于大批量数据,除了上节课中使用导入向导插入数据,也可在vscode中打开csv文件,然后选中光标,长按shift+ctrl,拖动滚轮,点击要修改的下面行的位置即可编辑,如图所示

将所有的数据处理成下列状态ctrl +A选中所有内容,复制到navicat ,即可使用命令将所有数据导入表student中,每一条后面都需要有分号 ";"

将复制的内容粘贴到新建查询中即可

但是这种方式特别的慢,需要一条一条执行所有命令,那么使用另一种方式即可快速使用导入,

即,删除第一条以外的所有insert in命令,每一条命令后的分号替换成逗号,再在开头结尾加个括号即可

最后一行括号外同样要加个分号

再复制所有内容去navicat中新建查询即可快速导入所有数据。

注意:此时表名student后面没有写括号,也没有再括号内写入字段名,因为后面value值对应的括号内的数据条数以及数据格式和student中创建好的字段一 一对应

2、不可使用外部工具navicat导入数据的情况下

1)将数据存入linux本地

在electerm(终端模拟器)中先将student.csv数据文件存入虚拟机

点击左上角的sftp即可,左边是本地文件夹,右边是虚拟机内的文件夹

找到对应文件,直接拖到右侧虚拟机内即可

然后返回ssh,输入命令ll即可查看

2) 从linux本地将数据读入MySQL
**●**使用命令 use ai_03 进入这个库

进入MySQL(与在虚拟机内进入一样,但是更好用更方便)

在MySQL中输入以下命令导入,导入位置为ai_03库的student表,分隔符为','英文逗号,

sql 复制代码
load data local infile '/root/mysql_pak/students.csv' into table ai_03.students fields terminated by ",";

代码解释:

load data 加载本地文件

local infile '/root/mysql_pak/students.csv' 本地文件地址

into table ai_03.students是写入ai_03数据库的student表内,如果你使用了use ai_03进入了这个数据库,那么上述可以直接写表名不用写库名,

fields terminated by ","; 表示文件分隔符是","号

● 使用查询命令查看数据
sql 复制代码
select * from student

得到如下结果:

二、导出数据

1、从mysql中导出数据文件

使用命令将student表的数据重定向保存到linux本地的student.sql

sql 复制代码
mysqldump -u root -p ai_03 student -h 192.168.197.100 >student.sql

代码解释:

ai_03 student库名和表名,之间用空格分开

-h 192.168.197.100 主机ip地址

>student.sql 重定向到文件student.sql

此时输入命令ll即可查看到linux本地文件,即可发现刚刚保存的文件

此时可以输入命令 vim student.sql 打开文件编辑模式查看文件内容

此时导出到linux本地的是所有内容,其中包括了student表的建表语句

注意其中每一条数据后面都有 \r 符号,因为linux使用 \r 换行,windows使用 \n 换行

此时可以在electerm左上角的Sftp中把linux本地文件拖入左侧的本机文件,因为我拖入的是桌面文件地址,所以在桌面就看到了这个student.sql文件

其内容就是上图的vim打开对应的文件

此时同样可以在navicat中找到表,然后右击运行SQL文件,然后选中上方那个文件又可以创建出来新表student

2、在MySQL中执行数据文件

使用命令use ai_03 进入库,然后使用source命令执行数据文件

sql 复制代码
source /root/student.sql;

其中/root/student.sql为数据文件在linux中的地址

运行代码后即可创建一个新表并将数据文件内容写入

三、基础命令补充内容

1、创建数据库

sql 复制代码
create database if not exists db_name 

其意思是:创建一个数据库,命名为db_name,如果当前文件夹没有这个名字的数据库,则成功创建,如果有这个命名,则报错

2、 查看当前数据库的建库语句

sql 复制代码
show create database db_name

即查看数据库命名为db_name的库的建库语句

3、输出数据库

sql 复制代码
drop database if exists db_name

即如果存在db_name库,则删除,反之报错

4、切换数据库

sql 复制代码
use database

5、查看当前使用的数据库

sql 复制代码
select database();

6、单行注释

两个减号:

7、多行注释

/* */

8、创建一个表

sql 复制代码
create table if not exists tb_name(
    id int primary key
    ,name varchar(255) not null
    ,age int
    ,gender varchar(255)
    ,clazz varchar(255)
);

上述代码即创建一个表名为tb_name,如果存在则创建,如果不存在则报错,创建字段名为id、name、age、gender、clazz,其数据类型分别是整型、字符串型、整型、字符串型、字符串型,另外,primary key 表示主键,主键看下列解析

注意:建表语句最后一句括号后面还有一个命令,定义字符集为utf-8,因为前面已经提前设置过字符集了,所以这里可以不用写这段代码,如图所示

9、主键(primary key)

在MySQL中,主键(Primary Key)是一种用于唯一标识每条记录的列或一组列

主键具有以下特点:

  1. 主键列的值必须是唯一的,不能重复。
  2. 主键列的值不能为空不能为NULL
  3. 主键列的值在表中必须是唯一的标识符,可以用来快速访问和定位表中的记录。
  4. 主键可以由一个列或多个列 组成,如果由多个列组成,则称为复合主键或联合主键
  5. 主键在创建表时可以通过PRIMARY KEY约束进行定义。

10、主键创建方式

1)在创建表时定义主键:
sql 复制代码
CREATE TABLE table_name (
   column1 datatype PRIMARY KEY,
   column2 datatype,
   ...
);

如果设置了主键,之后插入数据时,主键的列,数据有空值或者重复值时会报错

2)在已创建的表上添加主键:
sql 复制代码
ALTER TABLE table_name ADD PRIMARY KEY (column1);

如果数据有控制或者重复值,则增加不了主键

11、书写格式

在使用查询命令的时候,除库名和表名需要严格遵守大小写格式以外,其他的搜可以随意的大小写,例如:下列代码输出结果就一致

sql 复制代码
select job from emp;
SELECT job FROM emp;

表中字段名是job,实际使用就必须一摸一样,表的名字也是,必须遵守大小写

12、表修改

1)增加列

使用命令

sql 复制代码
alter table student add length float;

即,对student表增加一列,列名为length,数据类型为float类型

例如:

我有一个表dept ,其数据如下,对其增加一列列名为aaa,数据类型为varchar 的

使用命令 alter table dept add aaaa varchar;

选中执行后得到下列状态

然后刷新dept表即可增加一列

2) 更改列的属性

使用命令

sql 复制代码
alter table dept modify aaaa int not null;

即,将表dept中的列aaaa的字符串类型更改为int型,然后设置为非空属性,即列中的值不能为空

因为我刚增加的列aaaa没有值,所以这个not null属性不用写,不然会报错

3)删除列

使用命令

sql 复制代码
alter table dept drop aaaa;

即,使用drop删除列aaaa

4)修改表名称:
sql 复制代码
rename table dept to dddpt;

将dept表名修改为dddpt

5)修改列名
sql 复制代码
alter table dddpt change dept_no ddd_no int;

即,将dddpt表中的列名dept_no修改为ddd_no,并更改为int型

6)修改表的字符集

alter table student character set utf8;

这种用处不大,最好是从最开始配置的时候就去修改字符集

相关推荐
Hello.Reader42 分钟前
Redis热点数据管理全解析:从MySQL同步到高效缓存的完整解决方案
redis·mysql·缓存
是程序喵呀1 小时前
MySQL备份
android·mysql·adb
指尖上跳动的旋律1 小时前
shell脚本定义特殊字符导致执行mysql文件错误的问题
数据库·mysql
一勺菠萝丶2 小时前
MongoDB 常用操作指南(Docker 环境下)
数据库·mongodb·docker
m0_748244832 小时前
StarRocks 排查单副本表
大数据·数据库·python
C++忠实粉丝2 小时前
Redis 介绍和安装
数据库·redis·缓存
wmd131643067123 小时前
将微信配置信息存到数据库并进行调用
数据库·微信
是阿建吖!3 小时前
【Linux】基础IO(磁盘文件)
linux·服务器·数据库
凡人的AI工具箱3 小时前
每天40分玩转Django:Django国际化
数据库·人工智能·后端·python·django·sqlite
ClouGence3 小时前
Redis 到 Redis 数据迁移同步
数据库·redis·缓存