MySQL基本操作 DDL DML DQL三大操作介绍

    • `DDL` 数据(结构)定义 创建表
    • `DML` 数据操作 增删改
    • `DQL` 查询语句

DDL 数据(结构)定义 创建表

创建 删除数据

  • 注释 --空格+内容

  • 创建数据库

    • CREATE DATABASE [if not exists] 数据库名 [ CHARSET utf8]
    • eg:CREATE DATABASE IF NOT EXISTS school CHARSET utf8
    • 如果对应school不存在,则创建新的数据库 且编码使用utf8
  • 删除数据库

    • DROP DATABASE 数据库名 / [IF EXISTS数据库名]
    • DROP DATABASE IF EXISTS school
  • 修改字符集

    • ALTER DATABASE 数据库名 CHARSET 字符集名
  • 创建表

    • :是数据存储的最常见和最简单的形式,是构成关系型数据库的基本元素

    • 每一个表都有 表头表尾 表头定义表明和列名 表中的被看作是文件中的记录,表中的列被看作是这些记录的字段。

      • 设计
        • 表名
        • 表中的字段
        • 字段的数据类型和长度
        • 哪些约束
      • 确定表名
    • 数据类型

      • char(n) 长度为n的定长字符串,最大长度为255个字符

      • varchar(n) 最大长度为n的可变字符串

      • date 日期 包含年月日

      • datetime 年月日 十分秒

      • 整数

        • 类型字节最小值最大值
          TINYINT1-128-127
          SMALLINT2-32768-32767
          MEDIUMINT3-888608-888607
          INT4-2147483648-2147483647
          BIGINT8-9883372036854775808-9883372036854775807
        • signed 有符号 unsigned 无符号 默认是有符号

      • 浮点

    • 语法

    • 创建表 CREATE TABLE 表名(列名 数据类型 [约束] [默认值] [ 注释],......)

      • CREATE TABLE 表名(
        
        	number INT,
        	NAME VARCHAR(5),
        	gender CHAR(1),
        	birthday DATE,
        	phone VARCHAR(11),
        	height DECIMAL(3,2),
        	reg_time DATETIME
        )
        
        -- CHAR(n) 定长的字符串  固定存储n个字符,长度不够n空格补齐
        -- VAECHAR(n) 可变长度的字符串 n为最大长度 如果只占了小于n的m个字符 实际占有m个空间位置	
        
    • 删除表**DROP TABLE [if exists ]表名**

    • 修改表**RENAME TABLE 旧表名 TO 新表名**

    • 复制表结构**CREATE TABLE 新表名 LIKE 被复制表名;**

      • CREATE TABLE student LIKE stu;//把student的结构复制给stu;
        
    • 主键:在一张表中代表唯一的一条记录,不能为空,不能重复

    • 约束

      • PRIMARY KEY 设置主键约束,添加主键约束后,值不能重复,一个表中只能有一个列是主键

      • 主键列可以唯一的表示某一行数据

      • mysql中主键可以设置为自动增长 AUTO_INCREMENT

      • NOT NULL不能为空约束

      • UNIQUE 唯一性约束 不能重复

      • 检查约束 设置条件

      • 注释 COMMENT + 注释

      • 用法

        CREATE TABLE student(
        	number INT PRIMARY KEY AUTO_INCREMENT COMMENT '学号主键',
        	NAME VARCHAR(6) NOT NULL,
        	birthday DATE,
        	phone VARCHAR(11) NOT NULL UNIQUE,
        	heigth DECIMAL(3,2) CHECK(heigth<3),
        	reg_time DATETIME
        )
        

执行某一个询问 必须选中

DML 数据操作 增删改

插入数据

  • 方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);
  • 方式2: INSERT INTO 表名 set 列名1=值1,..列名;
  • 方式3: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2…..,值n);
  • 方式4: INSERT INTO 表名(列1,列2……,列n) 查询语句(查询的列数与插入列数匹配);

修改数据

  • UPDATE 表名 SET列名 = '新值' WHERE 条件

删除数据

  • DELETE FROM 表名 WHERE 条件
  • TRUNCATE TABLE 表名;//清空整张表

DQL 查询语句

  • 查询指定的列

    • **语法 : ** SELECT [查询列表] FROM 表名
    • 结果可以是:表格中的字段,常量,表达式,函数
    • 查询的结果是虚拟表格,不可以操作 是只读的
    • 可以对查询结果进行 算术运算(+ - * /);
    • **特点: **
      • 查询的列表可以是:表中的字段,常量,表达式,函数
      • 查询的结果是一个虚拟的表格
  • 查询结果处理

    • 特定列查询 select column 1, column2 form table(表名)

    • 全部列的查询select * from TABLE (表名)

      • -- 使用该表来进行举例子
        CREATE DATABASE IF NOT EXISTS student  CHARSET utf8
        
        CREATE TABLE stu(
        id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, 
        number INT(5) NOT NULL, 
        stuname VARCHAR(10) NOT NULL, 
        age INT(3) CHECK(age>18), 
        birthday DATE, 
        weight DOUBLE, 
        opertime DATETIME
        )
        
        INSERT INTO stu (number ,stuname,birthday)VALUES(456,'cwy','2023-01-01');
        
      • image-20231220192616990

    • 算术运算符: + - * /

    • 排除重复行:select distinct column1,column2 from table

    • -- 查询指定的列  * 表示查询所有列
      SELECT id,number FROM stu
      SELECT * FROM stu
      -- 查询结果进行算术运算
      SELECT id+1, number/2 FROM stu
      -- 查询去重  对查询结果进行去重
      SELECT DISTINCT stuname FROM stu
      
    • image-20231220192647855

    • 查询的时候可以使用函数 select也是一个函数

      • 函数:类似于java中方法,将一组逻辑语句事先在数据库可以中定义好,可以直接调用
      • 分类:
        • 单行函数:如concat,length,ifull等;
        • 分组函数:做统计使用,又称为统计函数,聚合函数,组合函数
    • 单行函数

      • 字符函数

        • length()函数:获取参数值的字节个数

        • SELECT stuname,LENGTH(stuname) FROM stu
          
        • image-20231220192723831

        • char_length(列名)获取变量字符串的长度

        • SELECT stuname,LENGTH(stuname) FROM stu
          -- 与length()用法一样
          
        • concat(str1,str2,.....)拼接字符串 str 指的是为字符串的列 如果其中str含NULL结果都为NULL

        • instr(str ,指定字符)查找指定字符在str中首次出现的位置

        • ELECT INSTR(stuname,'w')  FROM stu
          
        • image-20231220193449507

        • trim(str) 默认去除str前后的空格,str为指定的子串且来自父类字符串

        • lpad(str,length,字符),与 rpad(str,length,字符) 在字符左右填充length长的字符 注意length指的是字节的长度

        • -- lpad(str,length,字符)  在str左边填充length长度的 字符
          SELECT LPAD(stuname,6,'w')  FROM stu
          -- rpad 同上 在右边填充
          
        • image-20231220194228464

        • replace(sre, 目标字符,替换字符)

        • -- replace(str,目标字符,替换字符) 把str中的目标字符  替换为 替换字符
          SELECT REPLACE(stuname,'d','w')  FROM stu
          

        • upper(str)转大写 lower(str)转小写 str可以是字符串的列也可也是 字符串 但如果是字符串他会单独显示一列为str大写

        • -- upper()转大写  lower() 转小写 
          SELECT UPPER(stuname) FROM stu -- 为字符串的列
          
        • image-20231220194728980

        -- upper()转大写  lower() 转小写
        SELECT UPPER('dqw') FROM stu
        
        • image-20231220194820834
      • 逻辑处理

        • case when 条件 then 结果1 else 结果2 end;(可以有多个when)

        • -- 表示id为123时 为1 否则都为2
          SELECT CASE WHEN   id=123 THEN 1 ELSE 2 END FROM stu;
          
        • image-20231220195308612

          • is null SELECT CASE WHEN age IS NULL THEN 1 ELSE 2 END FROM stu; 判断age是否为null
        • ifnull(被检测值,默认值)函数检测是否为null如果为null返回指定值,否则返回原本值

        • SELECT IFNULL(age,0) FROM stu;-- 判断age是否为空 不是返回原本值 否则返回 0
          
        • image-20231220195729364

        • if(条件,结果1,结果2) if- else 的效果

        • SELECT IF(age>50,0,1) FROM stu;
          
        • image-20231220200123703

      • 日期函数

        • now();返回当前日期

        • -- 获取当前日期 年月日 时分秒
          SELECT NOW() FROM stu;
          

          image-20231220200539675

        • curdate()获取当前日期 不包含时分秒 curtime() 获取当前时分秒 不包含日期

        • 可以获取指定部分 年 ,月, 日, 小时 , 分钟,秒

        • TEAR(日期列) MONTH(日期列) DAY(日期列) HOUR(日期列) MINUTE(日期列) SECOND(日期列)

        • str_to_date(字符串格式的日期,格式)将日期格式的字符转化为指定格式的日期

        • date_format(日期列,格式) 将日期转化为字符串

        • datediff(big ,small)返回两个日期相差的天数

        • 日期格式

          • image-20231220201533179
      • 分组函数

        • 功能: 用作统计使用,又称为聚合函数或统计函数或组函数

        • 分类:sum求和 avg平均值 max最大值 min最小值 count计数(非空)

          1. sum,avg一般用于处理数值型max min count可以处理任何类型
          2. 以上分组函数都可以忽略null值
          3. count函数的一般使用 count(*)用作统计行数.
          4. 和分组函数一同查询的字段要求是 group by后的字段 group by必须在语句最后
        • - 求和函数
          SELECT SUM(id) FROM stu;
          -- 求平均
          SELECT AVG(id) FROM stu;
          -- sum avg 只可以统计 数值类型  
          
          -- 求最大值
          SELECT MAX(weight) FROM stu
          -- 求最小值
          SELECT MIN(weight) FROM stu
          -- 统计函数
          SELECT COUNT(weight>3) FROM stu;
          -- 分组函数
          -- group by 分组函数 后面对应的变量 要与前面出现的变量一样()
          SELECT YEAR(birthday), COUNT(YEAR(birthday)) FROM stu GROUP BY YEAR(birthday);
          
        • image-20231220202316749

        • 分组函数

        • image-20231220202400081

        • image-20231220203957326

      • 条件查询

        • where(条件) where子句紧跟from子句

          • 语法select <结果> from<表名>where<条件>

          • SELECT stuname FROM stu WHERE stuname LIKE '%w%';
            -- 模糊匹配  stuname 含w数据
            
        • image-20231220202746174

        • 条件中的比较

          • = ,!= 或<>,>,<,>=,<=
          • 逻辑运算
            • and
            • or
            • not
        • 条件查询中模糊查询

          • LIKE: 是否匹配于一个模式,一般和通配符搭配使用,可以判断字符型数值或数值型

          • 通配符: % 任意多个字符

            • 条件查询 'w%'表示以w开头的模糊匹配 '%w’表示以w结尾的模糊匹配 '%w%'表示包含w的模糊匹配
          • SELECT stuname FROM stu WHERE stuname LIKE '%w%';
            -- 模糊匹配  stuname 含w数据
            -- 结果如上
            
          • between and 两者之间,包含临界值

          • In 判断某字段的值是否输入in列表中的某一项

          • IS NULL(为空的) 或 IS NOT NULL(不为空的)

      • 联合语句 UNION UNION ALL

        • UNION

          [SQL 语句 1]

          UNION

          [SQL 语句 2]

        • UNION ALL

          [SQL 语句 1]

          UNION ALL

          [SQL 语句 2]

        • 注:当使用union时 MySQL会把结果集中重复的记录删除掉,而是用UNION ALL ,MySQL会把所有记录返回,其效率高于union

      • 排序

        • 如果想对查询的结果进行排序 使用ORDER BY 子句排序

          • ORDER BY [ASC/DESC]

          • asc 代表的是升序 ,desc代表的是降序,如果不写,默认为升序

          • ORDER BY可以支持单个字段与多个字段

          • -- 排序 order by asc 是升序 desc是降序 
            SELECT stuname ,weight FROM stu ORDER BY weight ASC
            
          • image-20231220205122063

        • 数量限制

          • limit子句:对查询显示结果限制数目(sql语句最末尾位置)
          • SELECT * FROM table LIMIT offset rows
          • SELECT * FROM table LIMIT 0,5
        • 分组查询

        • 语法:

          • SELECT [分组函数] ,[列](要求出现在group by的后面)

            from [表]

            [where 筛选条件]

            group by 分组的列表 //分组

            [having 分组后筛选] //

            [order by 子句] //排序

          • 注意:查询列表比较特特殊,要求是分组函数和group by后出现的字段

          • 数据源源位置关键字
            分组前的筛选原始表group by子句前面where
            分组后筛选分组后的激活集group by 的后面having

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/260251.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python学习笔记(六):函数的多返回值、函数的多种参数使用形式、匿名函数、文件的读取操作、文件的写入 、文件的追加

目录 一、函数的多返回值 二、函数的多种参数使用形式 2.1位置参数 2.2关键字参数 2.3缺省参数 2.4不定长参数 三、匿名函数 3.1 函数作为参数传递 3.2 函数的定义 3.3 匿名函数定义语法&#xff1a; 四、文件的读取操作 4.1 open&#xff08;&#xff09;打开函数…

2023 英特尔On技术创新大会直播 |我感受到的“芯”魅力

文章目录 每日一句正能量前言AI时代&#xff0c;云与PC结合为用户带来更好体验全新处理器&#xff0c;首次引入针对人工智能加速的NPU大模型时代&#xff0c;软硬结合带来更好训练成果后记 每日一句正能量 成长是一条必走的路路上我们伤痛在所难免。 前言 在2023年的英特尔On技…

【UML】第8篇 用例图(3/3)

目录 一、用例的关系 1.1 泛化&#xff08;Generalization&#xff09;关系 1.2 包含&#xff08;include&#xff09;关系 1.3 扩展关系 二、用例表示例 不是非要把电影改成连续剧&#xff0c;给大家播&#xff0c;确实是时间和精力有限。 用例图&#xff0c;虽然简单&…

一个网卡能设置(绑定)两个或多个IP

昨天领导问我&#xff0c;一个网卡设置两个IP。我就有点发愣&#xff1a;一个网卡能设置两个IP吗&#xff1f;我倒是见过一个机器插两个网卡&#xff0c;同时支持内网和外网。一个网卡设置两个IP&#xff0c;以谁为准&#xff1f; 上网搜索了一下&#xff0c;还真可以&#xff…

MySQL——基础篇

学习视频链接&#xff1a;https://www.bilibili.com/video/BV1Kr4y1i7ru/?spm_id_from333.999.0.0&vd_source619f8ed6df662d99db4b3673d1d3ddcb 前言✴️ 基础篇——MySQL概述、SQL、函数、约束、多表查询、事务 进阶篇——存储引擎、索引、SQL优化、视图/存储过程/触发…

Spring Boot3通过GraalVM生成exe执行文件

一、安装GraalVM 1、官网&#xff1a;https://www.graalvm.org/downloads/ 2、配置环境变量 2.1、环境变量必须使用JAVA_HOME&#xff0c;否则会出现问题 2.2、在系统变量配置Path,%JAVA_HOME%\bin&#xff0c;注意必须放在顶部第一位 2.3、配置jdk的环境变量&#xff0c;在P…

vue的语法模板与数据绑定的说明

vue的两大模板语法&#xff1a; 1.插值语法 2.指定语法 插值语法&#xff1a;{{}} 功能&#xff1a;用于解析标签体的内容 写法&#xff1a;{{xxx}},xxx是js表达式,且可以直接读取到data中的所有属性 指定语法&#xff1a; 功能:用于解析标签(包括:标签属性、标…

判断数据是否为整数--函数设计与实现

#定义函数&#xff1a;is_num(s),判断输入的数据是否整数。 #(1)判断是否是数字 def is_num(s):if s.isdigit(): #isdigit()是一个字符串方法&#xff0c;用于检查字符串是否只包含数字字符。如果字符串只包含数字字符&#xff0c;则返回True&#xff1b;否则返回Falsereturn T…

订货系统本地化部署的三大优势

批发贸易行业&#xff0c;订货系统的本地化部署成为了许多企业的首选。本地化部署意味着将订货系统部署在企业自己的服务器上&#xff0c;而不是依赖于云服务提供商。这种部署方式有许多优势&#xff0c;以下是其中的四个主要优势&#xff1a; 1. 数据安全性&#xff1a;本地化…

Redis第2讲——Java三种客户端(Jedis、Lettuce和Redisson)

上篇文章介绍了Redis的9种数据类型和常命令、7种数据结构和9种编码方式。但是如果想要把它应用到项目中&#xff0c;我们还需要一个redis的客户端。redis的Java客户端种类还是很多的&#xff0c;其中使用最广泛的有三种——Jedis、lettuce和redisson&#xff0c;下面我们一起来…

基于Redis限流(aop切面+redis实现“令牌桶算法”)

令牌桶算法属于流量控制算法&#xff0c;在一定时间内保证一个键&#xff08;key&#xff09;的访问量不超过某个阈值。这里的关键是设置一个令牌桶&#xff0c;在某个时间段内生成一定数量的令牌&#xff0c;然后每次访问时从桶中获取令牌&#xff0c;如果桶中没有令牌&#x…

I.MX6ULL启动详解:Boot配置、Bootable image启动头的组成

本篇文章来了解一下I.MX6ULL的启动方式&#xff0c;实际上之前我介绍了NXP的跨界MCU RT1170的启动方式&#xff1a;I.MX RT1170启动详解&#xff1a;Boot配置、Bootable image头的组成&#xff0c;两个芯片虽然一个是Cortex-M&#xff0c;一个是Cortex-A&#xff0c;但是都是来…

猫罐头评测:五大平价猫罐头排行榜揭晓!

想必铲屎官都知道给猫咪长期吃主食罐头的好处了吧&#xff01;主食罐头不仅营养丰富&#xff0c;还能让猫咪顺便补充水分。有时候猫咪食欲不佳&#xff0c;一罐主食罐头就能让它们胃口大开呢。 通过本文&#xff0c;我将与大家分享我做宠物医生6年间发现的一些好用的猫罐头&…

AcWing算法提高课-2.1.3山峰和山谷

算法提高课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 FGD 小朋友特别喜欢爬山&#xff0c;在爬山的时候他就在研究山峰和山谷。 为了能够对旅程有一个安排&#xff0c;他想知道山峰和山谷的数量。 给定一个地图&#xff0c;为 FGD 想要旅行的区域&a…

20231218在微软官网下载WINDOWS10以及通过rufus-4.3p写入U盘作为安装盘

20231218在微软官网下载WINDOWS10以及通过rufus-4.3p写入U盘作为安装盘 2023/12/18 17:06 百度搜索&#xff1a;下载 windows10 https://www.microsoft.com/zh-cn/software-download/windows10 下载 Windows 10 更新之前&#xff0c;请参阅 Windows 版本信息状态中的已知问题&a…

图神经网络并在 TensorFlow 中实现

asokraju.medium.com 一、说明 本文将引导您了解图神经网络 (GNN) 并使用 TensorFlow 实现该网络。在后续的 文章中&#xff0c;我们讨论 GNN 的不同变体及其实现。这是一个分步计划&#xff1a; 图神经网络 (GNN) 的使用&#xff1a;我们首先讨论 GNN 是什么、它们如何工作以及…

3-10岁孩子语文能力培养里程碑

文章目录 基础能力3岁4岁5岁6-7岁&#xff08;1-2年级&#xff09;8-9岁&#xff08;3-4年级&#xff09;10岁&#xff08;5年级&#xff09; 阅读推荐&父母执行3岁4-5岁6-7岁&#xff08;1-2年级&#xff09;8-9岁&#xff08;3-4年级&#xff09;10岁&#xff08;5年级&a…

1 pandas与NumPy比较

NumPy NumPy是用python进行科学计算的一个基础库&#xff0c;因为它提供python基础包没有提供的数据结构和高性能函数。NumPy定义了一种专门用于科学计算的数据结构ndarray - 它是一种N纬数组。特点如下&#xff1a; 内存块风格 由于ndarray中的所有元素都是相同的&#xff0…

awk 命令详解

1. 编写 awk 脚本基础 1.1 Hello&#xff0c;World 通过演示“Hello&#xff0c;World”这个程序来介绍一种程序设计语言。通过演示这个程序在 awk 中如何工作将证明 awk 是如何的不寻常。实际上&#xff0c;有必要演示几种打印“Hello&#xff0c;World”的不同方法。 在第…

llvm后端之DAG设计

llvm后端之DAG设计 引言1 核心类设计2 类型系统2.1 MVT::SimpleValueType2.2 MVT2.3 EVT 3 节点类型 引言 llvm后端将中端的IR转为有向无环图&#xff0c;即DAG。如下图&#xff1a; 图中黑色箭头为数据依赖&#xff1b;蓝色线和红色线为控制依赖。蓝色表示指令序列化时两个节…