• Mysql学习之——增删改查语句


    Mysql的增删改查

    一、数据库操作

    1.查询所有数据库

    show databases;
    
    • 1

    2.使用某个数据库

    如果我已经通过show databases知道有a、b、c三个数据库,那我想用数据库a怎么办呢?

    use 数据库名;
    eg:use a;
    
    • 1
    • 2

    3.查询当前使用的数据库

    如果我不知道当前数据库,所以想知道这个数据库是哪一个,我该用什么语句呢?0

    select database();
    
    • 1

    4.创建数据库

    如果我没有这个数据库,我现在想创建这个database,可以使用:

    create database[if not exists] 数据库名 [default charset 字符集][collate 排序规则];
    
    • 1

    最常见的应用就是,如果一个数据库a不存在,则创建这个数据库,且设置字符集为utf8:

    create database a if not exists charset=utf8
    
    • 1

    5.删除数据库

    等到一系列操作做完之后,我想删除这个数据库a,要用什么操作?

    drop database [if exists] 数据库名 ;
    eg:drop database if exists a;
    
    • 1
    • 2

    二、表操作

    2.1 表的增删改操作

    假如我们通过

    ·create database if not exists a charset=utf8;#创建数据库a
    ·use a;#使用数据库a
    ·select database;#查看当前使用的数据库,确认是在使用数据库a
    
    • 1
    • 2
    • 3

    通过这些操作我们已经创建了一个数据库a,并且在当前数据库了。

    但里面还没有表格什么的,没有表格算什么数据库?所以我肯定想创建表,查询表、修改表,删除表。

    那接下来就一一看看这些操作吧!

    1.创建表格

    create table 表名(
    	字段 字段类型 COMMENT 字段注释,
    	字段 字段类型 COMMENT 字段注释,
    	字段 字段类型 COMMENT 字段注释
    )[COMMENT 表注释];
    
    eg:create table Person(
    	name char(20)    comment '姓名',
    	sex    char(2)   comment '性别',
    	age    int       comment '年龄'
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    ps:最后一个字段不要逗号,且上述代码中用[]框起来的表示可以有也可以没有,但[]这个符号使用的时候不要加上去哦。

    2.修改表格

    1)添加字段
    如果最开始没有加字段什么的,我现在想增加字段怎么办呢?

    ALTER TABLE 表名 ADD 字段名 字段类型 【comment 字段注释】【约束】
    
    eg:alter table a add nickname varchar(20) comment ‘昵称’;
    
    • 1
    • 2
    • 3

    2)修改字段类型(modify )
    如果数据库 a中的表Person中的字段name我想修改一下字段类型,改为varchar(20),可以使用以下操作:

    alter table 表名 modify 字段名 新字段类型(长度)
    
    • 1

    3)修改字段名和字段类型(change)
    如果这个表中的某个字段名字和类型都不对,那么我们就直接change一下:

    alter table 表名 change 旧字段名 新字段名 新字段类型 新字段类型 [comment 注释][约束];
    eg:ALTER TABLE Person CHANGE name studentname VARCHAR(20) COMMENT ' 学生姓名';
    
    • 1
    • 2

    PS:数据库不区分大小写,缺失有有点乱哈!

    4)删除字段
    如果这个字段我不想用呢?我如果想要删除该怎么做呢?

    ALTER TABLE 表名 DROP 字段名;
    
    eg:ALTER TABLE Person DROP name;
    
    • 1
    • 2
    • 3

    3.删除表格

    最后表格不想要了,怎么删除表格呢?

    DROP TABLE [IF EXISTS] 表名;
    eg: DROP TABLE  IF EXISTES Person;
    
    • 1
    • 2

    三 数据操作(DML)

    如果我有了数据库,数据库中有表格,那么怎么操作数据库中的数据呢?想要增加数据,修改数据吗,删除数据,以及最最最重要的查询数据(又tm给我去看视频,学习啊,去给我学习啊!)

    3.1 添加数据(INSERT)

    给某几个字段添加数据(没有添加的自然就是null了)

    INSERT INTO 表名 (字段1,字段2,...)VALUES	(value1,value2,...);
    
    • 1

    给所有字段添加数据

    INSERT INTO 表名 VALUES(value1,value2,...);
    
    • 1

    批量添加数据
    INSERT INTO 表名 (字段1,字段2,…)VALUES (value1,value2,…),
    (value1,value2,…),

    (value1,value2,…) ;

    3.2 修改数据(UPDATE)

    更新某些字段的信息

    UPDATE 表名 SET 字段1=value1,字段2=value2,字段3=value3 where 条件;
    
    • 1

    这个其实已经涉及到查询了,where,where玩的花了我现在还真是把握不住啊!

    3.3 删除数据(DELETE)

    删除指定数据:

    DELETE FROM 表名 WHERE 条件;
    
    • 1

    删除所有数据

    DELETE FROM 表名;
    
    • 1

    还有一个删除所有数据的但是要慎用的:

    TRUNCATE TABLE 表名;
    
    • 1

    我猜TRUNCATE 还可以TRUNCATE DATABASE 数据库名;

    3.4 查询数据(SELECT)

    大招来了大招了,查询数据,查询数据的时候条件是非常复杂的。
    大概可以分解成

    SELECT
    	字段列表
    FROM
    	表名称
    WHERE
    	条件列表
    GROUP BY
    	分组字段列表
    HAVING
    	分组后的条件列表
    ORDER BY
    	排序字段列表
    LIMIT
    	分页参数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    上面是最基础的,比较复杂的是设置一些别名

    SELECT 
    	字段1 [AS 别名1],字段2 [AS 别名2],...
    FROM
    	表名
    	;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    当然别名也可以直接写不用这个AS

    SELECT
    	字段1 [别名1],字段2 [ 别名2],...
    FROM
    	表名
    	;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    还有不准人家重复的用DISTINCT

    	SELECT
    		DISTINCT 字段列表
    	FROM
    		表名
    	;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ps:这个DISTINCT后面还要继续学啊!他的用法可不像表面上那么简单。

    从我认为比较难的开始入手吧!

    一)条件列表

    条件列表我觉得最难的就是很多,但是可以分类记忆,比如在数值和字符串是最长使用的,那我们就按照最长使用的来搞。

    1)数值类

    数值最常见的就是大于 小于 大于等于 小于等于 在什么范围内啊!
    再复杂一点就是数值的函数值大于 小于 等于 大于等于 小于等于 在什么范围内啊!
    先看最常见的大于 小于 等于 大于等于 小于等于(我好啰嗦啊哈哈哈)
    大于小于等于就是常用的那些符号啊!不用记了,不一样的是不等于,在什么连续范围内,在离散范围内,为空,在模糊范围内

    比较运算符功能备注示例
    !=或<>不等于得认识<>,用的时候可以常用!=SELECT * FROM Person WHERE name<>‘张三’;
    BETWEEN AND在连续范围[A,B]内包括边界SELECT * FROM Person WHERE age BETWEEN 20 AND 30;
    IN(…)在列举的这些值内这个可以用数字,但应该是IN(另一个表的筛选结果)当然筛选结果只能有一个字段SELECT * FROM Person WHERE name IN (‘张三’,‘李四’,‘王五’);
    IS NULL为空那不得学一下哪些字段可以设为NULLSELECT* FROM Person WHERE sex IS NULL;
    like 占位符模糊匹配(_匹配单个字符,%匹配任意个字符,[]是正则化花表达式)找出名字中第一个字是刘的:SELECT * FROM Person WHERE name like ‘刘%’;找出名字是x薇薇的:SELECT * FROM Person WHERE name like ‘_薇薇’;
    逻辑运算符功能备注示例
    AND &&与运算SELECT * FROM Person WHERE 条件1 AND 条件2;
    OR或运算
    NOT !非运算

    关于模糊查询中用到正则化表达式的可以先看看这个:https://blog.csdn.net/fanzhi16/article/details/88287745?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169398882416800211537103%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=169398882416800211537103&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-88287745-null-null.142v93control&utm_term=%E6%95%B0%E6%8D%AE%E5%BA%93%E6%A8%A1%E7%B3%8A%E5%8C%B9%E9%85%8D&spm=1018.2226.3001.4187

    欸,怎么看下来好像不止用了数值的东西啊。

    2)数值的函数类(聚合函数 and 普通函数)
    函数功能备注示例
    COUNT统计数量查询年龄为20的人数:SELECT COUNT(id) FROM Person WHERE
    MAX最大值
    MIN最小值
    AVG平均值
    SUM求和

    上面这个是聚合函数,聚合函数是针对每一列的,对一个字段进行聚合,但是如果我们想求几个字段的平均值我们可以直接用加号。
    比如有一张学生表Student (学生姓名,语文成绩,数学成绩),查询平均成绩大于60分的所有学生。

    SELECT *,(语文成绩+数学成绩)/2 AVRAGE_SCORE FROM Student;
    
    • 1

    二)分组查询(GROUP BY)

    SELECT * FROM 表名 WHERE 条件字段 GROUP BY 分组字段 HAVING 分组后的条件字段;
    
    • 1

    分组字段我觉得用的时候可以拿一个例子来思考一下就出来的。
    比如STUDENT表数据长这样:

    	张三 男 20
    	李四 女 15
    	张武 男 27
    	李六 女 18
    
    • 1
    • 2
    • 3
    • 4

    那如果用

    SELECT GENDER,(男表或女表的聚合函数) FROM STUDENT GROUP BY gender;
    
    • 1

    就可以分成男表和女表;

    男表是:
    	张三 男 20
    	张武 男 27
    女表是:
    	李四 女 15
    	李六 女 18
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意:GROUP BY 前面的SELECT一定要包含分组字段或者分组字段的聚合函数,没有办法把所有的字段(原表的所有字段)都显示出来。

    三)排序查询(ORDER BY)

    排序查询只需要记住ASC(默认)和DESC(降序非默认)

    SELECT * FROM emp ORDER BY 字段1 排序方式1 ,字段2 排序方式2...;
    
    • 1

    只有当第一个字段的排序一致的时候才会按第二个字段的排序方式进行排序

    四) 分页查询 (LIMIT)

    SELECT * FROM emp LIMIT 	起始索引,结束索引;
    
    • 1

    ps:如果其实索引为0,也可以直接

    SELECT * FROM emp LIMIT 查询条数;  #就可以查询到前10条了。
    
    • 1
  • 相关阅读:
    【爬虫与破解】CSDN存在刷粉方式吗?
    【笔记】电商RFM模型
    花5分钟写个 grpc 微服务架构吧
    css案例14——文字渐变
    C语言结构体(struct)一些常见问题 ⎛⎝≥⏝⏝≤⎛⎝
    minikube helm 安装 jenkins
    为什么 NGINX 的 reload 命令不是热加载?
    【PS小贴士】项目需求汇总——WBS Grouping
    怎么使用 Flink 向 Apache Doris 表中写 Bitmap 类型的数据
    科技云报道:历经四年,RPA走向同质化?
  • 原文地址:https://blog.csdn.net/qq_42477169/article/details/132708637