MySQL表的增删改查

本文详细介绍了MySQL中表的增删改查操作,包括创建与插入记录、全列与指定列查询、更新记录和删除记录。讨论了如何使用INSERT语句进行数据插入,使用SELECT语句进行查询,包括全列、指定列、去重、统计、排序、条件筛选和分页。还探讨了UPDATE和DELETE语句在更新和删除记录时的注意事项,强调了WHERE子句的重要性和LIMIT在分页查询中的应用。

MySQL表的增删改查

  • CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。
  • 表的操作,是以一套记录为基本单位;
  • 增、删只能是以一条记录为基本单位。

1. 新增(Create / Insert)

  • 单引号、双引号====》用在数据记录中字符串、日期时间;
  • 反引号====》用在结构中库名、表名、字段名 ;
  • 只要小心避开使用关键字作为库名、表面、字段名,就可以完全不使用反引号。

1.1 插入 - 建表

-- 建表--》学生表  使用界面就可以
CREATE TABLE `db_11_20`.`students` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `sn` INT NOT NULL COMMENT '学号',
  `name` VARCHAR(45) NOT NULL,
  `email` VARCHAR(200) NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `sn_UNIQUE` (`sn` ASC));

1.2 单行数据 + 全列插入

  • 一次插入一行,并且插入的数据中包含所有字段的数据;

  • 由于插入的是全字段,所以SQL中可以省略字段部分;

  • 后边插入的值的顺序必须要和表结构中的顺序一样.

  • -- id,sn, name,email
    INSERT INTO students VALUES (100, 10000, '唐三藏', NULL);
    -- 由于id是主键,sn是唯一键,所以这两个的字段不能重复
    INSERT INTO students VALUES (101, 10001, '孙悟空', '11111');
    

1.3 单行数据 + 指定列插入

  • 一次插入一行,指定列的插入;

  • id(自增,视为有默认值); sn name(没有默认值); email(允许为NULL 视为有默认值,就是NULL);所以sn,name 在插入时必须有值;

  • INSERT INTO students (sn, name) VALUES (20001, '赤脚大仙');
    -- 指定字段的顺序,不要求建表的顺序有关
    -- 字段的顺序和传入值的顺序一致即可
    INSERT INTO students ( name, sn) VALUES ('牛脚大仙',20003);
    

1.4 多行数据 + 全列插入

  • INSERT INTO students VALUES
    		(204, 30001, '贾宝玉', 'jby@qq.com'),	-- 一条记录
    		(205, 30002, '林黛玉', NULL),	-- 一条记录
    		(206, 30003, '薛宝钗', NULL);	-- 一条记录
    

1.5 多行数据 + 指定列插入

  • INSERT INTO students (sn, name,email) VALUES
    		(40001,'宋江','s@qq.com'),
            (40002,'王英','w@qq.com');
    

2. 查询(Retrieve)

  • 检索功能是DBMS中最核心的功能;DBMS 查询/检索 背后的原理是 关系代数;
  • 在这里插入图片描述

2.1 查询 - 建表

  • -- 创建考试成绩表
    DROP TABLE IF EXISTS exam_result;
    CREATE TABLE exam_result (
     id INT,
     name VARCHAR(20),
     chinese DECIMAL(3,1),
     math DECIMAL(3,1),
     english DECIMAL(3,1)
    );
    -- 插入测试数据
    INSERT INTO exam_result (id,name, chinese, math, english) VALUES
     (1,'唐三藏', 67, 98, 56),
     (2,'孙悟空', 87, 78, 77),
     (3,'猪悟能', 88, 98, 90),
     (4,'曹孟德', 82, 84, 67),
     (5,'刘玄德', 55, 85, 45),
     (6,'孙权',   70, 73, 78),
     (7,'宋公明', 75, 65, 30);
    

2.2 全列查询

  • 代表是所有字段 顺序按照建表的顺序给出;

  • 没有给出WHERE条件,代表什么数据都显示;

  • 不推荐直接用,有缺点:

    • 会展示所有的字段,实践中往往只需要查询需要的字段,性能比较好;
    • 没有WHERE条件,当一张表有千万条记录时,会导致查询特别慢,可能会卡死;
  • SELECT * FROM exam_result;
    

2.3 指定列查询

  • 指定列的顺序不需要按定义表的顺序来;

  • SELECT id, name, english FROM exam_result;
    

2.4 查询字段为表达式

  • 实际上,SELECT后的投影可以是任意表达式;

  • 表达式中可以有字段的参与,也可以没有

  • -- 表达式不包含字段
    -- 一共有多少条记录
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值