LINUX数据库

数据库说明:指长期存储在计算机内、 有组织的数据集

数据库的分类

1.关系型数据库:

  •    Oracle: 在大型项目中使用, 例如: 银行、 电信等项目

  •     MySQL: Web 项目中使用最广泛的关系型数据库

  •     Microsoft SQL Server: 在微软的项目中使用

  •     SQLite: 轻量级数据库, 主要应用在移动平台

  核心要素:数据行 数据列 数据表 数据库

2.非关系型数据库:redis  mongodb  hbase

命令连接MySQL数据库

前置条件:1.确定mysql的IP地址 (可以通过ifconfit来确定)

                   2.确定MySQL数据库服务是否开启(netstat  -snput | grep 3306)

连接命令:mysql  -h数据库   -P端口号   -u数据库登录用户名   -p数据库登录密码

                  -h不加时则表示为本机

                  -P不加时则表示默认3306端口

数据类型:

         整形int 

         字符串:varchar  (范围 varchar3 表示最多存3个字符 )

         小数:decimal     【 decimal(5,2) 表示该字段可以存5位数,其中小数位2,整数3】

         时间日期:datetime

数据约束

主键:物理上存储的顺序

  • 当把某个字段设定为主键之后,该字段的值 必须唯一,且不能为空

  • 针对主键的字段,可以设定 自动自增,自动在原来最大的ID值上加1

外键:维护两个表之间的关联关系

非空:此字段不允许填写空值  【空(null)和 ” 空字符是不一样的】

唯一:此字段的值不允许重复

默认值:当不填写此值时会使用默认值, 如果填写时以填写为准

命令操作数据库

前置条件

  • 命令行终端或DBeaver工具先连接数据库

  • mysql -uroot -p123456

常见数据库操作命令:

  • 查看所有数据库:show databases;

  • 使用数据库:use 数据库名;

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

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

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

命令操作数据库表

前置条件

  • 操作数据表之前要选通过use打开对应的数据库

常见数据表操作命令:

  • 查看当前数据库所有的表:show tables;

  • 查看表结构:desc 表名;

  • 查看表的创建语句:show create table 表名;

SQL语句

创建数据库表语法格式

create table 表名(
    字段名1 类型 约束,
    字段名2 类型 约束,
    …… …… ……
)

创建学生表,字段要求如下:

  • 姓名(长度为10)、年龄、身高(保留2位小数)

create table students(
    id int unsigned primary key auto_increment,   — id字段为主键,且值自增
    name varchar(20),   — name字段类型为字符串,长度为20
    age int unsigned,   — age 字段类型为无符号的整型
    height decimal(5,2)  — height字段类型为小数,小数位数为2
);

删除数据库表

drop table students;
drop table if exists students;

简单查询:select * from 表名;

添加一行数据:insert into 表名 values(…)

insert into students (id, name) values(0,’张三’);

insert into students values(0,’李四’,20,180);

添加多行数据:

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

insert into students values(0,’亚瑟3′,23,167.56),(0,’亚瑟4′,23,167.56);

insert into 表名 (字段名1,字段名2….) values (字段值1,字段值2,….),(字段值1,字段值2,….)

insert into students (id,name)values(0,’小黑’),(0,’小蓝’),(null,’大白’);

修改数据:update 表名 set 字段名1=值1,字段名2=值2…… where 条件

删除数据:delete from 表名 where 条件(物理删除对应的数据)

               注意:此方法为物理删除(找不回来), 工作中大部分使用逻辑删除(假删除,压根没删)

               删除部分记录 自增长字段不会从1 开始

drop table 表名 (删除数据表,包括数据和表结构)

数据查询操作

查询部分字段的值:select 字段名1,字段名2…. from 表名

条件查询

比较运算符:大于(>)、等于(=)、小于(<)、大于等于(>=)、小于等于(<=)、不等于(<>或者!=)

select * from 表名 where 条件

逻辑运算符: and(且,同时符合对应的条件), or(或,符合其中的一个条件), not(非,不符合该条件)

例:– 查询非天津学生的记录 select * from students where not hometown=’天津’;

模糊查询:select * from 表名 where 字段 like ‘ %或-‘

范围查询

in : 查询非连续范围内的数据

between … and : 查询连续范围内的数据(用来数值型字段中)

select * from 表名 where 字段 in(‘ xx, ‘y’ , ‘z’ )

select * from 表名 where 字段 between xx and xx ;

为空判断

空判断: is null

非空判断: is not null

排序:select * from 表名 order by 字段1 asc或desc**, 字段2** asc或desc ……..

  • asc: 表示从小到大排序(升序)

  • desc: 表示从大到小排序(降序)

聚合函数: select 聚合函数 from 表名 where 条件’;

                      count():查询总记录数

                       max:查询最大值

                        min:查询最小值

                         sum: 求和

                          avg:求平均数

分组查询 : (目的是对每一组的数据进行统计(使用聚合函数)

语法select 字段名1,字段名2,聚合函数…. from 表名 group by 字段名1,字段名2….

分组后的数据筛选

将分组之后的数据当成是一个表数据,然后再通过having 条件来对当前的表数据进行筛选

语法select 字段名1,字段名2,聚合函数…. from 表名 group by 字段名1,字段名2…. having 条件

  • having 条件 运算符跟where 条件运算符是一样的

  • 在having后面可以使用聚合聚函数

例– 查询所有班级中不同性别的记录数大于1的信息 select class, sex,count() from students group by class,sex having count()>1;

注:where 是对 from 后面指定的表进行数据筛选,属于对原始数据的筛选

having 是对group by 的结果进行筛选

having 后面的条件中可以用聚合函数 where后面

连接查询

内连接: 连接两个表时,取的是两个表中都存在的数据。(取交集)

语法格式:select * from  表名1 inner join 表名2 on 表1.列=表2.列;

  • 查询的是两个表的交集的数据

  • 表1的列与表2的列一定是存在关联关系

  • 内连接连接时可以连接多个表

左连接: 连接两个表时,取的是左表中特有的数据,对于右表中不存在的数据,用null来填充

语法格式:select * from 表1 left join  表2 on 表1.列=表2.列

右连接:连接两个表时,取的是右表中特有的数据,对于左表中不存在的数据,用null来填充

语法格式:select * from 表1 right join 表2 on 表1.列=表2.列

自关联

自连接的应用场景:

  • 在同一张表中,用两个字段来表示记录之间的层级关系时,可以使用自关联。比如地址信息中的,省、市的信息。

  • 省、市、区的信息,一般不会分开放在不同的表里面进行存储,而是放在同一个表当中。

要通过自关联进行查询时,当前自关联的表当中一定会存在两个相关联的字段

自关联要用别名

语法格式: select * from 表名 as 别名1 inner join 表名 as 别名2  on  别名1.列=别名2.列

子查询

将一条SQL查询的语句嵌入在其他的SQL语句中,被嵌入的SQL语句称之为子查询,其他的SQL称之为主查询

  • 子查询select语句,要么是充当条件,要么充当数据源

  • 子查询语句是一条完整的select语句,且可以单独执行

    原文作者:小艾哎吖
    原文地址: https://blog.csdn.net/m0_67570288/article/details/123357743
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞