MySQL常用命令
show databases;
show variables like 'default_storage_engine'; (查看默认引擎)
set default_storage_engine = innodb; (修改引擎)
desc tableName;(查询表结构)
show create table _name\G(查看建表 语句)
show tables;
编码格式修改:
show variables like 'character%'; (查看编码格式)
set character_set_client=utf8 ;
set character_set_connection=utf8 ;
set character_set_database=utf8 ;
set character_set_database=utf8 ;
set character_set_results=utf8 ;
set character_set_server=utf8 ;
set character_set_system=utf8 ;
alter(用于修改表结构):
//用于重命名
alter table oldTableName rename newTableName ;
//修改字段数据类型
alter table TableName modify 字段 +数据类型;
//修改字段名称添加
alter table TableName change oldCol_Name newCol_Name data_type;
//添加字段
alter table TableName add Col_Name data_type [after Col_Name] [first];
删除字段
alter table TableName drop col_name;
对记录的处理:
插入记录 (或将一张表插入到另一张)
insert into TableName(Col_Name.....) values (value1.....)
修改记录
update Table_Name set Col_Name = values ;//对字段所有的记录进行修改
update Table_Name set Col_Name = values where Col_Name = values;//用where对修改范围进行限定
删除记录
delete from Table_Name ; //将删除表中所有记录
delete from Table_Name where Col_Name || Col_Name <>= num; //用where对修改范围进行限定
对记录语句的查询:
select * from Table_Name ;//*号是通配符,表示所以字段
select Col_Name from Table_Name ;//查询指定字段,中间用逗号隔开
//用where对修改范围进行限定
select Col_Name from Table_Name where Col_Name <>= values;
//and表示同时符合两个条件
select Col_Name from Table_Name where Col_Name <>= values AND Col_Name <>= values ;
//or表示符合任意一条件
select Col_Name from Table_Name where Col_Name <>= values OR Col_Name <>= values ;
//与or相同作用,但条件多时使用in
select Col_Name from Table_Name where Col_Name IN (values1,values2) ;
//MySQL提供not,与in同时用,表示不再当前in范围内
select Col_Name from Table_Name where Col_Name not IN (values1,values2) ;
//distinct 可以使查询结果不重复
select distinct Col_Name from Table_Name;
//between...and...可以限定查询范围
select Col_Name from Table_Name where Col-Name Between value1 and value2;
也可以与not连用
select Col_Name from Table_Name where Col-Name not Between value1 and value2;
//like 是字符查询匹配用"%" , "_"
select Col_Name from Table_Name where Col-Name like value%; //表示任意长度字符
select Col_Name from Table_Name where Col-Name like value_; //一个表示一个字符
//排序查询order by 根据字段记录排序,默认升序查询
select Col_Name from Table_Name order by Col_Name [asc(升序)/desc(降序)]; //空值记录会排在最前面
//多字段排序
select Col_Name from Table_Name order by Col_Name1 [asc/desc] Col_Name2 [asc/desc]; //先按前面再按后面排序(前主后次)
//limit限制查询结果数量
select Col_Name from Table_Name limit [起始位置][数量];
//聚合函数与分组查询
count() , sum() , avg() , max() ,min()
//使用
select function(字段名)(As 。。 //用来取别名) from 表名 where 条件
例如:select type,avg(price) from goods ;
// 分组查询 group by ,按照字段进行分组
select 字段名 from table_name group by 字段名
//group by 与 having 可以进行过滤之后再分组,通常组合使用
多表数据记录查询
连接查询:
//普通内连接查询,必需有相同的数据类型的字段可以通过该字段建立联系
select 字段名 from table_Name1 inner join table_Name 2
on table_name.Col_name=table_name2.Col_name where 条件;
等价于
select 字段名,字段名from table_name1,table_name2
where table_name.Col_name=table_name2.Col_name And 条件;
//自连接查询,查询涉及的两张表其实为同一张表,可以起别名视为两张不同的表(防止产生二义性)
select 字段名1,字段名2... form table1 as S1,table2 as S2 where S1.字段=S2.字段
And 条件;
匹配查询:
//左连接查询,left join 左边的表称为左表,与另外一张表的每一行进行匹配,符合条件则返回,
不符合,则只返回左表的行
select 字段名1,字段名2 from table1 left join table2 on table1.字段名 = table2.字段名
子查询,就是嵌套查询,再内层中嵌入外层:
//from 子查询
select 字段名 from (select 字段名 form table_Name)As table _alias where 条件
//where 子查询(采用了 in 关键字);
select 字段名 from table_name1 where 字段名 in (select 字段名 from table_name2 where 条件)
//采用 any , some 关键字(同义词),表示满足任一条件均会返回值
select 字段名 from table_name where 字段名<>=any | some (select ...................) ;
//采用 all 关键字,表示满足所有条件才会返回值
select 字段名 from table_name where 字段名 <>=all (select ....)
//采用 exists 关键字的子查询,对返回结果进行判断,ture 则放回,false 则不执行
select 字段名 from table_Name where exists (select...............);
合并查询结果:
//union 过滤重复,使结果不重复
select ................... union select ..................;
//union all 合并所有的查询结果
select .................. union all select ................;
更多。。。