首页 > 数据库 >第二十天:mysql查询:DML、DDL、DQL

第二十天:mysql查询:DML、DDL、DQL

时间:2024-02-12 12:44:16浏览次数:27  
标签:... name expr mysql DML 查询 连接 DDL col

一、DML 语句

DML: INSERT, DELETE, UPDATE

1、INSERT 语句

功能:一次插入一行或多行数据 语法
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
    [ ON DUPLICATE KEY UPDATE #如果重复更新之
     col_name=expr
        [, col_name=expr] ... ]
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    SET col_name={expr | DEFAULT}, ...
    [ ON DUPLICATE KEY UPDATE
     col_name=expr
        [, col_name=expr] ... ]
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE
     col_name=expr
        [, col_name=expr] ... ]

2、UPDATE 语句

语法:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

3、DELETE 语句

删除表中数据,但不会自动缩减数据文件的大小。

语法:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
#可先排序再指定删除的行数
如果想清空表,保留表结构,也可以使用下面语句,此语句会自动缩减数据文件的大小。
RUNCATE TABLE tbl_name;
缩减表大小
OPTIMIZE TABLE tb_name

二、DQL 语句

1、单表操作
SELECT
 [ALL | DISTINCT | DISTINCTROW ]
 [SQL_CACHE | SQL_NO_CACHE]
 select_expr [, select_expr ...]
    [FROM table_references
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [FOR UPDATE | LOCK IN SHARE MODE]
字段显示可以使用别名: col1 AS alias1, col2 AS alias2, ... WHERE子句:指明过滤条件以实现"选择"的功能: 过滤条件:布尔型表达式 算术操作符:+, -, *, /, % 比较操作符:=,<=>(相等或都为空), <>, !=(非标准SQL), >, >=, <, <= 范例查询: BETWEEN min_num AND max_num 不连续的查询: IN (element1, element2, ...) 空查询: IS NULL, IS NOT NULL DISTINCT 去除重复行,范例:SELECT DISTINCT gender FROM students; 模糊查询: LIKE 使用 % 表示任意长度的任意字符 _ 表示任意单个字符 RLIKE:正则表达式,索引失效,不建议使用 REGEXP:匹配字符串可用正则表达式书写模式,同上 逻辑操作符:NOT,AND,OR,XOR GROUP BY:根据指定的条件把查询结果进行"分组"以用于做"聚合"运算 常见聚合函数: count(), sum(), max(), min(), avg(),注意:聚合函数不对null统计 HAVING: 对分组聚合运算后的结果指定过滤条件 一旦分组 group by ,select语句后只跟分组的字段,聚合函数 ORDER BY: 根据指定的字段对查询结果进行排序 升序:ASC 降序:DESC LIMIT [[offset,]row_count]:对查询的结果进行输出行数数量限制,跳过offset,显示row_count行,offset默为值为0 对查询结果中的数据请求施加"锁" FOR UPDATE: 写锁,独占或排它锁,只有一个读和写操作 LOCK IN SHARE MODE: 读锁,共享锁,同时多个读操作 2、多表查询  子查询:在SQL语句嵌套着查询语句,性能较差,基于某语句的查询结果再次进行的查询 (1)用于比较表达式中的子查询;子查询仅能返回单个值 (2)用于IN中的子查询:子查询应该单独查询并返回一个或多个值重新构成列表 (3)用于EXISTS 和 Not EXISTS (4)用于FROM子句中的子查询   联合查询:UNION SELECT Name,Age FROM students UNION SELECT Name,Age FROM teachers;   交叉连接:笛卡尔乘积 CROSS JOIN   内连接:inner join 内连接取多个表的交集    等值连接:让表之间的字段以"等值"建立连接关系    不等值连接:     自然连接:去掉重复列的等值连接 , 语法: FROM table1 NATURAL JOIN table2;     当源表和目标表共享相同名称的列时,就可以在它们之间执行自然连接,而无需指定连接列。     在使用纯自然连接时,如没有相同的列时,会产生交叉连接(笛卡尔乘积)       语法:(SQL:1999)SELECT table1.column, table2.column FROM table1 NATURAL JOINtable2;   外连接: 左外连接:以左表为主根据条件查询右表数据﹐如果根据条件查询右表数据不存在使用null值填充 FROM tb1 LEFT JOIN tb2 ON tb1.col=tb2.col   右外连接:以右表为主根据条件查询左表数据﹐如果根据条件查询左表数据不存在使用null值填充 FROM tb1 RIGHT JOIN tb2 ON tb1.col=tb2.col   完全外连接: FROM tb1 FULL OUTER JOIN tb2 ON tb1.col=tb2.col 注意:MySQL 不支持此SQL语法 自连接:本表和本表进行连接查询

 3、SELECT 语句处理的顺序

 查询执行路径中的组件:查询缓存、解析器、预处理器、优化器、查询执行引擎、存储引擎

SELECT语句的执行流程:
FROM Clause --> WHERE Clause --> GROUP BY --> HAVING Clause -->SELECT --> ORDER 
BY --> LIMIT

 

标签:...,name,expr,mysql,DML,查询,连接,DDL,col
From: https://www.cnblogs.com/dujy/p/18013719

相关文章

  • 第二十天:mysql基本语法
    一、语法标准1、数据库对象和命名数据库的组件(对象):数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等命名规则:必须以字母开头,后续可以包括字母,数字和三个特殊字符(#_$)不要使用MySQL的保留字2、SQL语句分类DDL:DataDefinationLanguage数据定义......
  • 第十九天:Mysql基础入门
    一、关系型数据库基础1、数据的分类结构化的数据   非结构化的数据  半结构化数据2、关系型数据库RDBMS (1)常用关系数据库 MySQL:MySQL,MariaDB,PerconaServerPostgreSQL:简称为pgsql,EnterpriseDBOracleMSSQLServerDB23、数......
  • 十四、MySQL与Django之Model基础
    数据库Django默认支持sqlite、mysql、oracel、postgresql等数据库1、sqlitedjango默认使用sqlite数据库Django.db.backends.sqlite3DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3','NAME':os.path.join(BA......
  • Elasticsearch实现Mysql的Like效果
    在Mysql数据库中,模糊搜索通常使用LIKE关键字。然而,随着数据量的不断增加,Mysql在处理模糊搜索时可能面临性能瓶颈。因此,引入Elasticsearch作为搜索引擎,以提高搜索性能和用户体验成为一种合理的选择。1、客户的诉求在ES中,影响搜索结果的因素多种多样,包括分词器、Match搜索、Term搜......
  • Flink CDC引起的Mysql元数据锁
    记一次FlinkCDC引起的Mysql元数据锁事故,总结经验教训。后续在编写FlinkCDC任务时,要处理好异常,避免产生长时间的元数据锁。同时出现生产问题时要及时排查,不能抱有侥幸心理。1、事件经过某天上午,收到系统的告警信息,告警提示:同步Mysql的某张表数据到Elasticsearch异常,提示连不......
  • 一次打通FlinkCDC同步Mysql数据
    业务痛点离开了业务谈技术都是耍流氓。我们来聊聊基于业务的痛点,衍生出来的多种数据同步方案。业务中常见的需要数据同步的场景1、多个库的表合并到一张表。不同的业务线或者微服务在不同的数据库里开发,但是此时有些报表需要将多个库的类似的数据合并后做查询统计。或者,某些历......
  • MySQL表结构及数据对比工具:MySQL Utilities
    简介MySQLUtilities是一组基于python语言编写的python库的命令行实用工具集,依赖于python2.6。该工具提供了MySQL数据库运维工程中常用的一些工具,诸如克隆、复制、比较、差异、导出、导入、安装、配置、索引、磁盘查看等等。Linux下安装yuminstallmysql-utilities.noarch......
  • mysql插入数据出现java.sql.SQLException Create breakpoint : Incorrect string valu
    问题图片如下:  如果出现这个问题,就是当前的mysql设置的字符集和当前业务的需求符合;前:当前我需要在mysql中存入的内容中包括了表情等信息,如下:问题分析:因为我在docker中搭建的mysql设置的默认编码为utf-8,下面是我的my.cnf文件[client]default_character_set=utf8[my......
  • helm部署MySQL主从架构8.0
    1.准备原文件1.1.更新chart仓库首先,添加存储库并更新Helm存储库:#更新chart仓库helmrepoaddaliyunhttps://kubernetes.oss-cn-hangzhou.aliyuncs.com/chartshelmrepoaddstablehttp://mirror.azure.cn/kubernetes/chartshelmrepoaddbitnamihttps://charts.bitnam......
  • MySQL优化
    优化分为六大部分:SQL语句的优化索引的优化表结构的优化事务优化系统配置优化物理机的优化SQL语句的优化a.尽量使用select字段名,不要使用select*,select*不能使用索引覆盖。只查需要用到的列。b.小表驱动大表。主查询in/exists子查询.ⅰ.in先执行右边的子查询......