插入数据
- insert into 表 (列,列,列….)values (值,值,值…..)
- insert into 表 values (值,值,值…..)
- 如果表的定义可以,可以在insert操作中省略某些列,但是必须要满足以下条件中的一个
1.允许是空值
2.有默认值
在数据库经常被客户访问的情况下,对处理请求的顺序是进行管理MYSQL的任务,insert 操作可能很耗费时间,特别是在有很多索引 需要更新的时候,而且它可能降低等待处理的select语句的性能
如果数据的检索是最重要的(通常是这样),你可以通过在insert 和into 之间添加关键字 LOW_PRIORITY,指示MySQL降低insert语句的优先级
inset LOW_PRIORITY INTO
4.如果要插入多条记录,可以
insert into 表
values (值,值,值.....) ,
values (值,值,值.....) ,
values (值,值,值.....) ,
values (值,值,值.....)
因为MySQL用单条insert语句处理多个插入比使用多条insert语句快
5.插入检索出的数据
而且这样列其实没必要都对应,因为MySQL不关心select返回的列名,它使用的是列的位置
insert into 表1 (列1,列2,列3....)
select (列1,列2,列3....)
from 表2
更新Update数据
- 语法
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 表名 add 列 char(50)
//删除一个列
alter table 表名 drop 列
//alter table 最常用的是定义外键
alter table 表1 add constraint fk_表1_表2 Foreign key (列1) references 表2(列2);
alter table 表2 add constraint fk_表2_表1 Foreign key (列2) references 表1(列1);
删除表 ————>> DROP TABLE 表名
重命名表————>> REBANE table 旧 TO 新
//对多个表重命名
rename table A TO A1 ,
B TO B1 ,
C TO C1 ,
...