11 mysql基础知识

1. 数据库介绍

1.1 什么是数据库

数据库就是存储数据的仓库,它的存储空间很大,可以存放百万条、千万条、上亿条数据。

1.2 为什么要有数据库

在没有接触到数据库的时候,我相信大多数朋友的数据,都是存在记事本,或者word文档中,这些东西也可以存

放数据,但是个人用的话,数据量小,还是可以的,但是大型门户网站的数据量十分庞大,如果再采用这种方式存

储用户的数据,在处理数据的时候将是一件十分头痛的事情,而且十分消耗时间。于是,数据库出现了。

1.3 数据库的优点

  • 整体数据结构化
  • 数据的共享性高、冗余度低且易扩充
  • 数据独立性高
  • 数据由数据库管理系统统一管理和控制,工作效率高

1.4 常见的数据库

  • 闭源
    • Oracle 甲骨文
    • SQL Server 微软
  • 开源
    • MySQL
    • Mariadb

2. 部署数据库服务

2.1 c/s架构

  • c 代表的是client
  • s 代表的是sever

mysql数据库采用的是一种c/s架构,分为服务端和客户端,我们开启服务端,然后用客户端连接数据库,就可

以操作数据库了,因为一般mysql自带的客户端是黑窗口界面对新手不友好,我们采用远程图形化界面连接数据库

2.2 安装mysql

这里我们采用phpstudy中自带的数据库,直接打开phpstudy,启动mysql服务即可

image-20201208162332780

windows安装mysql博客

2.2 远程连接数据库

2.2.1 安装sqlyong

远程连接数据库的软件有很多,这里以sqlsong为例,下载安装即可

提取码:y4rq

2.2.2 连接数据库

image-20201208162630605

2.2.3 导入数据

image-20201208163242762

image-20201208163353816

image-20201208163532720

3. 数据库中的名词介绍

名词 解释
sql语句 数据库语言
一类的数据存放在库里
一个库可以有多个表
一行,就是具体的一条数据
字段 定义这一列的内容

4. sql语句

sql语句,不区分大小写,但是每句sql语句必须是以;结尾
单行注释: --空格
多行注释: /**/

4.1 select 语句

select 字段名,字段名 from 表名 查询表中对应字段的值,*代表所有字段

查询city表中的id,name字段

select id,name from city;

image-20201208164702564

查询city中所有的字段

select * from city;

4.2 where 语句

where 语句你可以理解成是限制条件语句

查询city表中,所有中国的城市信息 CHN

select * from city where countrycode = "CHN";

4.2.1 多选一

  • 大于 小于 大于等于 小于等于 等于 不等于 != <>

查询人口数小于100人城市信息

select * from city where population < 100;

4.2.2 模糊查询

  • 数值区间
    • between x and y 在数值x和y之间都满足查询条件

查询人口数为100w-200w(包括两头)城市信息

select * from city where population between 1000000 and 2000000;
  • %
    • 通配符 匹配任意长度的任意内容

查询城市名为qing开头的城市信息

select * from city where name like "%qing";

11.查询城市名为jing结尾的城市信息

4.2.3 逻辑运算

符号 解释
and
or
not

查询中国,人口数超过500w的所有城市信息

select * from city where countrycode = "CHN" and population > 5000000;

查询中国或美国的城市信息

select * from city country countrycode = "CHN" or countrycode = "USA";

4.2.4 正则匹配

  • regexp 正则表达式 更加细粒度的匹配

4.2.5 身份运算

  • 关于null 不能直接用!= 或者= , 只能用is / is not

4.3 group by

select * from city group by countrycode;

会把在group by 后面的这个字段 , 也就是countrycode字段中的每一个不同的项都保留下来,并且把值是这一项

的所有行归为一组,只显示这一组的第一项

4.3.2 聚合函数

  • 把很多行的同一字段进行一些统计,最终得到一个结果
  1. count(字段) 统计这个字段有多少项

    统计city表的行数

    select count(*) from city;
    
  2. sum(字段) 统计这个字段对应的数值的和

    统计中国的总人口数

    select sum(population) from city where countrycode = "CHN";
    
  3. avg(字段) 统计这个字段对应的数值的平均值

  4. min(字段) 最大

  5. max(字段) 最小

4.3.3 分组聚合

统计每个国家的城市个数 group by

select countrycode,count(name) from city group by countrycode;

统计每个国家的总人口数

select countrycode,sum(population) from city group by countrycode;

4.4 having

过滤 组 having总是和分组一起用 , 要不然没意义

计算人口数超过1亿的国家

select countrycode,sum(population) from city group by countrycode having sum(population) > 100000000;

4.5 order by排序

  1. order by 字段 默认是升序asc 从小到大
  2. order by 字段 desc 指定降序排列 从大到小
  3. order by 字段1 asc,字段2 desc 指定先根据第一个字段升序排列,在第一个字段相同的情况下,再根据第二个字段排列

查询所有城市信息,并按照人口数升序输出

select name,population from city order by population;

查询所有城市信息,并按照人口数降序输出

select name,population from city order by population desc;

4.6 limit 限制

  1. 取前n个 limit n == limit 0,n

    查询中国所有的城市信息,并按照人口数从大到小排序输出,只显示前十名

    select name,population from city where countrycode = "CHN" order by population desc limit 10;
    
  2. 分页 limit m,n 从m+1开始取,往下取n个

    查询中国所有的城市信息,并按照人口数从大到小排序输出,跳过前6行,显示后面10行

    select name,population where countrycode = "CHN" order by population desc limit 6,10 
    

5. 小结

select 需要显示的列 from 表

​ where 条件

​ group by 分组

​ having 过滤组条件

​ order by 排序

​ limit 前n条

执行顺序

select 字段 from city where group by having order by limit
  4                1    2      3       5      6       7
原文地址:https://www.cnblogs.com/xcymn/p/14105448.html