本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、前期准备
1.安装Navicat Mysql或navicat Premium
2.安装mysql(若有公司测试服务器地址可以不安装直连测试数据库即可)
3.打开navicat连接mysql服务
4.打开navicat连接,创建一个数据库(无须考虑字符集、排序规则为什么要这样填写,测试不需要了解,可自行私下了解)
5.我们需要准备一些班级数据和学生数据,在创建的数据库中新建一个查询
6.粘贴如下sql
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for class
-- ----------------------------
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class` (
`id` int(11) NOT NULL,
`class_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`created` datetime(6) NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of class
-- ----------------------------
INSERT INTO `class` VALUES (1, '一班', '2021-07-17 13:40:30.000000');
INSERT INTO `class` VALUES (2, '二班', '2021-07-18 13:40:48.000000');
INSERT INTO `class` VALUES (3, '三班', '2021-07-19 13:40:48.000000');
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(11) NOT NULL,
`created` datetime(6) NOT NULL,
`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
`class_id` int(11) NOT NULL,
`gender` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`height` int(3) NOT NULL,
`weight` int(3) NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, '2021-07-19 13:42:35.000000', '张顺', 1, 'male', 170, 65);
INSERT INTO `student` VALUES (2, '2021-07-19 13:42:35.000000', '张玲', 1, 'female', 170, 65);
INSERT INTO `student` VALUES (3, '2021-07-19 13:42:35.000000', '李广', 2, 'male', 180, 68);
INSERT INTO `student` VALUES (4, '2021-07-19 13:42:35.000000', '李三四', 2, 'female', 170, 65);
INSERT INTO `student` VALUES (5, '2021-07-19 13:42:35.000000', '赵云', 3, 'male', 199, 100);
INSERT INTO `student` VALUES (6, '2021-07-19 13:42:35.000000', '马超', 3, 'female', 171, 66);
INSERT INTO `student` VALUES (7, '2021-07-19 13:42:35.000000', '诸葛亮', 3, 'male', 170, 65);
INSERT INTO `student` VALUES (8, '2021-07-19 13:42:35.000000', '刘备', 3, 'male', 202, 105);
INSERT INTO `student` VALUES (9, '2021-07-19 13:42:35.000000', '曹操', 3, 'male', 181, 80);
INSERT INTO `student` VALUES (10, '2021-07-19 13:42:35.000000', '黄忠', 2, 'female', 166, 50);
SET FOREIGN_KEY_CHECKS = 1;
7.按图中操作
8.点击目录的表名可查看到创建的数据
6.两张表的结构
class表字段(列)说明
1.id:班级id(唯一)
2.class_name:班级名称
3:created:创建班级的时间
student表字段(列)说明
1.id:学生id(唯一)
2.name:学生名称
3:created:创建学生的时间
4:class_id:所属班级,与班级id做关联
5.gender:学生性别
6.height:学生身高
7.weight:学生体重
二、增删改查数据(下列的Sql无须区分大小写)
1.增加数据(INSERT INTO)
语法:INSERT INTO 表名 VALUES (‘表字段名1’,‘表字段名2’,.....);
例如我们想新增一条班级id为4,班级名称为“自建一班”,创建时间为“2021-07-19 13:40:30.000000”的数据就可以这样写
INSERT INTO `class` VALUES (4, '自建一班', '2021-07-19 13:40:30.000000');
刚插入的数据
2. 删除数据(delete和truncate)
2.1 delete
语法:DELETE FROM 表名 WHERE 字段名 = 值
例如我们想删除刚刚创建的班级数据,我们知道刚刚创建的班级数据它的id为4,名称为自建一般,那我们可以有如下两种写法
DELETE FROM class WHERE id=4;
DELETE FROM class WHERE class_name='自建一班';
2.2 truncate
语法:truncate 表名
例如我们想删除所有班级数据,则可以这样写
truncate class;
它会把班级表的所有数据都删除掉
2.3drop(删表)
语法:
drop 表1名,表2名,...;
例如我们想删除class表和student表,则可以这样写
DROP TABLE class,student;
他会把两张表全部删除掉 删除后,记得重新执行步骤一第6步的sql,为后续教程的数据做准备 2.4delete、truncate、drop的区别 简单来说: drop用于删表(表中数据会全部删除,无法回滚),delete和truncate用于删除表中的数据(delete也可删表)。通过delete删除的数据可以回滚,而truncate删除的则不能。 他们的级别为:drop>truncate>delete delete操作不会减少表或索引所占用的空间,truncate会将占用的恢复至初始大小。 举个例子:如果设置了自增id,有id为1、2、3的三条数据,如果通过delete全部删除后,下次插入的数据如果没有指定id的话,那它的id会为4 如果通过truncate删除这三条数据的话,那它的id会为1
3.修改数据(update)
语法:update 表名 set 字段名=值
例如我们想把三班的名称改为“自建三班”,则可以这样写
UPDATE class set class_name='自建三班' WHERE id=3
就可以把三班的名称改为“自建三班”,如果没有带where id=3则所有的班级名称都会变为“自建三班”
4.查询数据
语法:SELECT 字段名1,字段名2,... FROM 表名
4.1例如我想查学生的姓名和性别,则可以这样写
SELECT `name`,gender from student;
4.2如果想查学生的全部信息那sql字段名处可以用*号代替
SELECT * from student;
查询结果
4.3只想查性别为男的学生信息,可以这样写
SELECT * from student where gender='male';
查询结果
4.4 查询姓张的女同学
SELECT * from student where `name` like '张%' and gender='female';
查询结果
本期为大家介绍了sql基本的增删改查语句,下篇博文会为大家分享排序查询、分组查询、连接查询相关知识!