数据库-表的增删查改

新增(Create)

-- 创建一张学生表
DROP TABLE IF EXISTS student;
CREATE TABLE student (
 id INT,
 sn INT comment '学号',
 name VARCHAR(20) comment '姓名',
 qq_mail VARCHAR(20) comment 'QQ邮箱'
);
  • 单行数据全列插入
-- 插入两条记录,value_list 数量必须和定义表的列的数量及顺序一致
INSERT INTO student VALUES (100, 10000, '唐三藏', NULL);
INSERT INTO student VALUES (101, 10001, '孙悟空', '11111');
  • 多行数据 指定列插入
-- 插入两条记录,value_list 数量必须和指定列数量及顺序一致
INSERT INTO student (id, sn, name) VALUES
(102, 20001, '曹孟德'),
(103, 20002, '孙仲谋');

查询

  • 全列查询
-- 通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大;
-- 2. 可能会影响到索引的使用。(索引待后面课程讲解)
SELECT * FROM exam_result;
  • 指定列查询
-- 指定列的顺序不需要按定义表的顺序来
SELECT id, name, english FROM exam_result;
  • DISTINCT 去重
 - 去重结果
SELECT DISTINCT math FROM exam_result;
+--------+
| math |
+--------+
|   98 |
|   78 |
|   84 |
|   85 |
|   73 |
|   65 |
+--------+
6 rows in set (0.00 sec)
  • 排序ORDER BY
-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
SELECT name, qq_mail FROM student ORDER BY qq_mail;
SELECT name, qq_mail FROM student  ORDER BY qq_mail DESC;
  • 条件查询 WHERE
    1.BETWEEN DNA
  1. IN
  2. LIKE
    4.LIMIT 分页查询
SELECT name, english FROM exam_result WHERE english < 60;
SELECT * FROM exam_result WHERE chinese > 80 and english > 80;
SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90;
-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);
- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE '孙_';

分页查询

-- 从 0 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;
-- 从 s 开始,筛选 n 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;

修改(UPDATE)

-- 将孙悟空同学的数学成绩变更为 80 分
UPDATE exam_result SET math = 80 WHERE name = '孙悟空';

删除(DELETE)

-- 删除孙悟空同学的考试成绩
DELETE FROM exam_result WHERE name = '孙悟空';

版权声明:本文为weixin_43688527原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。