6.Mysql 常见的数据操作

常见的数据操作有:添加数据、删除数据、更新数据、数据的导入和导出。

数据的导入导出,可以查阅 Mysql官网 扩展更多,如果有安装数据库管理工具(datagrip、Navicat、DBeaver、MySQL Workbench),那么直接根据步骤点击即可。

以下都是在数据库和表已经建立操作的,如果还不清楚如何建库表,可以前往:Mysql 常见的数据定义语言DDL

添加数据

不指定字段添加单行数据

/*
insert into table_name
values (value1,value2,....);
*/
insert into sql231104 values(1,2138,'male',21,'北京大学',3.4,7);
insert into sql231104 values(2,3214,'male',null,'复旦大学',4.0,15);

指定字段添加单行数据

/*
insert into 表名(column1 [, column2, …, columnn])
values (value1 [,value2, …, valuen]);
*/
insert into sql231104(id,device_id,gender,age,university,gpa,active_days_within_30) values(1,2138,'male',21,'北京大学',3.4,7);
insert into sql231104(id,device_id,gender,age,university,gpa,active_days_within_30) values(2,3214,'male',null,'复旦大学',4.0,15);

指定字段,一次性添加多行数据

/*
insert into table_name(column1 [, column2, …, columnn])
values
(value1 [,value2, …, valuen]),
(value1 [,value2, …, valuen]),
……
*/
insert into sql231104(id,device_id,gender,age,university,gpa,active_days_within_30) 
values(1,2138,'male',21,'北京大学',3.4,7),
      (2,3214,'male',null,'复旦大学',4.0,15);

添加查询结果

/*
insert into table_name(column1 [, column2, …, columnn])
select column1 [, column2, …, columnn]
from table_name1 [<join_type> join table_name2 on <join_condition>]
*/
create table sql231104_qa like sql231104;-- 
insert into sql231104_qa select * from sql231104; -- 单表查询录入
insert into sql231104_qa table sql231104;-- 单表查询录入
-- 多表联结查询录入
insert into sql231110(device_id,university
select b.device_id,
			 b.question_id,
       a.university,
from sql231104 as a
right join sql231103 as b
on a.device_id = b.device_id;

insert into sql231110(device_id,university,question_cnt,right_question_cnt)
select a.device_id,
       a.university,
       sum(if(b.result is not null, 1, 0)) as question_cnt,
       sum(if(b.result = 'right', 1, 0))   as right_question_cnt
from sql231104 as a
left join sql231103 as b
on a.device_id = b.device_id
where 1=1
    and (month(date) = 8 or date is null)
group by a.device_id, a.university;

删除数据

删除全部数据

-- 清空数据
truncate table table_name;
-- 删除全部数据
delete
from table_name
where 1=1;

truncate table sql231110;
delete
from sql231110
where 1=1;

删除条件数据

/*
delete
from table_name
where 1=1
[and where_condition];
*/
delete
from sql231110
where 1=1
and university = '北京大学’;

更新数据

单表自更新

/* 
update table_name
set column1 = value1 [,conlumn2 = value2,...]
where 1=1
[and where_condition];
*/
update sql231110
set gender = 'female',age = 30
where 1=1;           -- 更新所有人员性别为男性,年龄30

update sql231110
set gender = 'female',age = 30
where 1=1
and device_id = 2138;-- 更新北京大学人员性别为男性,年龄30

多表联结更新

-- 更新回答正确的用户得分为80分
update sql231104
set gpa = 80
where device_id in (
    select distinct device_id
    from sql231103
    where result = 'right');

update sql231104 as a
join sql231103 as b on a.device_id = b.device_id
set a.gpa = 80;

导出数据

使用mysqldump导出sql文件

/* Windows 按 Win+R 输入 cmd ,Mac 打开终端
mysqldump [arguments] > file_name
[arguments]:有主机、端口号、用户,还有需要导出的操作,有数据库和表
file_name:是文件存储的路径和名字
输入完命令执行后需要输入用户密码
如果没有配置环境变量,报错mysql,也可以在执行命令前加上mysql路径,如/usr/local/mysql/bin/
*/
-- 导出指定数据库
mysqldump -h127.0.0.1 -p3306 -uroot -p sql_training > /Users/guanfawang/Downloads/mysqldump2/sql_training.sql
-- 导出多个数据库
mysqldump -h127.0.0.1 -p3306 -uroot -p --databases dwd sql_test1 > /Users/guanfawang/Downloads/mysqldump2/dwd_sqltest1.sql
-- 导出指定数据库的表
mysqldump -h127.0.0.1 -p3306 -uroot -p sql_training sql231030 > /Users/guanfawang/Downloads/mysqldump2/sql231030.sql
-- 导出指定数据库多个表
mysqldump -h127.0.0.1 -p3306 -uroot -p sql_training sql231030 sql231031 > /Users/guanfawang/Downloads/mysqldump2/sql231030_31.sql

在这里插入图片描述

导入数据

使用mysqldump导入sql文件

/*Windows 按 Win+R 输入 cmd ,Mac 打开终端
mysql -h127.0.0.1 -p3306 -uroot -p
本地操作的话可以省略成:mysql -u root -p
*/
create database if not exists sql_test2;
use sql_test2;
source /Users/guanfawang/Downloads/mysqldump2/sql231030_31.sql

在这里插入图片描述

如果有安装数据库管理工具,如Datagrip,则根据步骤即可操作;
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

有请小发菜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值