MYSQL学习路线(3)

数据更新:

数据更新操作三种:向表中添加若干行数据、修改表中的数据和删除表中的若干行数据。

1、插入数据

SQL的数据插入语句INSERT通常有两种形式,一种是插入一个元组,另一种是插入子查询结果。后者可以一次插入多个元组。

插入元组:

INSERT
INTO <表名>[(<属性1>[,<属性2>]...)]
VALUES(<常量1>[,<常量2>]...);

如果INTO子句中没有指明任何属性列名,则插入的元组必须在每个属性列上均有值。VALUES子句对新元组的各属性赋值,字符串常数要用单引号(英文符号)括起来。

/*将一个新学生元组(学号:201915128,姓名:陈东,性别:男,所在系:IS,年龄:18岁)插入到Student表中*/
INSERT
INTO Student(Sno,Sname,Ssex,Sdept,Sage)
VALUES ('201915128','陈东','男','IS',18);

问题:将学生薛仁贵的信息插入到Student表中。

INSERT
INTO Student
VALUES('201903040','薛仁贵','男',18,'CS');

在INTO子句中只指定了表名,没有指出属性名。这表示新元组要在表的所有属性列上都指定值,属性列的次序与CREATE TABLE中的次序相同。

问题:插入一条选课记录

INSERT
INTO SC(Sno,Cno)
VALUES('201908076','1');

关系数据库管理系统将在新插入记录的Grade列上自动地赋空值。

插入子查询结果:

格式:

INSERT
INTO<表名>[(<属性列1>[,<属性列2>]...)]
子查询

问题:对每一个系,求学生的平均年龄,并把结果存入数据库

/*首先在数据库中建立一个新表,其中一列存放系名,另一列存放学生平均年龄*/
CREATE TABLE Dept_age
        (Sdept CHAR(15)
         Avg_age SMALLINT);

/*然后对Student表按系分组求平均年龄,再把系名和平均年龄存入新表中*/
INSERT
INTO Dept_age(Sdept,Avg_age)
SELECT Sdept,AVG(Sage)
FROM Student
GROUP BY Sdept;

2、修改数据

  格式:

UPDATE <表名>
SET <列名><表达式>[,<列名><表达式>]...
[WHERE <条件>];

其功能是修改指定表中满足WHERE子句条件的元组。其中SET子句给出<表达式>的值用于取代相应的属性列值。如果省略WHERE子句 ,则表示要修改表中的所有元组。

/*修改某一个元组的值*/
/*将学生201215121的年龄改为22岁*/
UPDATE Student
SET Sage=22
WHERE Sno='201215121';

/*修改多个元组的值*/
/*将所有的学生的年龄增加上1岁*/
UPDATE Student
SET Sage=Sage+1;

/*带子查询的修改语句*/
/*将计算机科学系全体学生的成绩置零*/
UPDATE SC
SET Grade=0
WHERE Sno IN
    (SELECT Sno
     FROM Student
     WHERE Sdept='CS');

3、删除数据

格式:

DELETE
FROM <表名>
[WHERE <条件>]

DELETE语句的功能是从指定表中删除满足WHERE字句条件的所有元组。如果省略WHERE子句则表示删除表中全部元组,但表的定义仍在字典中。也就是说,DELETE语句删除的是表中的数据,而不是关于表的定义。

/*删除学号为201903832的学生记录*/
DELETE
FROM Student
WHERE Sno='201903832';

/*删除所有学生的选课记录*/
DELETE
FROM SC;

/*删除计算机科学系所有学生的选课信息*/
DELETE
FROM SC
WHERE Sno IN
    (SELETE Sno
     FROM Student
     WHERE Sdept='CS');

空值处理

所谓空值就是“不知道”或“不存在”或“无意义”的值。SQL语言中允许某些元组的某些属性在一定情况下取空值。一般有以下几种情况:

  1. 该属性应该有一个值,但目前不知道它的具体值。
  2. 该属性不应该有值。
  3. 由于某种原因不便于填写。如用户电话。

控制的判断

判断一个属性的值是否为空值,用IS NULL或IS NOT NULL来表示。

/*从Student表中找出漏填了数据的学生信息*/
SELECT *
FROM Student
WHERE Sname IS NULL OR Ssex IS NULL OR Sage IS NULL OR Sdept IS NULL;

空值的约束条件

  1. 属性定义中有NOT NULL约束条件的不能取空值。
  2. 加了UNIQUE限制的属性不能取空值。
  3. 码属性不能取空值

空值的算术运算、比较运算和逻辑运算

  1. 空值与另一个值(包括另一个空值)的算数运算的结果都为空值
  2. 空值与另一个值(包括另一个空值)的比较运算的结果为UNKNOWN
  3. 在查询语句中,只有使WHERE和HAVING子句中的选择条件为TRUE的元组才被选出作为输出结果。

------>>>视图《MYSQL学习路线(4)》

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL学习路线可以分为三个阶段:基础阶段、优化阶段和部署阶段。在基础阶段,你需要学习MySQL数据库的基本操作,包括增删改查,以及一些高级操作如视图、触发器、函数和存储过程等。[1]在优化阶段,你需要学习如何提高数据库的效率,比如学习索引、分表等技术,以提升数据库的性能和响应速度。而在部署阶段,你需要学习如何搭建真实的环境系统,比如学习服务器集群、负载均衡等技术,以确保数据库的可用性和可靠性。 此外,对于初学者来说,推荐一本适合入门的书籍《sql基础教程》是很有帮助的。这本书相对容易理解,特别适合零基础的朋友学习。初学者入门只需要掌握一本书的知识就足够了,而不需要一下子读很多本书。重要的是让初学者能够理解并掌握基本概念和技能。 综上所述,MySQL学习路线包括基础阶段、优化阶段和部署阶段。在学习过程中,推荐使用《sql基础教程》这本书作为入门指南。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MySQL(一)](https://blog.csdn.net/feijiges/article/details/77412824)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MySQL数据库学习路线汇总整理全集(附详细的学习路线介绍图)](https://blog.csdn.net/mysql012/article/details/104138150)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值