Mysql学习day4 表的增删改和引擎

本文介绍了MySQL中关于表的插入、更新、删除操作,包括LOW_PRIORITY插入、忽略错误更新、Truncate快速清空表等。还详细讲解了创建和操作表的语法,如主键、默认值和引擎选择,特别是MyISAM和InnoDB的特性比较。最后提到了表的删除和重命名方法。
摘要由CSDN通过智能技术生成

插入数据

  1. insert into 表 (列,列,列….)values (值,值,值…..)
  2. insert into 表 values (值,值,值…..)
  3. 如果表的定义可以,可以在insert操作中省略某些列,但是必须要满足以下条件中的一个
1.允许是空值
2.有默认值
  • 在数据库经常被客户访问的情况下,对处理请求的顺序是进行管理MYSQL的任务,insert 操作可能很耗费时间,特别是在有很多索引 需要更新的时候,而且它可能降低等待处理的select语句的性能

  • 如果数据的检索是最重要的(通常是这样),你可以通过在insert 和into 之间添加关键字 LOW_PRIORITY,指示MySQL降低insert语句的优先级

inset   LOW_PRIORITY INTO

4.如果要插入多条记录,可以

insert intovalues (值,值,值.....) ,
values (值,值,值.....) ,
values (值,值,值.....) ,
values (值,值,值.....) 

因为MySQL用单条insert语句处理多个插入比使用多条insert语句快

5.插入检索出的数据
而且这样列其实没必要都对应,因为MySQL不关心select返回的列名,它使用的是列的位置

 insert into  表1  (列1,列2,列3....) 
 select (列1,列2,列3....) 
 from 表2

更新Update数据

  1. 语法
update 表名 
SET  列 =值,
SET  列 =值 ,
SET  列 =值 
where XXX

2.update 语句中也可以使用子查询,使得能用select查询的结果来更新数据
3.如果更新多行,而且在更新这些行的时候有一行或者多行出现一个现错误,为了即使有错误也能继续更新,可以使用ignore 关键字

update  ignore 表

删除DELETE 数据

1.delete即使删除了所有表中的数据删除的也不是表
2.如果想从表中删除所有数据,不要使用delete,可以使用Truncate table语句,它会用更加快的速度完成。事实上,truncate是删除原来的表并且重新创建了一个表,而不是逐行删除。
3.MySQL没有撤undo按钮,一旦使用不能恢复


创建和操作表

1.语法

CREATE TABLE 表名
(
 id     int       not  null   auto_increment  primary key ,
 name   char(50)  not  null ,
 abcd   char(50)  not  null ,
  ....
)ENGINE =InnoDB

2.创建时表名必须不存在,否则出错,如果仅仅想在不存在的时候创建,在表名前面添加IF NOT EXISTS

CREATE TABLE  IF NOT EXISTS 表名
(
 id     int       not  null   auto_increment ,
 name   char(50)  not  null ,
 abcd   char(50)  not  null ,
  ....
  PRIMARY KEY (id)
)ENGINE =InnoDB

3.如果不指定默认是NULL
4.主键必须唯一,但是可以由多个列构成一个主键,用逗号隔开,但是所有设置主键的都不能为空

CREATE table if not exists  abc
(
a  int not null ,
 b int not null,
 v int not null  ,
d int not null ,
primary key(a,b)
)engine =innodb

5.AUTO_INCREMENT 每个表只允许一个AUTO_INCREMENT 而且它必须被索引,比如让它成为主键

Selct last_insert_id()  /*/获取最后一个自动增长的值*

6.默认值DEFAULT

CREATE TABLE 表名
(
 id     int       not  null   auto_increment  primary key ,
 name   char(50)  not  null ,
 abcd   char(50)  not  null ,
 my_id  int   not null DEFAULT 0 ,
  ....
)ENGINE =InnoDB

引擎类型

1.MySQL内保打包了多种引擎, 建表时很可能时MyISAM,大多数sql都会默认使用它。但是不是所有的语句都使用它,这就是为什么ENGINE=语句的重要性。

  • InnoDB是一个可靠的事务处理引擎,但不支持全文检索
  • MyISAM 是一个性能极高的引擎, 支持全文检索,但不支持事务处理
  • MEMORY在功能在等同于MyISAM,但是数据存储在内存中,而不去磁盘,速度特别快,特别适合用于临时表

2.引擎可以混用,但是混用引擎有一个大缺陷,即外键不能跨引擎。即使用一个引擎的表不能引用具有使用不同引擎的表的外键。

3.用什么依赖你需要什么特性,一般MyISAM由于性能和特性可能是最受欢迎的,如果需要事务处理,另说


更新表


1.语法

//增加一个列
alter table  表名  addchar(50)
//删除一个列
alter table 表名  drop 列
//alter table 最常用的是定义外键
alter table1  add  constraint  fk_表1_表2  Foreign key (列1) references2(列2);

alter table2  add  constraint  fk_表2_表1  Foreign key (列2) references1(列1);


删除表 ————>> DROP TABLE 表名


重命名表————>> REBANE table 旧 TO 新

//对多个表重命名
rename table  A TO A1 ,
              B TO B1 ,
              C TO C1 ,
              ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值