mysql基本操作crud之,MySQL基本操作

数据库

排序

  • 为了便于查看数据,能够对数码开始展览排序
  • 语法:

select * from 表名
order by 列1 asc|desc,列2 asc|desc,...
  • 将行数据依据列一开始展览排序,如若某个行列一的值一样时,则遵照列二排序,就那样类推
  • 私下认可依据列值从小到大排列
  • asc从小到大排列,即升序
  • desc从大到小排序,即降序
  • 查询未删减男人学生音信,按学号降序

select * from students
where gender=1 and isdelete=0
order by id desc;
  • 询问未删减科目音信,按名称升序

select * from subject
where isdelete=0
order by stitle;

动用where子句对表中的数据筛选,结果为true的行会出现在结果聚集
语法如下:

1. DDL

SHOW DATABASES: 查看所有数据库USE 数据库名:切换到某数据库CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARSET=UTF8]DROP DATABASE [IF EXISTS] 数据库名

SHOW TABLES: 查看数据库下所有表DESC 表名:查看表结构CREATE TABLE [IF NOT EXISTS] 表名 (列名 列类型, 列名 列类型, ......);DROP TABLE 表名* 修改表:前缀 ALTER TABLE 表名, alter table 表名 add|change|drop 列名 类型;1. 添加列: ADD (列名 列类型, 列名 列类型, ......)2. 删除列: DROP 列名3. 修改列类型: MODIFY 列名 列类型4. 修改列名: CHANGE 原列名 新列名 列类型5. 修改表名: RENAME TO 新表名

总结

  • 完整的select语句

select distinct *
from 表名
where ....
group by ... having ...
order by ...
limit star,count
  • 实行各种为:
    • from 表名
    • where ….
    • group by …
    • select distinct *
    • having …
    • order by …
    • limit star,count
  • 实质上行使中,只是说话中某个部分的组成,而不是漫天
select * from students where hometown is null;
select * from students where hometown is not null;
select * from students where hometown is not null and gender=0;
三.二.一 相比较运算符
  • 等于: =
  • 大于: >
  • 超过等于: >=
  • 小于: <
  • 低于等于: <=
  • 不等于: !=或<>

select * from students where id > 3; select * from subjects where id <= 4;select * from students where sname != '黄蓉';select * from students where isdelete = 0;

分组

  • 奉公守法字段分组,表示此字段同样的数量会被安置贰个组中
  • 分组后,只可以查询出同样的数据列,对于有差别的数据列不可能出以往结果集中
  • 能够对分组后的数量举行计算,做聚合运算
  • 语法:

select 列1,列2,聚合... from 表名 group by 列1,列2,列3...
  • 询问男女子总的数量

select gender as 性别,count(*)
from students
group by gender;
  • 查询各城市人口

select hometown as 家乡,count(*)
from students
group by hometown;

5、分页

3.2.5 空判断
  • null与’ ‘是见仁见智的
  • 判空 is null
  • 判非空 is not null

select * from students where hometown is null;查询没有填写地址的学生select * from students where hometown is not null; 查询填写了地址的学生select * from students where hometown is not null and gender=0; 查询填写了地址的女生

示例:分页

  • 已知:每页展现m条数据,当前来得第n页
  • 求总页数:此段逻辑前面会在python中贯彻
    • 询问总条数p1
    • 使用p1除以m得到p2
    • 假若整除则p二为总的数量页
    • 若是不整除则p二+一为总页数
  • 求第n页的多寡

select * from students
where isdelete=0
limit (n-1)*m,m

4)范围查询
in表示在3个非一而再的限制内
between … and …代表在八个总是的范围内

三.贰.二 逻辑运算符
  • and
  • or
  • not

select * from students where id>3 and gender=0;select * from students where id<4 or isdelete=0;

分组后的数目筛选

  • 语法:

select 列1,列2,聚合... from 表名
group by 列1,列2,列3...
having 列1,...聚合...
  • having后边的基准运算符与where的等同
  • 询问男人总人数

方案一
select count(*)
from students
where gender=1;
-----------------------------------
方案二:
select gender as 性别,count(*)
from students
group by gender
having gender=1;

已知:每页显示m条数据,当前来得第n页
求总页数:此段逻辑前边会在python中贯彻
询问总条数p1
使用p1除以m得到p2
万1整除则p二为总量页
一经不整除则p二+壹为总页数
求第n页的多寡。

2. DML

INSERT INTO 表名

UPDATE 表名 SET ... [where ...]

DELETE FROM 表名 [where ...]

对比where与having

  • where是对from前面钦命的表展开数量筛选,属于对原本数据的筛选
  • having是对group by的结果开始展览筛选

6)优先级
小括号,not,相比较运算符,逻辑运算符
and比or先运算,即便还要出现并希望先算or,须求整合()使用

3.2.6 优先级
  • 小括号,not,相比较运算符,逻辑运算符
  • and比or先运算,若是还要出现并期待先算or,需求整合()使用

  • count 总括总行数
  • max
  • min
  • sum
  • avg

select count from students;查询学生总数select max from students where gender=0;查询女生的编号最大值select min from students where isdelete=0;查询未删除的学生最小编号select sum from students where gender=1;查询男生的编号之和select avg from students where isdelete=0 and gender=0;查询未删除女生的编号平均值
  • group by 列1,列2,列3…
  • having 分组后的多寡筛选
  • having前边的基准运算符与where的大同小异

遵照字段分组,表示此字段同样的多寡会被内置三个组中分组后,只可以查询出同样的数据列,对于有反差的数据列相当的小概出现在结果聚集能够对分组后的数目举办总计,做聚合运算

select 列1,列2,聚合... from 表名 group by 列1,列2,列3...select gender as 性别, count from students group by gender; 查询男女生总数select hometown as 家乡,count from students group by hometown;查询各城市人数

select 列1,列2,聚合... from 表名 group by 列1,列2,列3... having 列1,...聚合...1. select count from students where gender=1; 查询男生总人数2. select gender as 性别,count from students group by gender having gender=1;

相比较where与having:where是对from前边钦命的表打开数量筛选,属于对本来数据的筛选having是对group
by的结果开始展览筛选

  • order by
  • desc | asc

将行数据依据列1进展排序,要是有些行列一的值一样时,则依据列二排序,依此类推默许遵照列值从小到大排列asc从小到大排列,即升序desc从大到小排序,即降序

select * from 表名 order by 列1 asc|desc, 列2 asc|desc,...select * from students where gender=1 and isdelete=0 order by id desc;查询未删除男生学生信息,按学号降序select * from subject where isdelete=0 order by stitle;查询未删除科目信息,按名称升序
  • limit start,count
  • 从start开始,获取count条数据
  • start索引从0开头当数据量过大时,在壹页中查阅数据是一件13分辛苦的政工

已知:每页彰显m条数据,当前来得第n页,
求总页数:查询总条数p壹运用p一除以m得到p二假使整除则p2为总量页假设不整除则p二+一为总页数求第n页的数据

select * from 表名 limit start,countselect * from students where isdelete=0 limit *m,m

获得部分行

  • 当数据量过大时,在1页中查看数据是1件非凡麻烦的事体
  • 语法

select * from 表名
limit start,count
  • 数据库,从start开始,获取count条数据
  • start索引从0开始

4、排序

  • DDL: 数据定义语言, 定义数据库对象:库、表、列、表结构
  • DML: 数据操作语言, 定义数据库记录,增、删、改 表记录
  • DQL: 数据查询语言, 查询记录
  • DCL: 数据调控语言, 定义访问权限和调整安全等第
select * from students
where isdelete=0
limit (n-1)*m,m
三.二.四 范围查询
  • in 代表在三个非再而三的界定内
  • between … and …代表在三个接二连三的限定内

select * from students where id in; 查询编号是1或3或8的学生select * from students where id between 3 and 8; 查询学生是3至8的学生select * from students where id between 3 and 8 and gender=1; 查询学生是3至8的男生
select 列1,列2,聚合... from 表名 group by 列1,列2,列3...
如:
select gender as 性别,count(*)
from students
group by gender;
三.二.三 模糊查询
  • like: 关键字
  • % 表示能够相称大4多个随机字符,0,一或多少个
  • _ 表示能够相称贰个自由字符,3个

select * from students where sname like '黄%'; 查询姓黄的学生select * from students where sname like '黄_'; 查询姓黄并且名字是一个字的学生select * from students where sname like '黄%' or sname like '%靖%'; 查询姓黄或叫靖的学生

二)逻辑运算符
and
or
not

3. DQL

  • 主导查询
  • 条件决定
  • 聚合
  • 分组
  • 排序
  • 分页

select * from 表名 [where ...]select 列名1[, 列名2, ...] from 表名 [where ...]select distinct * from 表名 [where ...] : 去重select 列名 * 1.5 from 表名 [where ...]: 字符串被当做0select 列名1 + 列名2 from 表名 [where ...]: NULL与任何运算都为NULL
select * from students where id>3 and gender=0;
select * from students where id<4 or isdelete=0;

将行数据依照列1开始展览排序,纵然有个别行列一的值一样时,则依据列二排序,就那样推算
暗许根据列值从小到大排列
asc从小到大排列,即升序
desc从大到小排序,即降序

select * from 表名
order by 列1 asc|desc,列2 asc|desc,...
如:
select * from students
where gender=1 and isdelete=0
order by id desc;

三)模糊查询
like
%表示率性多个随机字符
_表示2个Infiniti制字符

where是对from前面钦点的表张开数量筛选,属于对原始数据的筛选
having是对group by的结果实行筛选

5)空判断
留神:null与”是例外的
判空is null
判非空is not null

一)相比运算符
等于=
大于>
超越等于>=
小于<
稍低于等于<=
不等于!=或<>

select
from
where 分组以前的过滤
group by
having 分组之后的过滤
limit
1)依照字段分组,表示此字段同样的数额会被置于二个组中
二)分组后,只可以查询被分组的列和聚合函数
三)能够对分组后的数码进行总计,做聚合运算

查询的着力语法:

select 列1,列2,聚合... from 表名
group by 列1,列2,列3...
having 列1,...聚合...
如:
select gender as 性别,count(*)
from students
group by gender
having gender=1;
select * from 表名 where 条件;

完整的select语句

1、条件

select * from students where id in(1,3,8);
select * from students where id between 3 and 8;
select * from students where id between 3 and 8 and gender=1;

实行顺序为:

3、分组

having前面的标准运算符与where的平等

select 
from 表名
where ....
group by ... 
having ...
order by ...
limit star,count
select * from 表名;
select count(*) from students;
select max(id) from students where gender=0;
select min(id) from students where isdelete=0;
select sum(id) from students where gender=1;
select avg(id) from students where isdelete=0 and gender=0;
from 表名
where ....
group by ...
having ...
order by ...
limit star,count
select * from 表名
limit start,count

从start开始,获取count条数据
start索引从0开始

select * from students where id>3;
select * from students where name!='Tom';
select * from students where isdelete=0;

2、聚合

总结

1)from关键字背后写表名,表示数据出自是那张表
二)select后边写表中的列名,假如是*代表在结果中显得表中具有列
叁)在select后边的列名部分,能够使用as为列起小名,这么些外号出现在结果集中
肆)假如要询问多个列,之间利用逗号分隔
伍)消除重复行,在select前边列前应用distinct能够清除重复的行

select * from students where name like 'T%';
select * from students where name like 'To_';
select * from students where name like 'T%' or name like '%o%';

为了快捷取得总计数据,提供了七个聚合函数。
count(*):总结总行数,括号中写星与列名,结果是如出一辙的。
max(列):求此列的最大值。
min(列):求此列的纤维值。
sum(列):求此列的和。
avg(列):求此列的平均值。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图