• 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正在 执行时,原来的表可被另外的客户读取。对表的更新和写入延迟到新表是准备好为止。

  • 相关阅读:
    python的input获取用户输入
    pyinstaller打包成功的.exe,本机运行正常,在别的电脑上运行报错Failed to execute script ...
    Shell应用:批量将文件编码由gbk转utf8
    不伤眼睛的文字背景色 豆沙绿RGB值为(199,237,204)
    javascript禁用backspace回退,shift+backspace前进,F5等刷新页面功能
    crontab实行shell乱码问题解决
    linux C 函数大全 .
    Web服务器:shell字符串处理
    Linux C编程一站式学习 .
    crontab中date的用法
  • 原文地址:https://www.cnblogs.com/aitiknowledge/p/11445429.html
Copyright © 2020-2023  润新知