mysql之UPDATE,SELECT,INSERT语法

一 :UPDATE语法

  UPDATE 是一个修改表中行的DML语句。

#单表语法(常用)
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]   #例如 ORDER BY id DESC; 若ID不重复且自增,故需要先增加的最大的id后增较小id避免因为重复id保存(不常用)
    [LIMIT row_count]
#多表语法
UPDATE [LOW_PRIORITY] [IGNORE] table_references #若为多表需要‘,’分割 例如 table_reference , table_reference2
SET assignment_list [WHERE where_condition]
value:  ()
    {expr | DEFAULT} #值可以是表达式或默认值   例如   col1 = col1 + 1,(这就是表达式)

assignment:
    col_name = value # col_name 列名

assignment_list:
    assignment [, assignment] ...

二:SELECT语法(常用语法,与官方有点差别,主要是删除了一些可选参数)

  SELECT用于检索从一个或多个表中选择的行

SELECT
    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}]  #分页

注意:除select_expr其他都是可选参数

语法解析:

1.select_expr 选择表达式 (多个表达式需要用‘,’分割)

  例如: table.列名  (映射)

  例如: CONCAT(last_name,‘, ‘,first_name) AS full_name  (聚合函数和别名  连接多列的字段),和直接调用其他集合函数

  例如:(CASE WHEN t3.`CATEGORY` = 2  THEN `T`.`ADDRES` ELSE NULL  END) AS `ADDRES`  (选择表达式,可选着显示内容  例 当‘‘t3.CATEGORY = 2 " 为真时显示THEN后值  为false时显示ELSE的值)

2.where_condition 条件表达式

  例如 :id = 2 (当id等于2时为真时显示该数据)

  例如 :NOT EXISTS ( select id form classes where id = 5)   (即一个子查询并判断查询的结果是否显示数据) 注意子查询可用父查询的表数据作为条件

3.  GROUP BY 分组 根据列进行分组(列的类型可以是字符串。。。。)

  例如 :对单列分组》group by id  (默认是ASC升序,)指定分组方式 group by id ASC

  例如: 对多列进行分组    GROUP BY c.id ASC ,t.`tid` DESC;  (并按不同方式)

4.  HAVING 包含

5. ORDER BY  排序可参考group by 都有按不同方式排序

6. LIMIT  分页

三:INSERT语法

语法1 (常用插入方式 )INSERT  [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]     [INTO] tbl_name   #表明必选     [(col_name [, col_name] ...)]
       {VALUES | VALUE} (value_list) [, (value_list)] ... #必选
       [ON DUPLICATE KEY UPDATE assignment_list]   #此次忽略

语法2 ()
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]       [INTO] tbl_name         [(col_name [, col_name] ...)]       SELECT ...       [ON DUPLICATE KEY UPDATE assignment_list]
value:
    {expr | DEFAULT}  #解析 expr 可用算数运算符  如 score=score+1
value_list:
    value [, value] ...
assignment:
    col_name = value
assignment_list:
    assignment [, assignment] ...

解析语法:

 语法1    除table(表名)和value(值) 为必选其他都是可选

    例如 : INSERT INTO tbl_name () VALUES(); 即插入一条数据(所有值都为默认值)

  例如 : INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2); #运用了算数运算符 (注意:col2(第二列)引用的第一列的值 ,因为第一列先插入了值所以第二列可以引用,若反过来VALUES(col2*2,15) 则不合法)

 语法2 :可把select 语句查询出来的值 理解为语法1中的value (可用于快熟复制一天记录)

  例如 : INSERT  INTO classes(id) SELECT   NULL  FROM classes c WHERE c.id=4; # 插入一条空数据 ,因为id 不能为空所以需值定该值

可选参数

1:[ IGNORE ] : 顾名思义 ignore是忽略的意识,结合官方文档和自己的理解如下

        如果用insert 插入数据,并且用‘ignore’关键字修饰了insert,则当插入数据发生错误时mysql服务器会忽略该错误并转换为warning信息,并继续执行下条插入信息。

  例如 :  执行插入  INSERT IGNORE  INTO teacher(tid,class_id,NAME) VALUES(14,1,‘teacher12‘),(15,1,‘teacher11‘);  (teacher表信息 tid 为主键  且tid=14已经存在,tid=15不存在)

     执行结果:

     分析:当执行插入tid=14时发生了错误,服务器忽略了该错误并转化为警告信息,并继续执行了tid=15的数据

 可利用该特性:插入或忽略,即当该条数据(id)已经存在发出警告,否则就执行插入

2:[ ON DUPLICATE KEY UPDATE  assignment_list ] :  当key发生DUPLICATE (重复错误)时执行 update语句 》插入或更新

  例如:INSERT  INTO teacher(tid,class_id,NAME) VALUE(14,1,‘teacher12‘) ON DUPLICATE KEY UPDATE class_id=1,NAME=‘teacher1233333‘;

    即当tid=14已经存在就执行更新语句,否则就执行insert语句;

原文地址:https://www.cnblogs.com/jinliang374003909/p/10348767.html

时间: 2024-10-08 19:51:52

mysql之UPDATE,SELECT,INSERT语法的相关文章

TSQL 根据表名生成UPDATE SELECT INSERT

USE [AdventureWorks2012] go IF object_id('USP_GENERATEDML') IS NOT NULL BEGIN PRINT 'Dropping procedure USP_GENERATEDML' DROP PROCEDURE [USP_GENERATEDML] IF @@ERROR = 0 PRINT 'Procedure USP_GENERATEDML dropped' END go CREATE PROCEDURE [USP_GENERATEDM

mysql insert语法注意事项(ON DUPLICATE KEY UPDATE )

mysql insert语法注意事项(ON DUPLICATE KEY UPDATE ) INSERT语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] 或: INSERT [LOW_PRIO

mysql之DML(SELECT DELETE INSERT UPDATE)

DML:数据操作语言    INSERT    DELETE    SELECT    UPDATE SELECT:    SELECT SELECT-LIST FROM TBNAME|TBNAMES|SELECT ACTION QUALIFICATION SELECT-LIST 搜索清单            DISTINCT 去重,相同的值只显示一次.            AS ALIAS  字段别名            * 所有内容            FIELD 字段名      

MySQL 最基本的SQL语法/语句

MySQL 最基本的SQL语法/语句 MySQL 最基本的SQL语法/语句,使用mysql的朋友可以参考下. DDL—数据定义语言(Create,Alter,Drop,DECLARE) DML—数据操纵语言(Select,Delete,Update,Insert) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1.说明:创建数据库 Create DATABASE database-name 2.说明:删除数据库 drop databa

根据MySQL表数据导出INSERT INTO语句的方法

因项目中有需要需根据MySQL表数据生成INSERT INTO语句,在网上找了些现成的代码,原作者是谁就不知道了,但是发现有BUG,不能适用,遂对他人代码进行了修改.修改后能较好的导出INSERT INTO语句.代码如下: package dwz.interaction; import java.io.*; import java.sql.*; import java.util.ArrayList; import java.util.List; /** * Update by internetr

update select

update中加入select 最常用的update语法是:UPDATE <table_name>SET <column_name1> = <value>, SET <column_name2> = <value> 如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦第一,要select出来放在临时变量上,有很多个哦第二,再将变量进行赋值.列多起来非常麻烦,能不能像Insert那样,把整个Select语句的

SQL update select结合语句详解及应用

来源:http://www.aimks.com/sql-update-the-select-statement-application.html QL update select语句 最常用的update语法是: UPDATE TABLE_NAME SET column_name1 = VALUE WHRER column_name2 = VALUE 如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦 第一,要select出来放在临时变量上,有很多个很难

mysql中update的low_priority

low_priority,低优先级 UPDATE [LOW_PRIORITY] tbl_name SET col_name1=expr1,col_name2=expr2,... mysql中update用low_priority让update不锁定表 MySQL允许你改变语句调度的优先级,它可以使来自多个客户端的查询更好地协作,这样单个客户端就不会由于锁定而等待很长时间.改变优先级还可以确保特定类型的查询被处理得更快.这 一部分讲解MySQL的默认的调度策略和可以用来影响这些策略的选项.它还谈到

MYSQL(一) 简单语法

MYSQL(一) 简单语法 1.默认约束:mysql里面DEFAULT关键字后面是不用加括号的 --1.1 创建数据库 mysql> create database holly; Query OK, 1 row affected (0.00 sec) --1.2 使用数据库 mysql> use holly; Database changed --1.3 创建数据库表 mysql> create table student -> ( ->    id int default