美文网首页数据库
mysql 基本操作

mysql 基本操作

作者: xin__King | 来源:发表于2019-04-10 10:21 被阅读0次

 登陆数据库: mysql -u 用户名 -p || mysql -u 用户名 -p 密码

退出数据库:exti / quit / ctrl+d

提示操作数据库时一定要记得写   ; 

数据库本版号:select version();   

当前数据库时间  select now();

显示当前数据库: show databases;

创建数据库: create database 数据库名称 charset=utf8;

查看创建数据库语句: show create database 数据库名;

删除数据库:drop database 数据库名;

查看当前使用得数据库:select database();

切换数据库:use 数据库名;

数据库内表操作:

查看所有表:show tables;

创建表:create table 表名(字段 类型 约束,...);

例如: id   int   primary key  not null   auto_increment

                字段:id

                类型:int

                设置为主键:  primary key 

                不允许为空:  not null

                是否自动增长:auto_increment

查看表结构:desc 表名;

删除表:drop table 表名;

表结构操作:alter table add/modify/change/drop 表名 字段 类型 约束;

注意 :modify 修改时不该字段名,change修改时改名字,add 添加, drop,删除

数据操作:

插入数据:insert into 表名 values();

部分插入:insert into 表名 (插字列1,插入列2)values(数据1,数据2);

多行插入:insert into 表名 (插字列1,插入列2)values(数据1,数据2),(数据1,数据2);

                  insert into 表名 values(),(),();

修改数据:update 表名 set 列=值 where 列=值;     # where 后为判断条件,不写默认全部修改 

删除操作:物理删除:delete from 表名 where 条件;

                  逻辑删除:给表里增加一个是否删除的字段(bit 类型)根据值判断是否删除

查看表数据:

select * from 表名 where 条件; #where 后为条件判断,不写默认查询全部

select 列1 as 别名,列2 as 别名 from 表名 where; # 指定列查询;

select 表名.列名 ... from 表名; || select 别名.列名 ... from 表名 as 别名;|| select distinct  别名.列名 ... from 表名 as 别名;distinct #消除重复

比较运算符:select 列名 from 表名 where  >, <,  >=, <=, !=, <>, =

逻辑运算符:select 列名 from 表名 where  and, or, not,

模糊查询:link, rlink

select 列名 from 表名 where 列名 link “例% ” ||  列名 link “__ ”   #%替换多个  _替换一个

select 列名 from 表名 where 列名 rlink “正则表达式”    #正则匹配

范围查询:in(), between ... and ...

select 列名 from 表名 where 列名 in (1,2,3)    # in  非连续

select 列名 from 表名 where 列名 not in (1,2,3)    #不再  非连续

select 列名 from 表名 where 列名 between ... and ...   # 连续的

select 列名 from 表名 where 列名 not between ... and ...   # 不在 连续的

select 列名 from 表名 where not 列名  between ... and ...   # 不在 连续的

判断空: is null

select 列名 from 表名 where 列名 is null; 

select 列名 from 表名 where 列名 is not null; 

排序:order by 字段  asc 从小到大   desc 从大到小   可以按照多个字段排

select 列名 from 表名 order by  字段     asc(默认) || desc ; 

select 列名 from 表名 where ...条件 order by   asc(默认) || desc ; 

select 列名 from 表名 where ...条件 order by   字段 desc,字段 ase,字段 desc, .... ; 

聚合函数:count 总是, max 最大值,min, 最小值 round  四舍五入 , sun 求和,avg 平均值

select count(*) as 别名 from 表名 

select max (*) as 别名 from 表名 

select min(*) as 别名 from 表名 

select sun (*) as 别名 from 表名 

select avg (*) as 别名 from 表名 

select rount ( sum(列名) / count(*), 2 ) 别名 from 表名 

分组:group by 

select 列名 from 表名 group by 列名;

注意:聚合与分组混合使用:

select 列名,聚合函数 || group_concat(列名,"_", 列名  "_" ,  列名,"_" )  from 表名 group by 列名 having count(*) > 3; # having 过滤

where  与 having 区别,where 对要查询的数据进行判断,having 对结果进行判断

分页:limit start, count

select 列名 from 表名 where limit = 起始条数,条数;

连接查询:

inner join 内链接  查询交集

select * from 表A inner join 表B on 表A.列名 =  表B.id;

select 表A.*, 表B.name from 表A inner join 表B on 表A.列名 =  表B.id;

select 别名A.*, 别名B.name from 表A as 别名A inner join 表B as 别名B on 表A.列名 =  表B.id;

外连接:找不到就显示null,  left join  左连接,right join 右连接, 

自关联:

存储的都是地区信息,而且每种信息的数据量有限,没必要增加一个新表,或者将来还要存储区、乡镇信息,都增加新表的开销太大

子查询:  一个select  包含 另一个 select 

select * from 表   where 字段 = (select 字段 from 表 where);

相关文章

网友评论

    本文标题:mysql 基本操作

    本文链接:https://www.haomeiwen.com/subject/xhhjbqtx.html