当前位置:Gxlcms > 数据库问题 > Mysql基础命令

Mysql基础命令

时间:2021-07-01 10:21:17 帮助过:5人阅读

DDL
数据库操作
创建数据库:
create database 数据库名;
展示所有数据库:
show databases;
选择数据库:
use 数据库名;
展示数据库内所有表单:
show tables;
删除指定数据库
drop database 数据库名;

 


数据表操作
创建表单:
create table 表名(字段名1 字段类型,.....字段名n 字段类型);
特别说明:
字段类型是建表的关键,目前要掌握关键常用的几个
int,代表整型。float,代表浮点char和varchar(最多到255)代表字符串,text存放长文本信息datetime,timestamp代表时间
查看表单:
desc 表名;
查看表单属性:
show create table 表名;
删除表单:
drop table 表名;
修改表名:
later table 旧表名 rename 新表名;

 


数据字段操作
修改字段类型:
alter table 表名 modify 字段名 修改的字段类型;
增加表字段:
alter table 表名 add column 字段名 字段类型;
删除表字段:
alter table 表名 drop column 字段名 字段类型;
修改字段名:
alter table 表名 chang 字段原名 字段新名 字段类型;

 

 

 

 

 

 

DML
插入记录:
基本语法1的插入语句,表中有多少个字段就必须要插入多少个值。一个不能多,一个也不能少。
insert into 表名 values(值1,值n);
基本语法2中,除非有必填字段必须要写入值外。如果有默认值的不想写可以忽略不写。mysql会自动补主默认值
insert into 表名(字段名1,字段名n)values(值1,值n);
替换记录:
关键字
replace()函数
语法
select replace(字段,被替换值,替换值)from 表

 

查询记录:
select * from 表名;
select 字段 from 表名;
select distinct 字段 from 表名;(去重)
select 字段 from 表名 where 条件(根据条件显示对应数据)
select 字段 from 表名 order by 字段 排序关键词(默认为asc)
asc 升序排列
desc 降序排列
select 字段 from 表名 order by 字段1 排序关键词,字段n 排序关键词 (默认为asc)
只有在第一个字段排序后,出现相同值才会比较第二个字段,否则第二个比较字段无效,主排序字段和次排序字段
select * from 表名 where 字段 like ‘%值%‘;(模糊查询)

 

结果集限制:
语法:
select 字段 from 表名 limit 数量;
关键字:limit 取前几条记录;
结果集限制并排序:
select 字段 from 表名 order by 字段名 limit 数量;
根据需要排序的表取前几条记录;
结果集区间选择:
select 字段 from 表 limit 偏移量,数量;

 


聚合函数的使用:
sum()函数:
1.sum()函数是求和函数
2.与group by 关键字一起使用
select 字段1,sum(字段2)from 表名 where 字段1=字段1的值;
根据字段1将字段2里的有关字段1指定的值加起来;
select 字段1,sum(字段2) from 表名 group by 字段1;
根据字段1将字段2里的有关字段1所有的值各加起来;
count()函数:
1.count()函数用来统计记录的条数
2.与group by 一起使用
select count(*) from 表名;(统计表单里有几个字段);
select count(*) as 名字 from 表名;(as 名字:用来偷换count(*)来显示);
select 字段1,count(*) from 表名 group by 字段1;(统计 字段1里所有的值在表中出现的次数);
avg()函数:
1.avg()函数是求平均值函数
2.与group by 一起使用
select 字段1,avg(字段2)from 表名 where 字段1=字段1的值;
根据字段1将字段2里的有关字段1指定的值求平均值;
select 字段1,avg(字段2) from 表名 group by 字段1;
根据字段1将字段2里的有关字段1所有的值各求平均值;
max()函数
1.max()函数是求最大值函数
2.与group by 一起使用
select 字段1,字段2,max(字段3)from 表名 where 字段1=字段1的值;
根据字段1和字段2将字段3里的有关字段1,2指定的值求最大值;
select 字段1,max(字段3)from 表名 group by 字段1;
根据字段1,2将字段3里的有关字段1,2所有的值各求最大值;
min()函数
1.min()函数的求最小值得函数
2.与group by 一起用
select 字段1,字段2,min(字段3)from 表名 where 字段1=字段1的值;
根据字段1和字段2将字段3里的有关字段1,2指定的值求最小值;
select 字段1,min(字段3)from 表名 group by 字段1;
根据字段1,2将字段3里的有关字段1,2所有的值各求最小值;

 


分组过滤:
语法:
分组是在select语句的group by子句中建立的。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。
select子句中的列名必须为分组列或列函数,列函数对于group by子句定义的每个组个返回一个值。
查询某个字段的值出现的次数:
select count(*) from 表名 where 字段名=值;
查询某个字段出现的次数:
select count(*) from 表名 group by 字段名;
查询多个字段通过有相同值字段来分组排序:
select 字段1,字段2,count(*) from 表名 group by 字段1,字段2,order by 有相同值字段;
使用having子句:
核心:
对分组统计之后的结果集,进行数据的筛选
select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having having条件 order by 有相同值字段;
where和having的不同:
where是对原始数据进行筛选,having是对分组时候的数据进行筛选;
执行顺序:from>where>group by>having

 


多表联合查询:
外连接:
外连接包括左连接,右连接,全然外连接
左连接:left join或left outer join
包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录
select * from 表1 left jion 表2 on 表1.相同字段=表2.相同字段;
右连接:right join或right outer join
包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录
select * from 表1 jion 表2 on 表1.相同字段=表2.相同字段;
全然外连接:full join或full outer join
select * from 表1 full jion 表2 on 表1.相同字段=表2.相同字段;
包含所有的左右边表中的记录甚至是左右中没有和它匹配的记录

内连接:
关键词:join 或inner join
内连接是比较运算符,仅仅返回符合条件的行。
select * from 表1 (inner) jion 表2 on 表1.相同字段=表2.相同字段;

交叉连接:
关键词:cross jion
1.概念:没有where子句的交叉连接将产生连接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。
select * from 表1 cross jion 表2 where 表1.相同字段=表2.相同字段;

 


更新记录:
可以同时更新一个或多个字段;
你可以在 WHERE 子句中指定任何条件。
你可以在一个单独表中同时更新数据。
语法:
updata 表名 set 字段1=新值1,字段2=新值2,字段n=新值n where 条件

 


删除记录:
语法:delect,truncate,drop
delect:
删除整张表的数据:
delect from 表名;
删除部分数据;
delect from 表名 where 条件;
truncate:
只能操作表,将表中数据全部删除,在功能上和不带where的delect相同;
truncate table 表名;
drop:
drop语句删除表的结构,以及被依赖的约束(constrain),触发器(trigger)以及索引(index);
drop table 表名;

Mysql基础命令

标签:说明   trunc   文本   返回   条件   约束   varchar   排序   概念   

人气教程排行