首页 > 数据库 >Mysql中的DML

Mysql中的DML

时间:2024-05-02 14:44:35浏览次数:20  
标签:删除 TRUNCATE -- DML 命令 Mysql WHERE DELETE

  1. 插入语句
--语法
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
--如果数据是字符型,必须使用单引号 ' 或者双引号 ",如: 'value1', "value1"。
--如果要插入所有列的数据,可以省略列名
INSERT INTO users VALUES (NULL,'test', '[email protected]', '1990-01-01', true);
--如果要插入多行数据,可以在 VALUES 子句中指定多组数值:
INSERT INTO users (username, email, birthdate, is_active)
VALUES
  ('test1', '[email protected]', '1985-07-10', true),
  ('test2', '[email protected]', '1988-11-25', false),
  ('test3', '[email protected]', '1993-05-03', true);
  1. 更新语句:
--语法
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
--可以同时更新一个或多个字段。
--可以在 WHERE 子句中指定任何条件。
--更新符合条件的所有行:
UPDATE students SET status = 'Graduated';
--更新使用子查询的值:
UPDATE customers
SET total_purchases = (
    SELECT SUM(amount)
    FROM orders
    WHERE orders.customer_id = customers.customer_id
)
WHERE customer_type = 'Premium';
  1. 删除语句
--语法
DELETE FROM table_name
WHERE condition;
--如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
--可以在 WHERE 子句中指定任何条件
--使用子查询删除符合条件的行:
DELETE FROM customers
WHERE customer_id IN (
  SELECT customer_id
  FROM orders
  WHERE order_date < '2023-01-01'
);

delete与truncate区别:

编号 DELETE TRUNCATE
1 DELETE 命令用于删除指定的行(一个或多个)。 TRUNCATE命令用于删除表中的所有行。
2 DELETE是一个DML(数据操作语言)命令。 TRUNCATE是一个 DDL(数据定义语言)命令。
3 DELETE 命令中可能有一个 WHERE 子句,用于过滤记录。 TRUNCATE 命令中可能没有 WHERE 子句。
4 在 DELETE 命令中,元组在删除之前被锁定。 在TRUNCATE命令中,数据页在删除表数据之前被锁定。
5 DELETE 语句一次删除一个行,并在事务日志中为每个删除的行记录一个条目。 TRUNCATE TABLE 通过解除分配用于存储表数据的数据页来移除数据,并且仅在事务日志中记录页解除分配。
6 DELETE 命令比 TRUNCATE 命令慢。 TRUNCATE 命令比 DELETE 命令快。
7 要使用删除,需要对表具有 DELETE 权限。 要在表上使用 TRUNCATE,我们至少需要表上的 ALTER 权限。
8 对表使用DELETE 语句后,列的标识保留标识。 如果表包含标识列,则标识该列将重置为其种子值。
9 删除可以与索引视图一起使用。 TRUNCATE不能与索引视图一起使用。

标签:删除,TRUNCATE,--,DML,命令,Mysql,WHERE,DELETE
From: https://www.cnblogs.com/hytip/p/18170183

相关文章

  • Mysql基础
    为什么要配置环境变量?当你想直接用cmd打开某个.exe软件,但却出现以上情况时,可以通过配置环境变量来解决。配置了常用软件的环境变量后,在系统的任意路径下,打开cmd,输入软件,即可打开应用。环境变量:是在操作系统中用来指定操作系统运行环境的一些参数。环境变量中的path环境变量:......
  • mysql连接不上,服务中找不到mysql
    分析因为太久没使用mysql,服务自动删除了解决注册/安装服务win+x,a,以管理员打开powershell(或者使用cmd,随你)#注意此处需要引号,因为有空格#1.cd到mysql的可执行文件,如果记不得或者像我一样懒,直接everything搜索mysqld.exe即可cd'C:\ProgramFiles\MySQL\MySQLServer8......
  • You have an error in your SQL syntax; check the manual that corresponds to your
    在进行增加User对象时采用了PreparedStatement对象,方法executeQuery()和executeUpdate()都是无参方法,所以不要写成prepareStatement.executeQuery(sql)或prepareStatement.executeUpdate(sql)publicintadd(Useruser){Connectionconnection=JDBCTools.getConnecti......
  • quine和mysql8新特性
    Quinesqliquine是mysql注入中的一种特殊的攻击方式.服务端对于用户登录的判断方式如下,则可以考虑quine攻击.functioncheckSql($s){if(preg_match("/regexp|between|in|flag|=|>|<|and|\||right|left|reverse|update|extractvalue|floor|substr|&|;|\\\$|0x|sleep|\/i"......
  • 关于在CentOS7的docker容器下启动MySQL5.7.44卡住的问题的解决办法
    最近想在docker中跑一个MySQL5.7版本的服务,而且要基于CentOS,所以着手自己构建镜像。容器的构建参照下面这篇文章基于CentOS7镜像容器的MySQL环境构筑-sxb_sunday-博客园(cnblogs.com)构建完成后,用下面命令启动MySQL服务的时候,启动进程一直卡住没有反应,只能CTRL+C强制停止。......
  • CentOS7上的Mysql8.3允许远程连接
    点击查看代码[root@clone2~]#mysql-uroot-pEnterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis9Serverversion:8.3.0MySQLCommunityServer-GPLCopyright(c)2000,2024,Oracleand/oritsaffiliates......
  • 记录一下MySQL的连接
       简单的2张表演示1.左连接SELECTCustomerPro.ID,CustomerPro.CustomerName,Employee.EmployeeNameFROMCustomerProLEFTJOINEmployeeonCustomerPro.EmployeeID=Employee.ID2.右连接SELECTCustomerPro.ID,CustomerPro.CustomerName,Employee.EmployeeName......
  • docker部署MySQL并且外部连接
    我用的是腾讯云轻量级服务器记得去防火墙开启对应的端口一般是3306docker安装就不说了dockerpullmysql直接拉取最新的版本 dockerrun-p3306:3306--namemymysql-v$PWD/conf:/etc/mysql/conf.d-v$PWD/logs:/logs-v$PWD/data:/var/lib/mysql-eMYSQL_ROOT_......
  • MySQL日志
    一条update的执行流程执行流程分为在server层和存储引擎层;server是MySQL都有的,其日志文件是binlog;存储引擎是不同的,undolog,redolog是innodb特有的。首先是客户端创建请求,然后去服务层请求;然后是server的连接器,连接器的作用是校验用户是否有权限进行查询等等。(在8.0版本之前有......
  • PHP mysql 大量批量insert或update数据出错问题
    UPDATEusersSETage=30WHEREname='Alice';UPDATEusersSETage=25WHEREname='Bob';UPDATEusersSETage=35WHEREname='Charlie';以上代码会导致并发性问题,因为多个更新语句可能会同时执行,导致数据错乱。解决办法:1、使用锁定LOCKTABLESusersWRIT......