Mysql之SQL语句基础1

 一、基本概念

            ——后续的内容将会记录作者在计科学习内容

  1. DB(数据库):存储数据的仓库,数据是有组织进行存储
  2. DBMS(数据库管理系统):操纵和管理数据库的大型软件
  3. SQL:操纵关系数据库的编程语言,是一套标准
  4. 有Mysql,Oracle,SQLSever,PostgreSQl 
  5. RDBMS(关系型数据库):建立在关系模型基础上,有多张相互连接的二维表组成的数据库

  特点:

  •  使用表存储数据,格式统一,便于维护
  •    使用sql语句操作,标准统一,使用方便

  SQL的通用语法:

  1.  SQL语句可以单行或者多行书写,以分号结尾
  2.    SQL语句可以使用空格/缩进来增强语句的可读性
  3.    Mysql数据库的SQL语句部分区分大小写,关键词建议使用大些
  4.    注释:单行注释--注释内容或#  ;多行注释/*  */

  SQL的分类:

  1. DDL:数据定义语言,定义数据对象(数据库,表字段)
  2. DML:数据操作语言,对数据库表中的数据进行增删改
  3. DQL:数据查询语句,查询数据库中表的记录
  4. DCL:数据控制语言,用来创建数据用户,控制DB的访问权限

 二、操作

  DDL操作:(所用软件DataGrip)

  • 查询:
    • 查询所有数据库:
      Show databases;
    • 查询当前数据库:
      Select database ();
    • 创建:
      Creat database [if not exists]数据库名 [default charset 字符集] [collate排序规则]
    • 删除:
      drop database[if exists]数据库名;
    • 使用:
      use 数据名;

 

  • DDL表操作——查询
    • 查询当前数据库所有的表:
      Show tables;
    • 查询表结构:
      desc 表名;
    • 查询指定表的建表语句:
      Show create table 表名;

      DDL——表操作——创建:

    • Create table 表名(
          字段1     字段1类型[comment 字段1注释],
           字段2     字段2类型[comment 字段2注释][comment 字段注释];

         字符串类型:

    • char(10):性能好
    • varchar(10):性能较差
    • 例如:用户名 user name varchar(50)
    • 例如:性别 gender char (1)
  • DDL——表操作——修改
    • 添加字段:
      Alter table 表名 add 字段名 类型(长度)[comment注释][约束]
    • 修改数据类型:
      Alter table 表名 modify 字段名 新数据类型(类型)
    • 修改字段名和字段类型:
      Alter table 表名 change 旧字段名 新字段名 类型(长度)[comment注释][约束]
    • 删除字段:
      Alter table 表名 drop 字段名;
    • 修改表名:
      Alter table 表名 rename to 新表名;
  • DDL表操作——删除
    • 删除表:
      drop table [if exsits]表名;
    • 删除指定表,并重新创建该表:
      truncate table 表名;

    DML:用来对数据库中表的数据记录进行增删改操作

  1. 给指定字段添加数据:
    Insert into 表名 (字段名1,字段名2...)Values(值1,值2...);
  2. 给全部字段添加数据:
    Insert into 表名 values(值1,值2...);
  3. 批量添加数据:
    Insert into 表名(字段名1,字段名2)values(值1,值2...),(值1,值2...);
    Insert into 表名  values(值1,值2...),(值1,值2...);
  • 注意:插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
    •   字符串和日期数据应该包含在引号内
    •       插入的数据大小,应该在字段的规定范围

    DML:修改数据

update 表名 set 字段名1=值1,字段名2=值2,...[where条件];

    删除数据: 

delete from 表名[where 条件];

     DQL:用来查询库中表的记录

  1. select字段列表 
  2. from表名列表
  3. where条件列表
  4. group by分组字段列表
  5. having分组后条件列表
  6. order by排序字段列表
  7. limit分页参数
  • 查询多个字段
    select 字段1,字段2...from 表名;
    select *from 表名;
  • 设置别名
    select 字段1 [As 别名1],字段1 [As 别名1]...from 表名;
  • 去除重复记录
    select distinct 字段列表 from 表名;
    > >= 
    < <=
    =
    <>或!=
    between...and在某个范围之内(含最小值,最大值)
    in(...)在in之后的列表中的值,多选一
    Like 占位符,模糊匹配(匹配单个字符,%匹配任意字符)
    : select * from 表名where name Like '%666'
    
    is Null是Null
    and或&&
    OR或||
    NOT或!

    聚合函数:将一列数据作为一个整体,进行纵向计算

  • 常见的聚合函数
    • count统计数量
    • max最大值
    • min最小值
    • avg平均值
    • sum求和
      select 聚合函数(字段列表) from 表名;
      select count(*) from employee;

      分组查询

    • 语法:
      select 字段列表 from 表名 [where条件] group by 分组字段名[having 分组后过滤条件];

      where与having区别

    • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组,而having 是分组后对结果进行过滤。
    • 判断条件不同:where不能对聚合函数进行判断,having可以
      1例如,根据性别分组,统计男性员工和女性员工的数量
      select gender count(*) from employment  group by gender;
      2例如,根据性别分组,统计男性员工和女性员工的平均年龄
      select gender avg(age) from employee  group by gender
      3例如,年龄小于45的员工,并根据工作地址分组,获取员工数大于等于3的工作地址
      select count(*) from employee where age<45 group by workdress having count(*)>=3

      注意:

    • 执行顺序:where>聚合函数>having
    • 分组之后,查询的字段一般为聚合函数和分组字段
    • 查询其他字段无任何意义

    DQL-排序查询

    1. 语法:
      select 字段列表 from 表名 order by 字段1 排序方式1,字段2,排序方式2;

       

    2. 排序方式:
      1. ASC:升序(默认值)
      2. DESC:降序
    3. 注意:如果是在多字段排序,当第一个字段值相同时,才会根据第二个字段进行排  例如:select * from employee order by age asc;
    4. DQL——分页查询

      1.  语法:
        select 字段列表 from 表名 limit 启始索引,查询记录数;

         

      2.    注意: 
        1.  启始索引从0开始,启始索引=(查询页码-1)*每页显示记录数
        2. 分页查询是数据库的方言,不同的数据库有不同的实现,如果查询的第一页数据,其实索引可以省略,直接简写limit 10

原文链接:https://www.cnblogs.com/wenhx0212/p/17245993.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql之SQL语句基础1 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • MySQL出现SQL Error (2013)连接错误的解决方法

    MySQL出现SQL Error (2013)连接错误是 MySQL 数据库连接失败的一种常见问题,通常是由于与 MySQL 数据库通信超时或者网络故障引起的。 解决这个问题的方法包括检查网络设置、调整 MySQL 配置、检查服务是否运行并且重启服务等多个步骤。 下面分步骤详细讲解“MySQL出现SQL Error (2013)连接错误的解决方法”: 第一步…

    MySQL 2023年5月18日
    00
  • 详解MySQL 慢查询

    下面我就详细讲解一下“详解MySQL慢查询”的完整攻略。 1. 慢查询(Slow Query)是什么 慢查询指的是执行耗时较长的查询语句,一般是指执行时间超过某个阀值的SQL语句。对于MySQL来说,默认情况下,执行时间超过10秒的查询被认为是慢查询。 2. MySQL慢查询日志开启 MySQL提供了慢查询日志功能,可以记录执行时间长的SQL语句,以帮助我们…

    MySQL 2023年5月19日
    00
  • MySQL日志的详细分析实例

    MySQL是常用的关系型数据库管理系统,它的日志对于数据库的运行、维护和问题排查都非常关键。本文将分享MySQL日志的详细分析实例,希望对学习MySQL的同学有所帮助。 一、MySQL日志类型及作用 MySQL共有以下6种日志类型: 错误日志(Error Log):记录MySQL服务在启动、运行以及停止过程中的错误信息。 查询日志(General Query…

    MySQL 2023年5月18日
    00
  • 活动 | GreatSQL社区亮相2023 DTC 分享开源技术成果实践

    4月7-8日,年度数据库行业盛会——2023数据技术嘉年华(DTC 2023)如期而至。 此次盛会汇聚了全国各地数千名数据领域学术精英、领袖人物、技术专家、从业者和技术爱好者,共同见证行业蓬勃发展、生态融合共赢、技术迭代升级及市场风云变迁。 GreatSQL作为万里数据库主导成立的开源数据库社区,首次亮相嘉年华大会,并带来开源社区的技术成果与应用探索,助力数…

    MySQL 2023年4月17日
    00
  • mysql8.0.14.zip安装时自动创建data文件夹失败服务无法启动

    首先,根据描述可以得知,在安装mysql8.0.14.zip时,自动创建data文件夹失败导致无法启动服务。针对此问题,我们可以采取以下步骤进行解决: 1.手动创建data文件夹 在zip安装包解压后的目录下,找到mysql-8.0.14-winx64文件夹,进入该文件夹下的bin目录,在地址栏输入cmd打开命令行窗口。 在命令行窗口内运行如下命令: mkd…

    MySQL 2023年5月18日
    00
  • mysql 索引过长1071-max key length is 767 byte

      原因 数据库表采用utf8编码,其中varchar(255)的column进行了唯一键索引 而mysql默认情况下单个列的索引不能超过767位(不同版本可能存在差异)   于是utf8字符编码下,255*3 byte 超过限制   解决 1  使用innodb引擎; 2  启用innodb_large_prefix选项,将约束项扩展至3072byte; …

    MySQL 2023年4月12日
    00
  • Swoole 协程 MySQL 客户端与异步回调 MySQL 客户端的对比

    为什么要对比这两种不同模式的客户端? 异步 MySQL 回调客户端是虽然在 Swoole 1.8.6 版本就已经发布了,但是异步回调的层层嵌套,让编码变得很别扭。如今 Swoole 4.3 版本都已经发布了,并且已经支持协程化的 MySQL 客户端,这意味着可以完全采用同步编码的模式,来进行程序开发了,对于开发者来说这是一个大好的消息。而且在 Swoole …

    MySQL 2023年4月13日
    00
  • 浅析一个MYSQL语法(在查询中使用count)的兼容性问题

    下面是对“浅析一个MYSQL语法(在查询中使用count)的兼容性问题”的详细讲解: 问题背景 在MySQL中,我们经常使用SELECT COUNT(*)来统计记录数量,其能够在大多数情况下正常工作,但最近在进行不同的MySQL版本之间的兼容性测试时,我们发现在某些情况下使用这种方法会出现不兼容的情况。 兼容性问题分析 这个问题与MySQL的版本和SQL标准…

    MySQL 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部