MySQL-笔记-05.数据更新与单表查询

为了增加查询结果的可读性,可以通过指定列别名的方式改变查询结果的列标题列别名改变的只是查询结果的列标题,并没有改变数据表中的列名。【例12】查询 student表中全部学生的姓名和性别。要求用汉字作为列标题,且去掉重名的学生。SELECT DISTINCT sname AS 姓名, ssex 性别。
摘要由CSDN通过智能技术生成

目录

5.1 插入数据

1. INSERT … VALUES语句

2. INSERT … SET语句

3. INSERT … SELECT语句

4. REPLACE语句

5.2 更新数据

5.3 删除数据

(1)DELETE语句

(2)TRUNCATE TABLE语句。

5.4 单表查询

01 选择表中的若干列

(1)查询指定列

(2)查询全部列

(3)定义列别名

 (4)查询计算列值

02 选择表中的若干元组

(1)消除重复行

(2)查询满足条件的元组

(A) 比较运算

(B) 多重条件

(C) 确定范围运算

(D) 确定集合运算

(E) 模式匹配运算

1)匹配串为固定字符串

2)匹配串为含通配符的字符串。

3)使用换码字符将通配符转义为普通字符。

4)使用正则表达式

(F) 空值比较运算

(3)限制结果集的行数

03 ORDER BY子句

04 聚集函数

05 GROUP BY子句

小结:

练习:


5.1 插入数据

INSERT语句用于将一行或多行数据添加到表中,有4种语法形式。

1. INSERT … VALUES语句

        使用INSERT … VALUES语句添加数据的基本语法格式如下:

INSERT [ INTO ] table_name [ ( column_list ) ]
{ VALUES | VALUE } ( { expr | DEFAULT } ,… ) , ( … ) ,… 

 【例1】插入一行数据:向学生表student中插入一行记录

INSERT INTO student (sno, sname, ssex, sbirthday, stel, clsno) 
   VALUES('202001020304','张丽丽','女','2002-8-8', '13212348765','2020010203'); 	/*指定列名*/ 
INSERT INTO student  
   VALUES('202001020304','张丽丽','女','2002-8-8', '13212348765','2020010203');	/*不指定列名*/ 

说明:上面的第一条SQL语句指定了插入列的列名,指定列名后只要列名和VALUES后面的值对应就可以了。

第二条SQL语句表名student后面没有指定列名,VALUES后面的值要和表中的列对应,列的顺序是创建表时的顺序。 


【例2】插入多行记录:向学生表student中插入三行记录。

INSERT INTO student VALUES
('202001020301', '刘林', '男', '2002-02-28', '13312345785', '2020010203'),
('202001020302', '李伟明', '男', '2003-04-09', '13912123365', '2020010203'),
('202001020303', '孙宏明', '男', '2002-12-24', '13812123536', '2020010203');

说明:插入多行数据时,在多行数据之间用逗号分隔,同时每行数据需要用圆括号括起来。

2. INSERT … SET语句

INSERT … SET语句可以为表中指定列添加数据,其基本语法格式如下:

INSERT [ INTO ] table_name
SET column_name = { expr | DEFAULT } , …  

【例3】向课程表course中插入一门课程,其中课程编号为“01013”,课程名称为“面向对象程序设计”,学分为4。

INSERT INTO student course(cno, cname, ccredit) 
values('01013', '面向对象程序设计',4);
INSERT INTO course
SET cno='01013', cname='面向对象程序设计', ccredit=4;

3. INSERT … SELECT语句

        INSERT … SELECT语句可以将SELECT语句查询出的结果集插入到INSERT后指定的表中,其基本语法格式如下:

INSERT [ INTO ] table_name [ ( column_list ) ]
SELECT …

说明:

①    表名后的column_list可以指定列名,也可以不指定列名;

②    SELECT子句中挑选的列的个数、顺序要和column_list的列的数、顺序一致,如果表名后没有指定列名,则和表中的列的个数、顺序一致。


【例4】向student_backup表插入学生表student中班级为“2020010203”的学生数据。

INSERT INTO student_backup
SELECT * FROM student WHERE clsno='2020010203';。
UPDATE student

4. REPLACE语句

REPLACE 语句的语法格式如下:

REPLACE [INTO] tbl_name [(column_list)]
VALUES (value_list)
| SET col_name1=value1, col_name2=value2, …
| SELECT …

说明:

(1)    REPLACE 语句是MySQL对SQL 标准的扩展,或者插入数据,或者先删除再插入数据。

(2) 使用REPLACE语句添加记录时,如果要添加的新记录的主键或UNIQUE约束的字存在于表中,则需删除已有记录后再添加新纪录。

(3) 只有当表具有主键或唯一索引时,REPLACE 才有意义。否则,它将等效于INSERT,因为没有用于确定新行是否与另一行重复的索引。


【例5】使用REPLACE语句向学生表student中插入2行记录。

REPLACE INTO student VALUES
('202001020301', '刘林林', '男', '2003-02-28', '13312345785', '2020010203'),
('202001020305', '张三峰', '男', '2003-03-08', '17186450607', '2020010203’);

说明:

执行语句后,可以看到由于学号为“202001020301”的学生之前在表中已经存在,MySQL先删除原来的记录再插入新的记录,学号为“202001020305”的学生不存在,所以MySQL直接插入新行。

5.2 更新数据

UPDATE语句用于修改更新表中的数据,其基本语法格式如下:

UPDATE table_name
SET column_name1 = { expr1 | DEFAULT } [ , column_name2 = { expr2 | DEFAULT }] …
[ WHERE where_condition ]

 【例6】将student表中学号为202301010104的同学的班级改为'0102'。

UPDATE student 
   SET clsno= '0102'
   WHERE sno='202301010104';

【例7】将teacher表中工号为01003的老师的职称改为“副教授”,所在专业改为“0103”。

UPDATE teacher 
   SET tprof='副教授', mno='0103'
   WHERE tno='01003';

5.3 删除数据

(1)DELETE语句

        DELETE语句用于从表中删除一行或多行数据,其基本语法格式如下:

DELETE FROM table_name
[ WHERE where_condition ]

 注意:DELETE语句是删除表中的数据,而不是删除表的结构(DROP)。

(2)TRUNCATE TABLE语句。

        TRUNCATE TABLE语句用于删除表中的所有记录,其基本语法格式如下:

TRUNCATE TABLE table_name

注意:

(1)使用 TRUNCATE 时需要小心,因为它会立即且不可恢复地删除表中的所有数据。

(2)与 DELETE 不同,TRUNCATE 不会触发与表相关的 DELETE 触发器。

(3)TRUNCATE 操作会重置任何自增 (AUTO_INCREMENT) 列的计数器到其初始值。


【例8】删除teacher表中的全部记录,但保留数据表结构。


                
  • 19
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

利威尔·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值