数据库、SQL

数据库是什么

  • 定义:用于存储数据的软件
  • 特点:表是数据存储的核心体现

数据库常见分类

  • 关系型数据库
    • RDMS:关系型数据库系统
    • 特征:以数据表的形式存储数据,便于数据查询
    • 常见的数据库代表:
      • Oracle:在大型项目中使用,例如:银行,电信等项目
      • MySql:web项目中使用最广泛的关系型数据库
      • Microsoft SQL Server:在微软的项目中使用
      • SQLite:轻量级数据库,主要应用在移动平台
    • 关系型数据库的核心要素:
      • 数据行(一条记录)
      • 数据列(字段)
      • 数据表(数据行的集合)
      • 数据库(数据表的集合,一个数据库中能够有n多个数据表)
  • 非关系型数据库
    • 不以数据表的形式存储数据的数据库类型

SQL介绍

  • SQL:结构化查询语言,通过SQL语言可以对数据库进行操作。所有主流的关系型数据库都支持使用SQL语句进行数据查询
  • DQL:数据查询语言,用于对数据进行查询

MYSQL介绍

  • 目前属于Oracle旗下产品,目前只有社区版免费
  • 特点:开源、支持多平台多语言
  • 注意:熟悉SQL和熟悉MySQL不是一回事儿。熟悉SQL:熟悉SQL语言;熟悉MySQL:用过MySQL数据库

数据库的远程连接

  • 实际工作中,数据库是安装在服务器中的,如果要直连数据库进行数据校验,就必须远程连接
  • 连接步骤:
    • 获取两个信息:服务器的IP地址;数据库的账号和密码
    • 电脑上使用数据库连接工具(如Navicat)建立连接,远程连接数据库
    • 连接过程中确认自己的电脑和服务器是否能够通信(ping命令)

数据类型和约束

  • 数据类型:
    • 整数:int,有符号范围(-2147483648—2147483647),无符号范围(0—4294967295)
    • 小数:decimal,例如:decimal(5,2),表示共存5位数,小数占2位,整数占3位
    • 字符串:varchar,范围(0—65533),例如varchar(3)表示最多存3个字符,一个中文或一个字母都占一个字符
    • 日期时间:datetime,范围(1000-01-01 00:00:00——9999-12-31 23:59:59),例如’2020-01-01 12:29:59’
  • 约束
    • 主键(primary key):物理上存储的顺序
    • 非空(not null):此字段不允许填写空值
    • 唯一(unique):此字段的值不允许重复
    • 默认值(default):当不填写此值时会使用默认值,如果填写时以填写的为准
    • 外键(foreign key):维护两个表之间的关联关系

SQL语言

非查询语句

  • 数据表
-- 创表语句
create table 表名(
字段1 类型,
字段2 类型,
)

-- 优化
drop table exists 表名;
-- drop table:删表 if exists:如果存在
-- 如果表存在执行删除操作
create table 表名(
字段1 类型,
字段2 类型,
);
  • 数据库
-- 创建数据库
create database 数据库名;
  • 插入语句
drop table if exists goods;
create table goods(
id int unsigned primary key auto_increment,
goodsName varchar(20),
num int,
company varchar(20),
remark varchar(30)
);
-- unsigned:无符号
-- primary key:主键(不为空)
-- auto_increment:自动递增

-- 插入语句
insert into 表名 values (字段对应值);
-- 多条插入语句用逗号隔开
  • 修改语句
update 表名 set 字段名=values where 限定条件
  • 删除语句
-- 删除语句,先查询所有数据
select * from 表名;
-- 语法格式
delete from 表名 where 条件
-- 务必给出限定条件,否则会删除所有数据
  • 3种删除数据方法
    • delete from 表名:清空表数据(只清空数据,保留结构),但不会重置主键计数
    • truncate table 表名:清空表数据(只清空数据,保留结构),并会重置主键计数
    • drop table 表名:删除表,包括表结构和数据
    • 删除速度:drop>truncate>delete

查询语句

基本查询

  • 查询所有:select * from 表名;
  • 查询指定字段:select 字段名1,字段名2.。。 from 表名;
  • 起别名:select 字段名1 as 别名1,字段名2 as 别名2 from 表名;
  • 去重:select distinct(字段名) from 表名;

条件查询

  • 比较运算符:select * from 表名 where 字段名=values;
  • 逻辑运算符:select *from 表名 字段名=values and 字段名=values;and并列条件

模糊查询

  • 字符:%匹配任意的多个字符
  • 语句格式:where 字段 like '%信息'
  • select * from goods where remark like '%一次性口罩';以一次性口罩结尾,前面内容不限制
  • select * from goods where remark like '%一次性口罩%';提取内容中包含一次性口罩的信息数据
  • 匹配单个任意字符:_
  • select * from goods where company like '_宝';

范围查询

  • 条件-范围查询:between 起始值 and 结束值,表示一个连续的范围,范围应该从小到大
    • select * from goods where price between 30 and 100;
  • in:in(条件1,条件2,…),表示在某个不连续的范围内
    • select * from goods where company in ('某东','x宝');

空判断

  • 判断空:is null
  • 注意:null''不是一码事;null是空;''是空字符

排序

  • order by 字段名 asc(升序)/desc(降序),默认情况下以升序排列

聚合函数

  • 数据总数:count();select count(字段名) from 表名
  • 最大值:max()select max(price) from goods;
  • 最小值:min()
  • 平均值:avg()
  • 求和:sum()

分组

  • 分组:group by 字段,可以根据给出的字段数据进行数据分组
  • 一般情况下,分组要配合聚合函数一起使用,目的是对分组后的数据进行进一步统计
  • select 字段名 别名,count(*) from 表名 group by 字段名;
  • 若分组后想再次进行条件筛选可使用having关键字
    • select company 公司名称,max(price) from goods group by company having company != '并夕夕';

分页查询

  • 分页查询:limit 数据索引,数据行数,索引从0开始
  • 如果获取当前数据的第一行数据起始索引可以省略
    • select * from goods limit 1;
  • 分页查询公式的使用:
    • 条件:每页显示m条数据,求:显示第n页的数据
    • 公式:(n-1)*m,m:查看指定页面数据
    • 假设:当前数据中,每页显示3条件数据,查看第二页数据内容
      • select * from goods limit 3,3;

连接查询

内连接
  • 内连接:显示两张表中存在对应关系的数据,无对应关系的数据不显示
  • 语法:select * from 表1 inner join 表2 on 表1.字段=表2.字段;
左连接
  • 左连接:以left join关键为界,关键字左侧的表的信息要全部显示出来,而关键字右侧表的信息,有对应的部分显示,无对应的部分以null占位填充即可
  • 语法:select * from 表1 left join 表2 on 表1.字段=表2.字段;
右链接
  • 右连接:以right join关键为界,关键字左侧的表的信息要全部显示出来,而关键字右侧表的信息,有对应的部分显示,无对应的部分以null占位填充即可
  • 主要解决三张表及以上进行连接查询时常见
  • 语法:select * from 表1 right join 表2 on 表1.字段=表2.字段;

自关联

  • 自关联:通过起别名的方式将一张表变成俩表;通过表1.字段=表2.字段实现表间关联
  • select *from 表1 别名1 inner join 表1 别名2 on 别名1.字段1=别名2.字段2;

子查询-充当条件

  • 定义:在一条查询语句中,利用另一条语句作为条件或数据源,充当条件或数据源的语句称为子查询语句
  • 注意:子查询语句在使用时,务必使用括号括起来
  • 子查询充当条件
    • select * from 表名 where 字段 > (select avg(字段) from 表名);
  • 子查询关键字
    • in:范围
      • select * from 表名 where 字段 in (25,3,58,42);
      • select * from 表名 where 字段 in (select 字段 from 表名 where 字段 between 25 and 100);
    • some/any:任一个
      • select * from 表名 where 字段 =some(select 字段 from 表名 where 字段 between 25 and 100);
    • all:全部,等于所有
      • select * from 表名 where 字段=all (select 字段 from 表名 where 字段 between 25 and 100);
    • !=或<>all:不等于所有
      • select * from 表名 where 字段!=all (select 字段 from 表名 where 字段 between 25 and 100);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值