网站建设运营策划方案厨师培训机构 厨师短期培训班
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;