MySQL提供了大量的SQL语句用于管理。很多时候,通过SSH远程连接时,只能使用SQL命令,所以,了解并掌握常用的SQL管理操作是必须的。
输入SQL后,记得加一个;,再回车执行该语句。虽然有些不需要,但是MYSQL里面,select不加;则会让客户端继续等待输入。如果在图形界面或则会程序开发中集成则不用加;
create database test;
drop database test;
*注意:如果删除数据库,其所有表会被删除。
所以在删除数据库的时候,要先切换为当前数据库,然后在删除。
use test;
show tables;
desc students;
show create table students;
create table students;
drop table students;
//修改表会更复杂一些
//给表students添加一列birth
alter table students add column birth varchar(10) not null;
//修改birth列,改为birthday,类型改为varchar(20)
alter tabble students change cloumn birth birthday varchar(20) not null;
//删除列birthday
alter table students drop cloumn birthday;
exit;//仅断开客户端和服务器的连接,服务器仍继续运行。
insert则如果有存在则需要删除,再插入。
如果replace则不必先先查询,再决定是否先删除后插入。
replace into students(id,class_id,name,gender,score)values(1,1,‘XM’,‘F’,99)
//若id=1,先删除后再插入新记录。不然则,用replace插入新记录。
如果记录存在,则更新记录,可以使用insert into …on duplicate key update…
insert into students(id,class_id,name,gender,score)values(1,1,‘XM’,‘F’,99) on duplicate key update name='小明‘,gender=‘F’,score=99;
//id=1 记录被更新,更新字段由update指定。否则,id=1不存在,insert将插入新记录。
语法:insert ignore into
如果存在则忽略,什么也不做。如果存在不存在则插入一条。
insert ignore into students(id,class_id,name,gender,score)values values(1,1,‘XM’,‘F’,99);
复制一份表,则可以使用create table和select。创建的表和查询表,结构一致。
create table classstudent1 select *from students where class_id=1;
语法:insert + select
insert into static(classid,average) select classid,avg(score) from students group by class_id;
查询的时候回自动选择索引,但不一定是最优。如果知道如何选择索引,那么可以强制使用索引。
语法:force index,前提是使用的索引要存在。
案例:select * from students force index (idxclass_id) where classid=1 order by id desc;
管理MYSQL
实用MYSQL语句