查询数据库在电脑中绝对路径:

show variables like '%datadir%';

 

设置字符集

set names gbk;

导入数据库

source 绝对路径

eg:

source D:\sy1.sql

/**********************************************************************************

//查询表结构

desc  + 表名;

 具体查询表内信息:

(1)信息全部查找

select * from + 表名;

 (2)具体查询表内列的信息;

select 列名,列名,列名 from + 表名;

 

复制表:

(1)创建一个新表进行全内容复制

create table +新表名 like 旧表名;

(2)复制部分表结构

create table +新表名 as select 列名,列名 from +旧表名;

可以看见上述复制表结构没有复制主键,这个时候想以名字作为主键就调用修改指令自己加

增添键:

alter table +表名 add  primary key  (+列名,+列名);

删除主键:
alter table +表名 drop primary key;

 设置序号自增主键:
alter table +表名 add column +列名 +数据类型 auto_increment primary key;

 

 

 增加列:

alter table +表名 add +列名 列类型;   ps:如果想指定要列加到哪一列前面或者后面就再最后 after +列名;           /**************我的mysql版本before被封禁了,用不了好像;*/

 删掉列:

 再添加指定位置:

 修改单列顺序:

其实是相当于更改列

alter table +表名 change +列名 +新列名 数据类型 after +列名;

 

 修改列:

alter table +表名 change +列名 +新列名 +属性;  ps:具体还得研究一下怎么修改各个属性

 单纯修改列类型:

alter table +表名 modify +列名 +数据类型;

 更改表名:

rename table +原表名 to +新表名;

 删表:

drop table +表名;

 向指定表中存入具体信息数据:

(1)

insert  into +表名 

   values(第一列数据,第二列数据,.....);

 如果存在插入某列默认值就按顺序在那一列的位置写上default,没有值填写null;

(2)

insert into +表名

 set 列=数据,列=数据,列=数据,....;

 

从另外一张表结构相同的表中复制信息到表中:

insert into +表名

 select * from +表名;

 更改表内数据信息:

replace into +表名

   values(第一列数据,第二列数据,.....);

 

主键表内不存在就插入

在主键存在相同记录情况下修改信息

 

删除表内信息:

(1)删除表内所有信息:

delete from +表名;

 

(2)删除表内单个指定信息:

delete from +表名

   where +列名 =指定内容;

 

修改表内信息:

(1)按列修改:

update +表名 set +列名=修改的值或信息;

 (2)指定具体要修改的位置:
update +表名 set +列名= 修改信息 where  +列名=指定信息;

 

修改多个表:

同时修改多个表必须指出单个表的列名进行修改,否则就会模糊;ps:现阶段的理解操作;

不知明模糊;

 指明:

 只想修改单个的信息不是一列的就和上面的情况一样,后面加个where +列名=指定信息;

 

临时查看表内部分信息

select +列名,+列名,+列名,+列名

   from +表名;   ps:如果需要查找指定的部分信息在后面加个 where +列名=指定信息;   还可以起别名,如果别名中存在空格就要用引号把整个别名框起来;

 查看部分表内信息时按照特定东西分类重新定义一个列:

 

select +列名,+列名,+列名,+列名,

case 

  when +特定列名    =||>||<||>=||<=  特定值  then 新列名的值

  when +特定列名    =||>||<||>=||<=  特定值  then 新列名的值

.....

end as 新列名

from +表名;

 查看部分信息对其中数值进行变化同时更改列名进行展示:

select +列名,+列名,+列名,+列名(加减乘除运算) as +新定义此列名别名 from +表名;

 查看对其中一列不重复的做法:

只查询单列情况的话时不存在重复的

 如果查多列情况,就会出现有差异的但是每个也只会出现一次

 

聚合函数,调用查找特定信息

 (1)count函数    /*用于统计计算数目*/

select count(+列名) as +对查询数目信息的描述

from +表名;     ps:一般要使用where都在最后使用;

 (2)max/min 函数

select max(+列名),min(+列名)

 from +表名;

 (3) sum/avg函数

使用方法与上方相同;

(4)variance/stddev函数 分别为方差与标准差

使用方法与上方相同;

(5)group_concat函数,相当于一种分组函数

 

where 使用机制:

有时列中存在空值,而有时会使用到这些空值:

 对于想通过多个不同的具体点索引特定信息的方式:and / or / not

 like 运算符:

 

 

 

 between与in的用法:

select +列名,+列名,+列名

from +表名

where +列名   /*not*/   between 表达式1 and 表达式2;

 

 

 

交叉连接,将两个表每一行都连接一次显示临时表:
select * from +表名 join +表名;

表中选择的列会与另一张表中的选择列进行每行相连;

 等值连接:

通过两个表中列的值相同进行相连接,只要值相同就能连接:

select * from +表名 join +表名 on 表名.列名=表名.列名;

 自然连接:

需要两张表有相同的列或类型相似:ps:交叉连接就算表内有相同的列也不会合并,自然连接会自动合并选择使用合并的列名,如下使用编号进行合并;

select * from +表名 join +表名 using(列名);

 自连接:

自己与自己连接,此方法需要别名操作:

select * from +表名  +别名 join +表名 +别名 on 别名.列名=别名.列名 (and/or/not) 别名.列名=别名.列名;

浅浅示范一下:

 多表非等值连接:

将一个特定范围的表相接:

select +列名,+列名,+列名,+列名 from +表名 join +表名 on +列名 between +设定条件 and +设定条件;      ps:其中的列名是两个表都可以,因为我是制造一个临时表,from 表 join表只是改变这个临时表的列排序;

 左/右外连接:

返回左表的全部选择,并且将符合左边的右边条件加上进行显示: ps:要两表存在相同的列,使用相同的列进行匹配,否则报错因为另一张表查询不到;

select * from +表名 left/right join +列名 using(+列名);   ps:后面的条件是自己设置的

 

多表查询,大于等于2张表以上:ps需要至少两张表之间存在共同的列,不用形成环,但要形成链;

 select +列名,+列名,+列名

 from +表名

join +表名

using(+列名)

join +表名

using(+列名);

ps:using内部的列名必须是前后两张表之间存在的相同列;至于上面选择显示的列就是表中有就行是个并集;

 多表查询的外连接情况,仅仅最后一个外连接会奏效。