侧边栏壁纸
博主头像
爱探索

行动起来,活在当下

  • 累计撰写 43 篇文章
  • 累计创建 12 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

mysql-操作表中数据DML

jelly
2024-07-31 / 0 评论 / 0 点赞 / 27 阅读 / 0 字

操作表中数据DML

一、添加数据

INSERT INTO 表名 VALUES(值1,值2,值N);

INSERT INTO [表名] VALUES(值1,值2,值N);


INSERT INTO STU(name,age,grade) VALUES('张三',18,100);
INSERT INTO STU(name,age,grade) VALUES('李四',18,100);
INSERT INTO STU(name,age,grade) VALUES('王五',18,100);

注:

  1. 字段必须与值 一一对应
  2. 注:如过没有写字段,只有值 那么会为所有的字段赋值,但是值必须与表中字段都需要一一对应;
  3. 除了数字其他数据类型必须使用引号括起来(单引号或双引号)

二、删除数据

1. 删除数据

DELETE FROM [表名] [WHERE 条件];


DELETE FROM STU WHERE name='王五';

注:

  1. 如果不加WHERE 条件会删除表中说有数据
  2. 删除所有数据时不建议使用。

2. 删除表中所有数据

  1. 第一种方式
    DELETE FROM [表名]; -- 不推荐
  2. 第二种方式
    TRUNCATE TABLE [表名]; -- 推荐

第一种方式删除表中数据,效率低。有多少记录就会执行多少次删除操作。

第二种方式删除表中数据,效率高。他会先删除表,然后再创建一个结构一样的表


DELETE FROM STU;--第一种

TRUNCATE TABLE STU;-- 第二种

三、修改数据

UPDATE [表名] SET [字段1]=[值1],[字段2]=[值2],[字段N]=[值N] [WHERR 条件];

注:如果不加任何条件,则会修改表中字段的说有记录


UPDATE STU SET grade=99,age=12 WHERE name='王五'; --将王五的grade改为99 age改为12

四、查询


SELECT 
    [字段1],[字段2],[字段3],[字段N] --如果时* 则查询所有       
FROM
    [表名]
WHERE
    [条件语句]
GROUP BY
    [分组条件]
HAVING
    [分组语句]
ORDER BY
    [排序语句]
LIMIT
    [分页限定]

1 .基础查询

-- 创建表
CREATE TABLE student(
    name varchar(20),
    age int,
    sex varchar(4),
    region varchar(30),
    math int,
    english int
    
);

-- 插入数据

INSERT INTO 
student(
  name,age,sex,region,math,english
) 
VALUES
    (
        "张三",20,'男',"北京",80,90
    ),
      (
        "刘亦菲",23,'女',"北京",70,80
    ),
      (
        "柳岩",26,'女',"深圳",90,60
    ),
      (
        "马云",21,'男',"成都",30,100
    ),
      (
        "马化腾",30,'男',"深圳",80,60
    ),
      (
        "盖伦",19,'男',"深圳",100,90
    ),
      (
        "艾克",26,'男',"德玛西亚",77,93
    ),
      (
        "亚索",25,'男',"德玛西亚",86,99
    );

下面操作使用到下面的表

1>. 多个字段的查询

SETECT [字段1],[字段1],[字段1],[字段1] FROM [表名];
+-----------+------+
| name | age |
+-----------+------+
| 张三 | 20 |
| 刘亦菲 | 23 |
| 柳岩 | 26 |
| 马云 | 21 |
| 马化腾 | 30 |
| 盖伦 | 19 |
| 艾克 | 26 |
| 亚索 | 25 |
+-----------+------+


SELECT name ,age FROM student;

2>. 去除重复

DISTINCT;


SELECT DISTINCT region FROM student;-- 查询表中region 并去除重复
+--------------+
| region       |
+--------------+
| 北京         |
| 深圳         |
| 成都         |
| 德玛西亚     |
+--------------+

3>计算列

  1. 一般可以使用四则运算计算一下列的值(一般只会进行数值类型的计算)
  2. IFNULL([表达式1],[表达式2])
    表达式1:那个字段需要判断是否为NULL;
    表达式2如果该字段为null后替换值;

-- 查询name math english 并计算math与english的和其中如果遇到NULL按0处理
SELECT name ,math,english,IFNULL(math,0)+IFNULL(english,0)FROM student;
+-----------+------+---------+----------------------------------+
| name      | math | english | IFNULL(math,0)+IFNULL(english,0) |
+-----------+------+---------+----------------------------------+
| 张三      |   80 |      90 |                              170 |
| 刘亦菲    |   70 |      80 |                              150 |
| 柳岩      |   90 |      60 |                              150 |
| 马云      |   30 |     100 |                              130 |
| 马化腾    |   80 |      60 |                              140 |
| 盖伦      |  100 |      90 |                              190 |
| 艾克      |   77 |      93 |                              170 |
| 亚索      |   86 |      99 |                              185 |
+-----------+------+---------+----------------------------------+

4>计算列 起别名 as:as也可以省略


-- 查询name math english 并计算math与english的和其中如果遇到NULL按0处理
SELECT 
name AS 姓名,math 数学,english 英语,IFNULL(math,0)+IFNULL(english,0) AS 总分 
 FROM 
 student;
+-----------+--------+--------+--------+
| 姓名      | 数学   | 英语   | 总分   |
+-----------+--------+--------+--------+
| 张三      |     80 |     90 |    170 |
| 刘亦菲    |     70 |     80 |    150 |
| 柳岩      |     90 |     60 |    150 |
| 马云      |     30 |    100 |    130 |
| 马化腾    |     80 |     60 |    140 |
| 盖伦      |    100 |     90 |    190 |
| 艾克      |     77 |     93 |    170 |
| 亚索      |     86 |     99 |    185 |
+-----------+--------+--------+--------+

2. 条件查询,分组查询

  1. WHERE 子句后面跟条件
  2. 运算符
    • 、< 、<= 、>= 、= 、<>

    • BETWEEN...AND

    • IN( 集合)

    • LIKE:模糊查询

    • 占位符:

      1. _:单个任意字符
      2. %:多个任意字符
    • IS NULL

    • and 或 &&

    • or 或 ||

    • not 或 !

示例:

-- 1. 查询年龄大于20岁

SELECT * FROM student WHERE age > 20;

-- 2. 查询年龄等于20

SELECT *FROM student WHERE age = 20;


-- 3. 查询年龄不等于20

SELECT * FROM student WHERE age != 20; 
--或
SELECT * FROM student WHERE age <> 20; 

-- 4. 查询年龄大于20小于等于30

SELECT * FROM student WHERE age >20 AND age <=30;
-- 或
SELECT * FROM student WHERE age >20 && age <=30;
-- 或
SELECT * FROM student WHERE age BETWEEN 21 AND 30; 

-- 5. 查询英语成绩为null

SELECT * FROM student WHERE english = NULL --这是不对的
SELECT * FROM student WHERE english IS NULL;

-- 6. 查询英语成绩不为null

SELECT * FROM student WHERE english IS NOT NULL;

-- 7. 查询姓马的人有哪些
SELECT * FROM student WHERE name LIKE '马%';

-- 8. 查询姓名是3个字的人

SELECT * FROM student WHERE name LIKE '___';

-- 9. 查询姓名中包含德字的人

SELECT *FROM student WHERE name LIKE "%德%";

0

评论区