MYSQL之DML(数据库操作语言)

67 阅读3分钟

DML(数据库操作语言):

数据操作语言DML(Data Manipulation Language),用户通过它可以实现对数据库的基本操作。例如,对表中数据的查询、插入、删除和修改。 在DML中,应用程序可以对数据库作插,删,改,排,检等五种操作

数据库意义,存储,管理。

创建一个表

 create table if not exists test(
      -- id 列名  int 数据类型  primary key 主键 not null 不为空 auto_increment 自增   comment "" 别名
  	id  int  primary key  not null auto_increment comment '主键',
      -- default '' 默认的
      name varchar(10) not null default '匿名' comment '姓名'
  )Engine=innodb default charset=utf8;

添加(insert):

    -- 一般写插入语句,我们一定要数据和字段一一对应 一个子段对应一个值
    -- 插入数据
    insert into 表名 (【字段1,自段2,字段三】) value ('值1'),('值2'),('值3');
    
    insert into test(name) value("张三");
     -- 或者
     -- 已知列  id name 
     insert into test value ('12','name');
     
     -- 由于主键自增,那么我们不插入id
     insert into test value( ,'name');
     
     -- 一次插入多个数据
     insert into test(name) value ('张三'),('李四');

注意:

  1. 字段使用英文逗号隔开
  2. 不写具体的列进行插入,那么我们插入的时候就需要整个数据库列的值全部插入
  3. 字段可以省略,但是后面的值必须要一一对应,不能少
  4. 可以同时插入多条数据,value后边的值,需要使用 英文逗号隔开。(),()

更新(update):

一般是更新数据库中的数据,而不是更新表的子段。。。。

-- 修改学员的名字
update test set name = '张三' where id = 1 ;
-- 在不指定具体的条件的情况下更改会更改表中所有name的数据
update test set name = '李四';  -- 更新整个表中列为name的所有数据是name都等于'李四';  切记不要傻乎乎的使用。。。后果就是删库跑路

-- 修改多个属性,逗号隔开
update test set name =  '张三'  , tel = '123321', email = '2569758@qq.com' where id = 1;



-- 语法 
update 表名 set 【列名1 =1,列2 =2 。。。。】 where 【条件】; 
操作符含义范围结果
=等于5=6false
<> 或 !=不等于5<> 6true
‘’>“”大于5>6false
<小于5<6true
<=小于等于
‘’>= ”大于等于
between… and …介于…之间[2,5]
and5>1 and 1>2false
or5>1 or 1>2true

update 表名 set 【列名1 = 值1,列2 = 值2 。。。。】 where 【条件】;

注意:

1. 更新某个类需要指定列名,顺带加上条件,没有加条件则会更新所有的列
2. 不同列名之间需要加,隔开。

删除(delete)

删除表中的数据,和drop不一样,drop是删除整个表,delete是删除表中的数据

-- 删除数据 尽量避免不添加条件删除
delete from 表名 ; -- 这样会删除整个数据库

-- 删除指定数据,也就是根据条件删除
delete from 表名 where  列名1 =1 and 列名2 =2 ...;

TRUNCATE命令(推荐)

清空某一张表。。。

  -- 清空student表 truncate
    TRUNCATE 表名;

delete 和 truncate区别:

1. 相同点:都能删除表数据,且不会删除表结构
2. 不同:
1. truncate 重新设置自增列 记数器会归零
2. truncate不会影响事务

delete删除问题,重启数据库,现象

InnoDB 自增会重1开始(存在内存中的,断电就失去);

MyISAM 继续从上一个自增量开始(存在文件中,不会丢失)