• mysql学习笔记--单张表上的增删改查


    注:学习的是这位姐姐的博客https://blog.csdn.net/shine_a?type=blog

    一,sql和mysql的区别

    SQL是为操作数据库而开发的一种语言。它可以对数据库里的表进行操作,比如修改数据,查找数据。

    比如下面这个就是SQL语句

    --增
    INSERT  INTO  <表名> (字段名)VALUES (值);
    --删
    DELETE  FROM  <表名>  WHERE  <筛选条件>;
    --改
    UPDATE  <表名>  SET <字段名=值>  WHERE  <筛选条件>;
    --查
    SELECT  <字段名>  FROM  <表名>  WHERE  <筛选条件>;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    MySQL是用来管理数据库的计算机软件,这种软件还有Oracle、SQL Server等。

    二,安装mysql

    下载MySQL:

    https://dev.mysql.com/downloads/windows/installer/8.0.html

    打开上方网址,会出现下面界面,我们选择第一个 Windows (x86, 32-bit), MSI Installer 安装。

    安装Mysql会自带mysql workbench数据库图形化工具。

    请添加图片描述

    三,创建数据库,并创建一个新表

    -- 创建数据库
    CREATE database Xiyouji;
    -- 选择数据库
    USE Xiyouji;
    -- 创建人物表 Roles:
    CREATE TABLE Roles(
    Sid INT ,
    Sname VARCHAR(10),
    Sex VARCHAR(10)
    );
    -- 插入语句
    INSERT INTO Roles VALUES
    (1 , '猪八戒'  , '男'),
    (2 , '唐三藏'  , '男'),
    (3 , '孙悟空'  , '男'),
    (4 , '沙悟净'  , '男'),
    (5 , '白龙马'  , '男');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    请添加图片描述

    四,使用命令行访问数据库

    • SQL语句会忽略大小写,SELECT与select是一样的,为了结构清晰,所有SQL关键词都用大写表示。
    • SQL语句会忽略缩进和换行,完全是由分号 ; 分割。我们用缩进、换行等只是为了代码看着更美观,结构更清晰。
    连接数据库:mysql -u root -p
    显示现有数据库:show databases;
    选择数据库:use [数据库名]
    
    • 1
    • 2
    • 3

    请添加图片描述

    五,select语句

    SELECT语句用来从数据库选取数据,结果会被存储在结果集中。

    SELECT <字段名> FROM <表名>;
    
    • 1

    例如,我们从刚刚创建的“xiyouji”数据库中查找任务表“roles”的所有数据,

    1,select *

    --选择数据库
    USE xiyouji;
    --选择查找的表数据
    SELECT * FROM ROLES;
    
    • 1
    • 2
    • 3
    • 4

    请添加图片描述

    2,select 多个字段

    SELECT Sname,Sex FROM ROLES;
    
    • 1

    请添加图片描述

    3,select 多个字段

    这些字段可以不是表中现有的列名称,也可以是数学表达式、文本。我们用AS关键字设置列别名(AS可以省略)

    SELECT Sname as '姓名',Sex FROM ROLES;
    
    • 1

    请添加图片描述

    4,SELECT后面的字段,可以用DISTINCT 关键字,将数据去重。

     SELECT DISTINCT Sname FROM ROLES;
    
    • 1

    请添加图片描述

    六,where子句

    SELECT <字段名> FROM <表名> WHERE <筛选条件>;
    
    • 1

    1,比较运算符

    WHERE子句中,最常用到的就是比较运算符,包括大于(>)、小于(<)、等于(=)、大于等于(>=)、小于等于(<=)、不等于(!=或者<>)。要注意等于是一个等号而不是两个等号。

    SELECT * FROM ROLES WHERE Sname='孙悟空';
    
    • 1

    请添加图片描述

    2,AND,OR运算符

    如果AND和OR同时使用,要注意AND优先级高于OR,但最好加括号,更加清晰一些。

     SELECT * FROM ROLES WHERE Sname='孙悟空'OR Sname='沙悟净';
    
    • 1

    请添加图片描述

    3,IN运算符和NOT IN运算符

     SELECT * FROM ROLES WHERE Sname IN ('猪八戒','孙悟空');
    
    • 1

    请添加图片描述

    4,BETWEEN … AND运算符

    BETWEEN … AND区间是包含两端点的。

    SELECT * FROM ROLES WHERE Sid BETWEEN 2 AND 4;
    
    • 1

    请添加图片描述

    5,LIKE运算符和NOT LIKE运算符

    模糊匹配时,使用这个,需要配合两个通配符。

    %:匹配任意个字符
    _:匹配一个字符
    
    • 1
    • 2
    SELECT * FROM ROLES WHERE SNAME LIKE '%悟%';
    
    • 1

    请添加图片描述

    6,REGEXP正则表达式

    主要用来搜索字符串,比 LIKE 运算符适用场景要多一些。

    ^:开头
    $:结尾
    [abc]:包含abc
    [a-c]:包含a-c
    |:或
    
    • 1
    • 2
    • 3
    • 4
    • 5
    --查找姓名包含“宁”的学生
    WHERE Sname REGEXP '宁';
    --查找姓名是“宁”开头的学生
    WHERE Sname REGEXP '^宁';
    --查找姓名是“宁”结尾的学生
    WHERE Sname REGEXP '宁$';
    --查找姓名是“宁”或“拧“开头的学生
    WHERE Sname REGEXP '^[宁柠]';
    --查找学生编号Sid是2到5(包括2和5)的学生
    WHERE Sid REGEXP '[2-5]';
    --查找学生编号Sid是2到5或者7到9(包括2和5,7和9)的学生
    WHERE Sid REGEXP '[2-5]|[7-9]';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    包含悟字和马字的:

     SELECT * FROM ROLES WHERE SNAME REGEXP '[悟马]';
    
    • 1

    请添加图片描述

    7,IS NULL运算符和IS NOT NULL运算符

     SELECT * FROM ROLES WHERE SNAME IS NULL;
    
    • 1

    请添加图片描述

    七,ORDER BY 排序子句

    SELECT <字段名> FROM <表名> ORDER BY <字段名>;
    
    • 1

    不仅可以给数字排序还可以给文字排序,它的后面的字段名可以是列的名字,列的名字后面还可以加关键字。ASC是升序(默认),DESC是降序。

     SELECT * FROM ROLES WHERE SNAME REGEXP '[悟马]' ORDER BY  SID DESC;
    
    • 1

    请添加图片描述

    八,LIMIT子句用来限制返回记录的数量

    SELECT <字段名> FROM <表名> LIMIT <限制行数>;
    
    • 1

    1、取前几条记录

    我们可以通过 LIMIT n 取结果集中的前n条记录。

     SELECT * FROM ROLES LIMIT 3;
    
    • 1

    请添加图片描述

    2,跳过前几条记录

    可以通过 LIMIT m,n 跳过结果集中的前 m 条记录后的前 n 条记录。

    当我们想跳过前3条数据,直接取45两行时:

     SELECT * FROM ROLES LIMIT 3,2;
    
    • 1

    请添加图片描述

    九,INSERT插入语句

    INSERT  INTO  <表名> (列名)VALUES (值);
    
    • 1
    1,可以不指定列名,插入的值必须按现有的字段顺序完整插入。
    insert into roles values(9,'铁扇公主','女');
    
    • 1

    请添加图片描述

    2,可以指明列名,后面值的顺序,与列名的顺序是对应的就可以。
    insert into roles(Sid,Sname) values(10,'紫霞仙子');
    
    • 1

    请添加图片描述

    3、插入多行,多行数据用括号间逗号隔开就可以了。
     insert into roles values(11,'哪吒','男'),(12,'二郎神','男'),(14,'哮天犬','男');
    
    • 1

    请添加图片描述

    十,UPDATE更新语句

    UPDATE <表名> SET <字段名=值> WHERE <筛选条件>;
    
    • 1
     update roles set Sex='女' where Sname='哪吒';
    
    • 1

    请添加图片描述

    十一,DELETE删除语句

    DELETE FROM <表名> WHERE <筛选条件>;
    
    • 1
     DELETE FROM ROLES WHERE Sname='紫霞仙子';![请添加图片描述](https://img-blog.csdnimg.cn/f5a04ddf71fa4174a6d21ede9ba0ace7.png)
    
    
    • 1
    • 2

    请添加图片描述

  • 相关阅读:
    串口工具securecrt_SecureCRT配置交换机
    NodeJs版本过高无法启动Vue项目报错解决方法
    Avalonia常用小控件Menu
    Apache Echarts介绍与入门
    C# 如何判断字符串最后一位是不是逗号
    竣达技术 | 适用于”日月元”品牌UPS微信云监控卡
    Go和Java实现抽象工厂模式
    东方梅酒:梅见的新国饮故事
    Linux 命令使用笔记【sysctl】
    Maven Helper 安装使用
  • 原文地址:https://blog.csdn.net/weixin_42349568/article/details/125431833