欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

超级简单的sql入门(一)

程序员文章站 2022-06-23 14:58:48
前言因为女朋友要做测试了,问我都该学些什么,考虑到循序渐进,网上的教程又不是那么通俗易懂,所以写点sql的教程给女朋友看。准备本次使用的数据库为mysql,管理工具为navicat。我新建了两张表,一张学生表,一张成绩表,接下来将通过这两张表来给女朋友讲一下增删改查的操作,首先我们先创建数据库和表,可以通过查询或者管理工具的方式。如果使用cmd终端连接本地mysql数据库的话执行命令mysql -u root -p然后会提示输入密码,输入正确密码就连接成功了,如果使用管理工具的话就配置好直接连...

前言

因为女朋友要做测试了,问我都该学些什么,考虑到循序渐进,网上的教程又不是那么通俗易懂,所以写点sql的教程给女朋友看。

准备

本次使用的数据库为mysql,管理工具为navicat。我新建了两张表,一张学生表,一张成绩表,接下来将通过这两张表来给女朋友讲一下增删改查的操作,首先我们先创建数据库和表,可以通过查询或者管理工具的方式。如果使用cmd终端连接本地mysql数据库的话执行命令

mysql -u root -p

然后会提示输入密码,输入正确密码就连接成功了,如果使用管理工具的话
就配置好直接连接就好了。
创建数据库的sql语句:

CREATE DATABASE 数据库名称

管理工具也可以通过页面的方式来创建。数据库创建好了以后就可以创建表啦,sql附在表结构中了。

一、表结构

超级简单的sql入门(一)
这是我的数据库结构
超级简单的sql入门(一)
这是我的学生表,附上sql:


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `id` int(11) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `sex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `stu_class` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, '张三', '男', '一班');
INSERT INTO `student` VALUES (2, '李四', '女', '一班');
INSERT INTO `student` VALUES (3, '王五', '男', '二班');

SET FOREIGN_KEY_CHECKS = 1;

超级简单的sql入门(一)
这是我的成绩表,附上sql:


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for achievement
-- ----------------------------
DROP TABLE IF EXISTS `achievement`;
CREATE TABLE `achievement`  (
  `id` int(11) NOT NULL,
  `student_id` int(11) NULL DEFAULT NULL,
  `class` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `fraction` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of achievement
-- ----------------------------
INSERT INTO `achievement` VALUES (1, 1, '语文', '87');
INSERT INTO `achievement` VALUES (2, 1, '数学', '99');
INSERT INTO `achievement` VALUES (3, 1, '英语', '60');
INSERT INTO `achievement` VALUES (4, 2, '语文', '50');
INSERT INTO `achievement` VALUES (5, 2, '数学', '30');
INSERT INTO `achievement` VALUES (6, 2, '英语', '90');
INSERT INTO `achievement` VALUES (7, 3, '语文', '50');
INSERT INTO `achievement` VALUES (8, 3, '数学', '66');
INSERT INTO `achievement` VALUES (9, 3, '英语', '50');

SET FOREIGN_KEY_CHECKS = 1;

二、练习题目

1、查询性别为男的学生
学习基本的条件查询
2、查询张三的性别
学习基本的条件查询
3、查询张三的语文成绩
学习带条件的连接查询
4、查询英语60分以上的学生
学习带条件的连接查询
5、查询张三的总分
学习带条件的连接查询
6、增加一个学生赵哈哈,性别女,班级三班
学习添加数据
7、修改李四的语文成绩为100分
学习修改数据
8、删除王五的英语成绩
学习删除数据

三、用到的语法

1、SELECT 语句 用来查询满足条件的记录

语法:SELECT column_name,column_name FROM table_name;SELECT * FROM table_name;

2、INSERT INTO 语句 用来插入一条记录
语法:INSERT INTO 语句可以有两种编写形式。
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:

INSERT INTO table_name VALUES (value1,value2,value3,...);

第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);

3、UPDATE 语句 UPDATE 语句用于更新表中已存在的记录。

语法:UPDATE table_name  SET column1=value1,column2=value2,...
WHERE some_column=some_value;

4、DELETE 语句 DELETE 语句用于删除表中的行。

DELETE FROM table_name WHERE some_column=some_value;

5、还有一个高级的用法 INNER JOIN 内连接 INNER JOIN 关键字在表中存在至少一个匹配时返回行。
SQL INNER JOIN 语法

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;

或:

SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;

注释:INNER JOIN 与 JOIN 是相同的。ON 是两张表通过什么字段来关联

四、开始我们的学习

1、首先看第一题,查询性别为男的学生,这个就比较简单了,我们只要查询一张表中满足条件的记录就行了,只用到了select语句

SELECT * FROM student WHERE sex="男";

查询结果为:
超级简单的sql入门(一)
2、第二题,查询张三的性别,这个也很简单,就一个select搞定,只不过查询结果是线上性别这个字段了

SELECT sex FROM student WHERE name="张三";

查询结果为:
超级简单的sql入门(一)
3、第三题,查询张三的语文成绩,这个就要通过两张表来查询了,有两种方式,一种方式是嵌套查询,先查询出张三的id,然后作为条件在成绩表中进行查询,第二中就是通过表连接来查询了,但是为了性能,和优雅方面考虑,比较推荐表连接这种方式
第一种方式:

SELECT
	fraction 
FROM
	achievement 
WHERE
	student_id = ( SELECT id FROM student WHERE NAME = "张三" ) 
	AND class = "语文";

第二种方式:

SELECT
	cj.fraction 
FROM
	student st
	INNER JOIN achievement cj ON cj.student_id = st.id 
WHERE
	st.NAME = "张三" 
	AND cj.class = "语文";

注释:cj和st 是我给这两张表起的别名,使用表名空格别名的方式来起别名
他们的查询结果是相同的:
超级简单的sql入门(一)
4、第四题,查询英语60分以上的学生,其实和第三题差不多,我就用表连接的方式来写了

SELECT
	* 
FROM
	student st
	INNER JOIN achievement cj ON cj.student_id = st.id 
WHERE
	cj.class = "英语" 
	AND cj.fraction >= 60;

结果为:
超级简单的sql入门(一)
5、第五题,查询张三的总分,这个比上面多了一个函数,SUM,sql中有很多内置的函数可以用,而这个函数是用来求和的
查询:

SELECT
	SUM( cj.fraction ) 
FROM
	student st
	INNER JOIN achievement cj ON cj.student_id = st.id 
WHERE
	NAME = "张三";

结果为:
超级简单的sql入门(一)

6、第六题,增加一个学生赵哈哈,性别女,班级三班,这个我们就要用到insert语句了
查询:

INSERT INTO student (id,`name`,sex,stu_class) VALUES (10,"赵哈哈","女","三班");

结果:
超级简单的sql入门(一)
显示这个就是执行成功了
我们看看数据插进去了没有
超级简单的sql入门(一)
7、第七题,修改李四的语文成绩为100分,这个就要同时使用update语句和表连接语句了

UPDATE achievement cj
INNER JOIN student st ON cj.student_id = st.id 
SET cj.fraction = 100 
WHERE
	st.NAME = "李四" 
	AND cj.class = "语文"

结果为:
超级简单的sql入门(一)
超级简单的sql入门(一)
8、第八题删除王五的英语成绩,这个需要使用delete语法啦
查询:

DELETE 
FROM
	achievement 
WHERE
	student_id IN ( SELECT id FROM student WHERE NAME = "王五" ) 
	AND achievement.class = "英语";

结果:超级简单的sql入门(一)

好啦到这里我们增删改查全部学会啦,快去试试吧!

本文地址:https://blog.csdn.net/weixin_41853064/article/details/109000277