数据库

  1. 概念:

    按照数据结构来组织、管理、存放数据的库

    数据库=表+表之间的关系

  2. 常见数据库

    MySQL、Oracle、MongoDB、SQLServer、Redis、Sqlite

  3. 数据库与SQL的关系

    数据库是用来存放数据的,SQL语句用来操作数据库的数据

  4. MySQL

    1. 卸载:关闭服务、卸载软件MySQL、删除安装MySQL路径剩余的文件、ProgramData的MySQL文件删除
    2. 安装:双击 → ... → 安装类型(Custom)→ 修改安装路径 → finish
    3. 配置
    4. 关闭开启服务
    5. 登录:mysql -u root -p123
    6. 退出:exitctrl+c
  5. SQL语句

    1. DDL:数据库定义语言

      # 库
      create database 库名;
      show databases;
      use 库名;
      drop database 库名;
      show create database 库名;
      
      # 表
      show tables;
      show tables from 其他库名;
      create table 表名(
          id int primary key auto_increment,
          name varchar(20) unique not null,
          salary float(6,2),
          birthday date
        );
      desc 表名;
      drop table 表名;
      
      # 如果插入中文
      # 通知服务器客户端使用的编码是gbk
      set character_set_client=gbk;
      
      # 通知服务器客户端查看结果集使用的编码是 gbk
      set character_set_results=gbk;
      
      # 如果中文对不齐或乱码
      charset gbk;
      

      面试题:delete和truncate的区别?

    2. DML:数据库操作语言

      insert into 表名 values(1,'anfly',1.22,'1991-01-01');
      insert into 表名(id,name) vlaues(2,'bigfly');
      
      delete from 表名 [where 条件];
      truncate table 表名;
      update 表名 set name="",salery="" where 条件;
      
    3. DQL:数据库查询语言

      # 查
      select */name from 表名 [where id!><=1];
      # 并列、别名、修改数据
      select name as 姓名 , (math+chinese) as 数语和,(math10) as 数学加10 from 表名;
      # 条件合并
      select * from student where (math+english+chinese)>230;
      # 范围:between a and b,a和b都包含
      select * from 表名 where math between 80 and 90;
      # 条件并列:and
      select * from 表名 where math > 80 and chinese > 90;
      # 匹配枚举值:in
      select * from 表名 where math in(10,20,30);
      # 模糊查询:like,"_"代表一个字符,"%"代表(0,∞)
      select * from 表名 where name like '_%';
      
      # 聚合函数
      max
      count
      min
      sum
      avg
      
      # 分组
      select sex,count(*) from 表名 group by sex;
      
      # 分页查询
      select * from 表名 limit 2,5;
      
      # 排序
      select * from 表名 order by math asc/desc limit2,5;
      
    4. DCL:数据库控制语言

  6. 多表设计

    1. 一对一、一对多、多对多

      # 外键
      create table t(id int primary key,name varchar(100));
      create table s (id int primary key,name varchar(100));
      create table ts(t_id int,s_id int,constraint foreign key(t_id) references t(id),constraint foreign key(s_id) references s(id));
      
      # 李老师所有学生
      select * from s where id in(select s_id from ts where t_id=(select id from t where name = '李老师'));
      
      # 张三的所有老师
      select * from t where id in(select t_id from ts where s_id=(select id from s where name = '张三'));
      
    2. 多表联查

      1. 交叉查询

        # AB表
        select * from A,B;
        select * from A cross join B;
        
      2. 内连接查询

        select * from A inner join B on A.id=B.id;
        select * from A , B where A.id=B.id;
        
      3. 外连接查询

        # 左外
        select * from A left join B on A.id=B.id;
        
        # 右外
        select * from A right join B on A.id=B.id;
        

        面试题:左外和右外的区别?

  7. Navicat

    1. 下载、安装、破解

    2. 操作

      连接数据库、建库、删库、建表、删表、插入数据、删除数据、导出、导入

  8. 数据库优化

    索引优化

  9. 数据库性能检测工具

    explain

  10. 数据库视图

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 引入 : 数据保存的三种方式 数据保存到内存:优点:读写非常快缺点:程序关闭导致数据丢失 数据保存到文件:优点:数...
    奋斗的老王阅读 4,419评论 0 50
  • /*CREATE TABLE student3 (id int, -- 编号name varchar(20), ...
    小灰灰爱学习阅读 3,641评论 0 0
  • 1. 为什么软件测试工程师还需要学习数据库以及开发方面的知识? 测试工程师的目的是找出软件的不足,并告诉开发工程师...
    睿智的少年阅读 3,701评论 0 0
  • 一、数据库概述 1.为什么软件测试工程师还需要学习数据库以及开发方面的知识? ●测试工程师在测试软件过程中,不仅仅...
    AYang阅读 1,814评论 0 0
  • 数据库对于后端开发来说是必不可少所要用到的,而MySQL数据库是其中的主流之一,在中小型公司中使用的较为广泛,作为...
    Steven_SHH阅读 5,299评论 0 2

友情链接更多精彩内容