一、前期准备
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”的数据就可以这样写
刚插入的数据
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例如我想查学生的姓名和性别,则可以这样写
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基本的增删改查语句,下篇博文会为大家分享排序查询、分组查询、连接查询相关知识!