初识数据库

Posted 李憨憨_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识数据库相关的知识,希望对你有一定的参考价值。

数据库


文章目录


mysql

  MySQL的安装与初步认识
  库和表的操作以及MySQL中的数据类型
  基础增删改查
  进阶增删改查
  索引与事务


MySQL的安装与初步认识

初步认识:

    数据库: 存储数据的仓库
      存储介质: 本质上数据的存储介质依然是磁盘 (也有内存数据库, 但是基于内存的易失特性, 因此最终还是需要持久化存储)
      数据库与文件存储的区别: 数据库不单单是存储数据的仓库还包含一套数据库管理系统
       数据安全问题: 文件是在磁盘上随意存储, 但是数据库的数据通过管理系统提议进行管理
       文件不利于海量存储, 查询: 数据库管理系统为数据的存储设计了一套合适的数据结构
       文件在进程中控制不方便: 数据库管理系统通常是C/S架构, 不仅仅支持本地访问, 也支持远程访问, 并且内部实现安全操作
    数据库种类:
      关系型数据库: 以某种关系模型 (库, 表, 行, 列) 进行数据组织的数据库
        Oracle, SqlServer, MySQL, mariadb, sqlite…
      非关系型数据库: 当前更多指的是不基于sql实现的数据库
        Redis, MongoDB, memcached,
      sql: 结构化查询语言

MySQL服务器安装

CentOS 7通过yum安装mariadb

https://zhuanlan.zhihu.com/p/49046496
mysql -uroot       打开mysql客户端


查看字符集的设置正确与否:
  1. 打开客户端连接服务器成功

show variables like "%char%";

数据库基础

 库的操作,数据类型,表的操作
  sql语法规则-注意事项:
    sql语句并不区分大小写;
    sql语句每一条都要以英文分号结尾;
    sql语句中并不区分单引号与双引号;
    sql语句中库名称,表名称,字段属性名称不能随意使用关键字;

库的操作

  查看所有数据库:show databases;
  创建数据库:create database if not exists db_name;
  删除数据库:drop database db_name;
  选择所要操作的数据库:use db_name;
  查看当前选定的数据库:select database();

表的操作

  因为涉及到一张表中数据类型的定义
    如一张学生表,其中应该有年龄,学号,姓名……
  数据类型
    整型:bit(n), tinyint, smallint, int, bigint
    浮点型:float(m, d), double(m, d), decimal(m, d), numeric(m, d); m表示数字的格式,d表示其中小数的数字占据的个数
    字符串类型:varchar(n), text, mediumtext, blob; n表示字符的个数限制, 不是所占字节长度的限制
    日期类型:timestamp,datestamp
  表的操作:前提是一定要先选择所操作的数据库
    查看库中所有的表:show tables;
    创建表:create table if not exists student_tb(sn int, name varchar(8), age int, ch decimal(4, 2), en decimal(4, 2), birth datetime);
    查看表结构:describe student_tb; desc student_tb;
    修改表结构:alter table student_tb add math decimal(4, 2); alter table student_tb drop age;
    删除表:drop table student_tb;

基础增删改查

  新增:insert [into]
    默认全列插入:insert student_tb values(1101, "张三", 18, 87.55, 9.999, "2003-08-07 12:12:32");
    指定列插入:insert student_tb (sn, name, ch, en, age) values(1002, "李四", 67.5, 87.5, 19);
    多列插入:insert student_tb (sn, name, ch, en, age) values(1002, "赵六", 57.5, 47.5, 19)(1003, "王五", 77.5, 94.5, 17);
  修改:update……set……; 修改数据需要注意的是一定要设置过滤条件,否则会针对全部数据进行修改
    默认全部修改:update student_tb set birth="2003-08-15 08:32:54"; 会对表中所有学生的生日进行修改
    修改指定列指定行数据:update student_tb set birth="2003-08-15 08:32:54" where name="张三";
  删除:delete from……
    默认删除表中所有数据: delete from student_tb;
    删除指定行数据:delete from student_tb where name="赵六";
  查询:select……from……
    默认全列查询:select * from student_tb;
    指定列查询:select sn, name, ch, en, from student_tb;
    查询字段是表达式:select sn, name, ch+en from student_tb;
    查询字段起别名:select sn, name, ch, en, ch+en, as total, from student_tb;
    去重查询:distinct; 去重的查询结果只有去重依据字段
      单列去重:select distinct sn from student_tb;
      多列去重:select distinct sn, name from student_tb;
    排序查询:order by … desc/asc; desc-降序、asc-升序; 默认是升序
      以单列排序:select * from student_tb order by ch desc;
      以多列排序:select * from student_tb order by sn desc, ch desc; 第一列相同情况下使用第二列进行排序
    分页查询:limit n -限制去除前n条; limit n offset s --从偏移量第s条开始取出n条数据
      查询语文成绩前三名:select * from student_tb order by ch desc limit 3;
      每页2条,获取第1条数据:select * from student_tb order by ch desc limit 2 offset 2; (第0页是第0条和第1条,则第1页偏移量从2开始)
    条件查询:给查询设置一个过滤条件,符合条件的数据才能被查询出来
      而条件查询会使用到条件表达式
      比较的关系运算符:<, >, >=, <=, =, !=, <=>, <>
      范围查询:between … and…
        select * from student_tb where ch between 60 and 80;
      集合查询:in (a, b, c…)
        select * from student_tb name in("张三", "张老三", "张小三");
      模糊查询:like
        select * from student_tb where name like "%四%";
      空值查询:is null, is not null
        select * from student_tb where birth is not null;
    逻辑运算符:
      逻辑与:and -双目运算符,连接两个条件表达式,两个同为真
      逻辑或:or -双目运算符,连接两个条件表达式,任意一个为真,则结果为真
      逻辑非:not

以上是关于初识数据库的主要内容,如果未能解决你的问题,请参考以下文章

双目立体匹配GANet阅读笔记

视觉slam学习:初识slam,三维空间刚体运动代码实战,Eigen库的使用

视觉slam学习:初识slam,三维空间刚体运动代码实战,Eigen库的使用

视觉slam学习:初识slam,三维空间刚体运动代码实战,Eigen库的使用

初识堆C语言实现

OpenCV C++双目三维重建:双目摄像头实现双目测距