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并不以谁为基础,它只显示符合条件的记录. 

 

posted @ 2016-12-31 23:59  Vincen_shen  阅读(128)  评论(0)    收藏  举报