MySql 增 删 改

1、创建表

//创建表
CREATE TABLE `user`(
   `id` INT UNSIGNED AUTO_INCREMENT,//AUTO_INCREMENT自增字段,从0开始自增
   `name` VARCHAR(40) NOT NULL,
   `age` INT NOT NULL,
   PRIMARY KEY ( `id` )//主键
)ENGINE=InnoDB DEFAULT CHARSET=utf8;//InnoDB引擎,默认字符集utf8

//将表1内容全部复制到表2,未创建主键
Create table 表2 (Select * from 表1)

//只复制表1的表结构,未创建主键
Create table 表2 (Select * from 表1) WHERE 1=2;

//添加字段,并设置默认值
ALTER TABLEADD InputTime datetime DEFAULT getdate()

2、插入数据(INSERT INTO)

INSERT INTO 表名 (name, age) VALUES ('',18);//插入一条
INSERT INTO 表名 (name, age) VALUES ('',20),('',18);//插入两条
INSERT INTO 表名 SET name = '', age = 18;//另一种写法

3、联表插入(INSERT INTO SELECT)

//指定的列中插入数据,主键自动生成
INSERT INTO 表1(字段1,字段2) select 字段1,字段2 from 表2 where xxx    
//(表结构完全一样)表2整条记录插入到表1,主键也插入(需要注意主键是否冲突) INSERT INTO 表1 select * from 表2 where xxx

4、删除数据

删除表全部数据和表结构,立刻释放磁盘空间,不管是 Innodb 和 MyISAM

drop table 表名;

删除表全部数据,保留表结构,立刻释放磁盘空间 ,不管是 Innodb 和 MyISAM

truncate table 表名;

delete from 表以后虽然未释放磁盘空间,但是下次插入数据的时候,仍然可以使用这部分空间

删除表全部数据,表结构不变,对于 MyISAM 会立刻释放磁盘空间,InnoDB 不会释放磁盘空间

delete from 表名;

带条件的删除,表结构不变,不管是 innodb 还是 MyISAM 都不会释放磁盘空间

delete from 表名 where xxx;

delete 操作以后,使用 optimize table table_name 会立刻释放磁盘空间,不管是 innodb 还是 myisam

delete from 表名 where name = "张三";
optimize table 表名;

5、联表删除

//通过id关联,删除id有关联的表1数据
DELETE a FROM 表1 a,表2 b WHERE a.id = b.id;
//通过id关联,删除b.id = 1有关联的表1,表2数据
DELETE a,b FROM 表1 a,表2 b WHERE a.id = b.id and b.id = 1;

6、修改数据

UPDATE 表名 SET name='', age=20UPDATE 表名 SET name='', age=20 where xxx;

7、联表修改

UPDATE friends INNER JOIN users ON friends.friendid = users.userid SET friends.friendname = users.username
where users.id = 1 and friends.name = '张三'

 

posted @ 2016-03-04 14:34    阅读(3362)  评论(0编辑  收藏  举报