MySQL增删改查
Insert into:
INSERT INTO 表名(字段名1,字段名2) VALUES(字段值1,字段值2)
例:insert into students(name,age) values("张三",22),('李四',33),("王五",44)
Delete:
DELETE FROM 表名 WHERE 条件
例:DELETE FROM a WHERE id=1;
Update:
UPDATE 表名 SET 字段名=字段值 WHERE 条件
例:UPDATE a SET id=1,name='张三' WHERE id=2;
Select:
SELECT (字段名,*代表全部) FROM 表名 WHERE 条件
例1:SELECT id,name FROM a WHERE id=1;
Drop:
Drop database db_name
Drop table tb_name
Alter:
ALTER TABLE table_name ADD field_name field_type; 修改原字段名称及类型: ALTER TABLE table_name CHANGE old_field_name new_field_name field_type; 删除字段: ALTER TABLE table_name DROP field_name 自增列(auto_increment) alter table tb_name modify id int auto_increment primary key 修改字段默认值 alter table tablename alter column drop default; (若本身存在默认值,则先删除) alter table tablename alter column set default 't5';(若本身不存在则可以直接设定) 增加主键 alter table tabelname add new_field_id int(5) unsigned default 0 not null auto_increment ,add primary key (new_field_id); 增加一个新列 alter table t2 add d timestamp; alter table infos add ex tinyint not null default '0'; 删除列 alter table t2 drop column c; 重命名列 alter table t1 change a b integer; 改变列的类型 alter table t1 change b b bigint not null; alter table infos change list list tinyint not null default '0'; 重命名表 alter table t1 rename t2; 加索引 alter table tablename add index 索引名 (字段名1[,字段名2 …]); alter table tablename add index emp_name (name); 加主关键字的索引 alter table tablename add primary key(id); 加唯一限制条件的索引 alter table tablename add unique emp_name2(cardnumber); 删除某个索引5 alter table tablename drop index emp_name;
多表查询
一对多查询
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 :
select * from A left join B on A.ID = B.ID
多对多查询
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的,换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录。
mysql> show tables; +----------------+ | Tables_in_mydb | +----------------+ | dep_to_host | | department | | host | | test | +----------------+ 4 rows in set mysql> select d.title,h.ip from department d left join dep_to_host sc on d.id=sc.dep_id left join host h on h.id=sc.host_id where d.id=1; +-------+-------------+ | title | ip | +-------+-------------+ | IT | 10.120.4.90 | | IT | 10.120.4.89 | | IT | 10.120.4.88 | +-------+-------------+ 3 rows in set mysql>
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录:
select * from A right join B on A.ID = B.ID
right join和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
inner join(等值连接) 只返回两个表中联结字段相等的行(跟left join, right join 最后加上where是同一个效果):
select * from A inner join B on A.ID = B.ID
* inner join并不以谁为基础,它只显示符合条件的记录.