目录
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子句
小结:
练习:
INSERT语句用于将一行或多行数据添加到表中,有4种语法形式。
使用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');
说明:插入多行数据时,在多行数据之间用逗号分隔,同时每行数据需要用圆括号括起来。
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;
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
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直接插入新行。
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';
DELETE语句用于从表中删除一行或多行数据,其基本语法格式如下:
DELETE FROM table_name
[ WHERE where_condition ]
注意:DELETE语句是删除表中的数据,而不是删除表的结构(DROP)。
TRUNCATE TABLE语句用于删除表中的所有记录,其基本语法格式如下:
TRUNCATE TABLE table_name
注意:
(1)使用 TRUNCATE 时需要小心,因为它会立即且不可恢复地删除表中的所有数据。
(2)与 DELETE 不同,TRUNCATE 不会触发与表相关的 DELETE 触发器。
(3)TRUNCATE 操作会重置任何自增 (AUTO_INCREMENT) 列的计数器到其初始值。
【例8】删除teacher表中的全部记录,但保留数据表结构。