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 TABLE 表 ADD 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=20; UPDATE 表名 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 = '张三'