MySQL增加,删除,更新,导出数据

导出数据

将检索到的数据,保存到服务器的文件内。

通过:select * into outfile ‘文件地址‘ from xxx;

select * from teacher_grade;

select * into outfile  ‘d:/testmysql/result‘ from teacher_grade;

注意:

可以自动创建文件,但是不能重写已有文件。

生成的文件格式:默认的采用行来区分记录,制表符区分字段。

为了满足某种特别的需求,会采用不同的分割方式。支持在导出数据时,设置记录与字段的分隔符。

通过如下的选项:

fields:设置字段选项

lines:设置行选项(记录选项)

默认值:

字段:fields terminated by ‘\t‘ enclosed by ‘‘ escaped by ‘\\‘

记录:lines terminated by ‘\n‘ starting by ‘‘

也可以根据实际情况自己设定。

select * into outfile  ‘d:/testmysql/result‘
fields terminated by ‘\t‘ enclosed by ‘*‘
lines terminated by ‘\n‘ starting by ‘start:‘
from teacher_grade;

注意:

常规的所有的记录,应该通过行来显示。

但是也有例外,例如保存二进制数据:Blob binary使用into dumpfile

select * into dumpfile ‘d:/testmysql/resultbin‘ from teacher_grade limit 1;
select * into outfile  ‘d:/testmysql/result‘ from teacher_grade limit 1;

增加数据

insert into tbl_name (字段列表) values (值列表)

可以不将所有的字段都插入数据。

如果说需要完成部分字段的插入,需要必须存在字段列表。

没有插入部分字段,可以使用下面的set语句。

insert into teacher_grade (name) values (‘黄继光‘);
insert into teacher_grade set name=‘黄继光‘;

insert into teacher_grade set t_name=‘张三丰‘,c_name=‘太极拳‘;

insert into teacher_grade (t_name,c_name) values
(‘黄继光‘,‘射击‘),(‘黄飞鸿‘,‘飞毛腿‘);

插入数据时,如果主键冲突会如何?

默认有主键约束,不会插入成功;

但是可以在insert语法内,可以进行控制。

在主键冲突时,改成执行更新操作。

insert into teacher_grade (id,t_name,c_name) values
(13,‘张无忌‘,‘太极拳‘) on duplicate key
update t_name=‘张无忌‘,c_name=‘太极拳‘;

注意:这里update后面不跟set。

流程:

先判断是否插入成功?

如果失败(主键冲突|唯一索引冲突),则进行更新操作。

插入(失败)
更新
更新完毕

插入数据源:

除了使用自定义的数据外,还可以使用select语句查询到数据,作为插入的数据源。

insert into teacher_grade (t_name,c_name)
select t_name,c_name from teacher_grade;

数据可以来源于其他数据表,要求字段数量和类型一致即可。

insert into teacher_grade (t_name,c_name)
select t_name,class_name from teacher;

通过强制使用default关键字或者default()函数使用默认值。

alter table teacher modify days tinyint(3) unsigned default 10;

insert into teacher values
(10,‘xxx‘,‘yyy‘,default),
(11,‘xxx‘,‘yyy‘,default(days));

replace

主键或唯一索引冲突,则替换,否则插入。

insert into teacher values(1,‘老子‘,‘儒家‘,30);

如果插入冲突,先删除旧记录,再插入新纪录。

replace into teacher values(1,‘老子‘,‘儒家‘,30);

主键不冲突,直接插入。

replace into teacher values(15,‘老子‘,‘儒家‘,30);

导入select * into outfile ‘file‘命令导出的内容

load data infile ‘file‘ into table tbl_name;

注意:

导入时,涉及到数据增加,需要考虑是否冲突的情况。

通常可以在导出时,将主键导出成null。在导入时,利用自动增长的特性,可以形成新的主键。

select null,t_name,class_name,days from teacher;
desc teacher;
alter table teacher modify t_id int auto_increment;
alter table teacher drop primary key;

alter table teacher modify t_id int primary key auto_increment;
load data infile ‘d:/testmysql/result‘ into table teacher; 

删除数据

允许使用条件:删除符合条件的数据。

允许使用limit:限制删除的记录数,limit n;

常见场景:

limit配合order by来使用。(先将结果排序,再删除固定数量的记录数。)

delete from teacher order by days limit 10;

如果只有order by是没有意义的。

允许连接删除

允许使用类似的join语法,同时删除多个表内的记录。

create table one(
one_id int,
one_data char,
public_field int
);
create table two(
two_id int,
two_data char,
public_field int
);
insert into one values(1,‘a‘,10);
insert into one values(2,‘b‘,20);
insert into one values(3,‘c‘,30);
insert into two values(2,‘b‘,20);
insert into two values(3,‘c‘,30);
insert into two values(4,‘d‘,40);
select * from one;
select * from two;

select * from one join two using(public_field);

先提供表名,再提供连接条件。

delete from one,two using one join two on one.public_field=two.public_field  where one_id=2;

如果不使用连接,则需要分别删除。

delete one

delete two

删除表所有数据

delete from test;

清空表

truncate teacher;

重建自定增长的主键,不会返回删除的记录数。

delete与truncate的区别

delete:逐行删除。

truncate:删除表,新建表。

更新数据

replace

insert onduplicate key update

条件更新,排序更新,限制条数

update ... where ... order by ... limit ...

多表更新

update one join two on one.public_field = two.public_field
set one_data=‘x‘,two_data= ‘y‘ where one_id=3;

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-21 16:05:03

MySQL增加,删除,更新,导出数据的相关文章

MySQL数据库使用mysqldump导出数据详解

mysqldump是mysql用于转存储数据库的实用程序.它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等.接下来通过本文给大家介绍MySQL数据库使用mysqldump导出数据详解,需要的朋友一起学习吧 mysqldump是mysql用于转存储数据库的客户端程序.它主要产生一系列的SQL语句,可以封装到文件,该文件包含有所有重建您的数据库所 需要的 SQL命令如CREATE DATABASE,CREATE TABLE,INSERT等等.可

MySQL命令行导入导出数据

参考:http://www.cnblogs.com/xcxc/archive/2013/01/30/2882840.html 这篇文章写得非常好,又简洁,而且深入浅出,排版也非常好看,不会像网上的只是在页面堆知识. MySQL 用命令行导出, 导入数据 1.导出数据: 1.1.导出单个数据库 mysqldump -hhost -uroot -p test>d:\test.sql    (如果没有错误,会提示你输入密码) 格式:mysqldump -h远程ip -u用户名 -p 数据库名 > 保

C# 增加 删除 更新 方法

/// <summary> /// 增加一条数据 /// </summary> public int Add(string 表名,string 参数,string 参数值) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into "); strSql.Append(表名); strSql.Append("("); strSql.Append(参数); s

MySQL 文本文件的导入导出数据的方法

MySQL写入数据通常用insert语句,如 代码如下: insert into person values(张三,20),(李四,21),(王五,70)-; 但有时为了更快速地插入大批量数据或交换数据,需要从文本中导入数据或导出数据到文本. 一. 建立测试表,准备数据 首先建立一个用于测试的表示学生信息的表,字段有id.姓名.年龄.城市.薪水.Id和姓名不 能为空. 代码如下: create table person( id int not null auto_increment, name

linux mysql 数据库操作导入导出 数据表导出导入

1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库: set names utf8: source  /home/newdb.sql; 1.1 数据库导入第二种 mysql -u用户名 -p密码 数据库名 < 数据库名.sql 1.2 数据库导入数据表 mysql -uroot -p show databases; create database newdb; use 数据库: source /var/ad

mysql的导入和导出数据,删除数据

本文转自网络优秀的文章 详细可以参考https://www.cnblogs.com/Cherie/p/3309456.html https://www.cnblogs.com/roverliang/p/6436140.html https://www.cnblogs.com/mkfywj/p/5452045.html https://www.cnblogs.com/waynechou/p/7794939.html 删除表内容,不删除表结构 truncate table 表名    --自动增长的

黑马day10 增加&amp;删除&amp;更新到数据库mysql

下面是在day10数据库下的表user进行操作的. 如果是更改了数据那么就使用Statement 中的executeUpdate()方法.如果是查询就使用executeQuery()方法. 案例: package cn.itheima.jdbc; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import org.jun

mysql的导入和导出数据

在命令行下mysql的数据导出有个很好用命令mysqldump,它的参数有一大把,可以这样查看: mysqldump 最常用的: mysqldump -uroot -pmysql databasefoo table1 table2 > foo.sql 这样就可以将数据库databasefoo的表table1,table2以sql形式导入foo.sql中,其中-uroot参数表示访问数据库的用户名是root,如果有密码还需要加上-p参数 C:\Users\jack> mysqldump -uro

mysql数据库连接和导入导出数据

1 安装mysql数据库和navicat,创建相应的账户(见mysql安装的文章) 2 在applicationContext.xml中添加相应的配置连接信息. 3.可以导入数据库 导出处:选中数据库表-右键-转存SQL文件-结构和数据-选择保存文件和位置即可 导入处:选择数据库,右键-运行SQL文件-选择之前导出的文件即可运行

mysql级联删除更新

首先,目前在产品环境可用的MySQL版本(指4.0.x和4.1.x)中,只有InnoDB引擎才允许使用外键,所以,我们的数据表必须使用InnoDB引擎. 下面,我们先创建以下测试用数据库表: CREATE TABLE `roottb` (   `id` INT(11) UNSIGNED AUTO_INCREMENT NOT NULL,   `data` VARCHAR(100) NOT NULL DEFAULT '',   PRIMARY KEY (`id`) ) TYPE=InnoDB; CR