mysql操作
管理Mysql
- 列出所有数据库
Show databases;
- 创建一个新数据库(test)
Create database test;
- 删除一个数据库(test)
Drop database test;
注意:删除一个数据库将导致该数据库的所有表全部被删除
- 切换为当前(test)数据库
Use test;
- 列出当前数据库的所有表
Show tables;
- 查看当前表结构(students)
Desc students;
- 创建表的SQL语句
Show create table students;
Create table `students` (
`id` bigint(20) not null auto_increment,
`class_id` bigint(20) not null,
`name` varchar(100) not null,
`gender` varchar(1) not null,
`score` int(11) not null,
Primary key (`id`)
) engine=InnoDB auto_increment=1 default charset=utf8
- 删除表
Drop table students;
- 给students表新增一列birth
Alter table students add colimn birth varchar(10) not null;
- 修改birth列,例如把列名改为birthday,类型为varchar(20)
Alter table students change colimn birth birthday varchar(20) not null;
- 删除列
Alter table studens drop colimn birthday
- 退出mysql
Exit
- 插入一条新记录,但如果记录已经存在就线删除原记录再插入新记录。此时可以用replace语句,这样就不必先查询再决定是否先删除再插入(插入或替换)
Replace into students (id, class_id, name, gender, score) values (1,1,’小任’,’F’,100)
- 插入或更新。如果我们希望插入一条新记录(insert),但如果记录已经存在就更新改记录。此时可以用insert into … on duplicate key update … 语句
Insert into students (id, class_id, name, gender, score) values (1,1,’小任’,’F’,90) on duplicate key update name=’小明’, gender=”F”, score=90
- 插入或忽略。如果我们希望插入一条新记录(insert),但如果记录已经存在,就啥事也不干直接忽略,此时可以使用insert ignore into …
Insert ignore into students (id, class_id, name, gender, score) values (1,1,’小任’,’F’,99)
- 快照。如果想要对一个表进行快照。即复制一份当前表的数据到一个新表,可以结合create table和select
Create table students_of_class1 select * from students where class_id=1;
新创建的表结构和select使用的表结构完全一致
- 写入查询结果集
如果查询结果集需要写入到表中,可以结合insert和select,将select语句的结果集直接插入到指定集中。
例如:创建一个统计成绩的表score,记录各班的平均成绩
Create table score (
Id bigint not null auto_increment,
Class_id bigint not null,
Average double not null,
Primary key (id)
);
然后就可以用一条语句写入各班的平均成绩:
Insert into score (class_id, average) select class_id, avg(score) from group by class_id;