zoukankan      html  css  js  c++  java
  • MySQL语言分类——DML

    DML

    DML的全称是Database management Language,数据库管理语言。主要包括以下操作:

    insert、delete、update、optimize。

    本篇对其逐一介绍

    INSERT

    数据库表插入数据的方式:

      1、insert的完整语法:(做项目的过程中将字段名全写上,这样比较容易看懂)

          单条记录插入语法:insert into table_name (column_name1,......) values (column_value1,......);

          多条记录插入语法:insert into table_name (column_name1,......) values (column_value1,......), (column_value1,......), (column_value1,......);

    create table stu(
        id int primary key auto_increment,
        age int unsigned,
        name varchar(20),
        gender enum('0','1') default '0'
    );
    insert into stu(name,age) values('ls',17);
    insert into stu(id,age,name,gender) values(1,18,'zs','1');
    insert into stu(age,gender,name) values(15,'1','ww'),(17,'0','zl'),(20,'0','tq');

           将结果集插入到表格中:插入的过程中结果集的字段名和新的表格的字段名需要严格匹配。

          1、简单的把数据插入到新表格中,两个表结构不相同:

    create table new_table_name as (select * from table_name);

          2、复制表格需要两步:①先复制表结构②将数据插入新表格中

    # 复制表结构
    create table new_table_name like table_name;
    
    # 将查到的结果集插入新表格中 这是一条语句,前后的字段名需要保持一致
    insert into new_table_name (column_name1,column_name2,...)
    select column_name1, column_name2,... from table_name;

      2、windows终端命令行cmd导入:

          先切换到sql文件夹目录下:source xxxx.sql

      3、在windows终端命令行命令行模式中导出数据库、数据库表格

          导出数据库全部表格:mysqldump -h localhost -u root -p [-d] database_name > database_name.sql

            [-d] 表示不导出数据,建议不写,若不导出数据,没什么意义

          导出数据库的摸一个表格:mysqldump -h localhost -u root -p [-d] [--skip-lock-tables] database_name table_name > table_name.sql

            [--skip-lock-tables] 表示如果导出的表格与其他表格有关联,使用这个选项,就会排除这种顾虑

    DELETE

      drop、truncate、delete三者的区别:

        drop一般用法是drop table table_name;它是删除表中的数据和结构,立刻释放磁盘空间 , 可以删除有索引视图的表,但是不能删除被外键关联的表

        truncate一般用法是truncate table table_name; 他是清空表中所有的数据,立刻释放磁盘空间,不能用于参与了索引视图的表、有外键约束的表

        delete一般用法是delete from table_name where conditions; 它是按照where之后的条件进行删除,不会释放磁盘空间;如果没有条件,就清空表中数据。

      对于数据而言:前两者,一旦删除就找不回来,而delete删除的时候没有提交事务,可以通过回滚事务复原删除的数据,如果提交了,也是一样找不回来的

           三者的执行速度:drop>truncate>delete

      delete的完整语法:

        delete [low_priority] from table_name [where conditions] [limit N]

          [low_priority] 表示如果没有客户读取当前表格,才执行delete语句

          [limit N] 表示删除的记录数量

          [conditions]不能是select语句,既不能通过select语句返回一个结果集

    谨慎操作:删除数据之前先进行select:
    select * from stu where id>7 and gender='0';
    delete from stu where id>7 and gender='0';
    
    seelct * from stu where name is null;
    delete from stu where name is null limit 2;

    UPDATE    

    delete的完整语法:

        update [low_priority] table_name set column_name=column_value,.... [where conditions] [limit N]

          [low_priority] 表示如果没有客户读取当前表格,才执行delete语句

          [limit N] 表示删除的记录数量

          [conditions]不能是select语句,既不能通过select语句返回一个结果集

    谨慎操作:修改数据之前先select:
    select * from stu where id=12;
    update stu set name='zs',gender='1' where id=12;

    optimize

      语法:OPTIMIZE TABLE tbl_name

      你可以使用OPTIMIZE TABLE回收闲置的空间。

    OPTIMIZE TABLE通过制作原来的表的一个临时副本来工作。老的表被拷贝到 新表中(没有闲置的行),然后原来的表被删除并且重命名一个新的。这样做使得 所有更新自动转向新的表,没有任何失败的更新。当时OPTIMIZE TABLE正在 执行时,原来的表可被另外的客户读取。对表的更新和写入延迟到新表是准备好为止。

  • 相关阅读:
    rs
    stm32f767 usoc3
    stm32f767 RTT 日志
    stm32f767 标准库 工程模板
    stm32f767 HAL 工程模板
    docker tab 补全 linux tab 补全
    docker anconda 依赖 下载 不了
    docker run 常用 指令
    linux scp 命令
    Dockerfile 常用参数说明
  • 原文地址:https://www.cnblogs.com/aitiknowledge/p/11445429.html
Copyright © 2011-2022 走看看