当前位置: 首页 > news >正文

数据库基础(7) . DML-基本操作

3.3.DML

DML 是 “Data Manipulation Language”(数据操作语言)的缩写,在数据库管理系统(DBMS)中用来处理已存在的数据库中的数据。

它主要包含用于插入(INSERT)、更新(UPDATE)、删除(DELETE

以及查询(SELECT,虽然 SELECT 有时被归类为其自己的类别,即数据查询语言,DQL)数据库记录的SQL命令。

这些操作允许用户修改存储在表中的数据。

在这里插入图片描述

3.3.0.测试用表

/*Navicat Premium Data TransferSource Server         : 00localSource Server Type    : MySQLSource Server Version : 80016 (8.0.16)Source Host           : localhost:3306Source Schema         : a1Target Server Type    : MySQLTarget Server Version : 80016 (8.0.16)File Encoding         : 65001Date: 26/10/2024 09:48:54
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (`stu_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学生主键#自增长',`stu_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '学生姓名',`stu_sex` tinyint(4) NULL DEFAULT NULL COMMENT '学生性别#男=1, 女=0',`stu_birth` date NULL DEFAULT NULL COMMENT '学生生日',`stu_weight` double NULL DEFAULT NULL COMMENT '学生体重',`stu_height` int(11) NULL DEFAULT NULL COMMENT '学生身高',`team_id` int(11) NULL DEFAULT NULL COMMENT '团队外键',`stu_info` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',PRIMARY KEY (`stu_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 15 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'student 学生' ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, '刘首一', 1, '2001-07-20', 61.3, 179, 1, '');
INSERT INTO `student` VALUES (2, '王小二', 1, '2004-03-05', 59.6, 182, 1, '热爱编程的计算机科学专业新生');
INSERT INTO `student` VALUES (3, '李小三', 0, '2002-12-13', 48.5, 168, 1, '对历史非常感兴趣');
INSERT INTO `student` VALUES (4, '赵小四', 1, '2004-05-29', 66.2, 180, 1, '对未来充满好奇的艺术系学生');
INSERT INTO `student` VALUES (5, '武五五', 0, '2005-05-05', NULL, NULL, NULL, NULL);
INSERT INTO `student` VALUES (6, '刘小六', 1, '2001-08-19', 56.6, 166, 3, '热衷于探索科学的奥秘');
INSERT INTO `student` VALUES (7, '闩小七', 1, '2004-03-05', 57.4, 172, 1, '对文学有着浓厚的兴趣');
INSERT INTO `student` VALUES (8, '赵静子', 0, '2004-11-26', 50, 156, 3, 'NULL');
INSERT INTO `student` VALUES (9, '张不开', 0, '2002-07-06', 60, 176, 2, 'null');
INSERT INTO `student` VALUES (10, '小金刚', 1, NULL, 59.6, 185, 2, '(Null)');
INSERT INTO `student` VALUES (11, '吴琼小', 0, '2005-07-22', 49.2, 166, 1, NULL);
INSERT INTO `student` VALUES (12, '张崖五小', NULL, '2005-01-08', 70.8, 182, 1, '一个电子游戏设计专业的新生');
INSERT INTO `student` VALUES (13, '何叶小露', 0, '2003-06-11', 44.5, 168, NULL, '一个喜欢旅行和摄影的人');
INSERT INTO `student` VALUES (14, '小沈阳', 1, NULL, 66.9, 173, 3, '热爱音乐');-- ----------------------------
-- Table structure for team
-- ----------------------------
DROP TABLE IF EXISTS `team`;
CREATE TABLE `team`  (`team_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '团队主键#自增长',`team_title` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '团队名称',`stu_count` int(11) NULL DEFAULT NULL COMMENT '成员数量',PRIMARY KEY (`team_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'team 团队' ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of team
-- ----------------------------
INSERT INTO `team` VALUES (1, '科技组', 7);
INSERT INTO `team` VALUES (2, '龙虎舞狮', 2);
INSERT INTO `team` VALUES (3, '玄武岩合唱团', 3);
INSERT INTO `team` VALUES (4, '考古兴趣班', NULL);SET FOREIGN_KEY_CHECKS = 1;

3.3.1.基本语法

3.3.1.1.查询表中的记录

语法 : select 字段1, 字段2,... from 表名

-- 查询 全部记录 全部字段
select stu_id, stu_name, stu_sex, stu_birth, stu_weight, stu_height, team_id, stu_info
from student;-- 查询部分字段
select stu_name, stu_sex, stu_birth
from student;-- 根据条件查询部分记录
select stu_id, stu_name, stu_sex, stu_birth, stu_weight, stu_height, team_id, stu_info
from student
where stu_id = 1;
3.3.1.2.增加一条

语法 : insert into 表名( 字段1, 字段2,... ) values( 值1, 值2, ... )

-- 插入全字段数据
insert into student(stu_id, stu_name, stu_sex, stu_birth, stu_weight, stu_height, team_id, stu_info)
values ( 20, '刘小翠', 0 , '2003-09-02' , 56.7 , 168 , 1, '学霸');-- 插入全字段数据, 字段可以省略
insert into student
values ( 21, '马小花', 0 , '2004-02-12' , 52.7 , 158 , 2, '喜欢运动');-- 插入部分字段数据
insert into student(stu_id, stu_name, stu_sex)
values ( 22, '肖火火', 1);-- 插入部分字段数据, id自增
insert into student(stu_name, stu_sex)
values (  '叶发', 1);
3.3.1.3.增加多条

语法 : insert into 表名( 字段1, 字段2 ) values( 值1, 值2 ), ( 值1, 值2 ), ( 值1, 值2 )

-- 插入多条
insert into student( stu_name, stu_sex, stu_birth )
values ('紫川禾', 1, '2002-09-08'), ('帝木', 0, '2001-06-09'), ('斯特森', 1, '2001-10-11');
3.3.1.4.从另一张表中导入数据

语法 : insert into 导入表名 ( 字段1, 字段2, ... ) select 字段1, 字段2, ... from 导出表名

先创建 stu 表并增加 字段

-- 创建表
create table stu(id int primary key auto_increment,name varchar(20) not null,sex boolean not null,birth date
);

student表中读取数据 导入到 stu表 中,

其中 sex 写成 固定的 1( 当然 这个字段也可以读取来)

insert into stu(name, sex, birth)
select  stu_name, 1, stu_birth
from student
where stu_birth is not null;
3.3.1.5.修改记录

语法 : update 表名 set 字段1 = 值1, 字段2 = 值2 where 条件

注意没有条件, 会修改表中所有记录

主键可以修改, 但通常不要这样做

-- 修改全部属性
update student
setstu_name = '刘小光',stu_sex = 1,stu_birth =  '2000-03-22',stu_weight = 65.6,stu_height = 178,team_id = 2,stu_info = '不喜欢运动'
where stu_id = 20;-- 只修改总分属性
update student
setstu_info = '喜欢写作'
where stu_id = 20;
3.3.1.6.删除记录

语法 : delete from 表名 where 条件

不加where 条件 会删除表中全部的记录

-- 删除
delete from student where stu_id = 20;
http://www.lryc.cn/news/478420.html

相关文章:

  • windows运行ffmpeg的脚本报错:av_ts2str、av_ts2timestr、av_err2str => E0029 C4576
  • [mysql]mysql的DML数据操作语言增删改,以及新特性计算列,阿里巴巴开发手册mysql相关
  • Github 2024-11-07 Go开源项目日报 Top10
  • 【黑盒测试】等价类划分法及实例
  • LeetCode17. 电话号码的字母组合(2024秋季每日一题 59)
  • SQLite数据库是什么?DB Browser for SQLite是什么?
  • 核心概念解析Caffeine 缓存模型与策略
  • ubuntu 22.04 防火墙
  • 【数据结构-合法括号字符串】力扣678. 有效的括号字符串
  • ThreadX在STM32上的移植:F1,F4通用启动文件tx_initialize_low_level.s
  • 【算法】递归+深搜:814.二叉树剪枝
  • spring Framework 特定条件下目录遍历漏洞(CVE-2024-38816)修复
  • ESP32-C3 入门笔记03:VScode + flash_download_tool 下载烧录程序(ESP-IDF + PlatformIO)
  • Node.js——fs模块-文件重命名和移动
  • vue2.0版本引入Element-ui问题解决
  • qt QTableView详解
  • 将Notepad++添加到右键菜单【一招实现】
  • Nature Methods | 基于流形约束的RNA速度推断精准解析细胞周期动态调节规律
  • 在离线环境中使用sealos工具快速部署一套高可用的k8s服务集群
  • ReactPress系列—Next.js 的动态路由使用介绍
  • DevOps业务价值流:需求设计最佳实践
  • A15基于Spring Boot的宠物爱心组织管理系统的设计与实现
  • RC高通滤波器Bode图分析(传递函数零极点)
  • SpeechT5 模型
  • 网站用户行为分析:方法、工具与实践
  • 医疗医药企业新闻稿怎么写?健康行业品牌宣传背书的报纸期刊杂志媒体有哪些
  • 2024-11-06 问AI: [AI面试题] 人工智能如何用于欺诈检测和网络安全?
  • 个人3DCoat设置分享
  • Spark 程序开发与提交:本地与集群模式全解析
  • Linux编程:DMA增加UDP 数据传输吞吐量并降低延迟