zoukankan      html  css  js  c++  java
  • 数据库&MySQL

    数据库基础

    • 常见的数据库模型
      • 层次(树状)模型
      • 网状模型
      • 关系模型
    • 关系型数据库
      • 由相互关联的表通过共享属性构建数据的一种方法
      • 一个数据库由若干张表组成
      • 表中的行称为记录,列称为记录的属性
      • 关系型数据库主要通过SQL去定义,管理及查询数据
    • RDBMS 关系型数据库的管理系统
      • 对数据库进行管理,并能够进行相关查询的一套软件系统
      • 常见的:Oracle,Microsoft SQL Server,MySQL…

    SQL

    • 结构化查询语言,是一种用于和RDBMS软件进行交互的语言,可以定义,管理及查询数据
    • SQL包含五个部分:
    • 数据查询语言:
      • 保留字:SELECT,WHERE,ORDER BY,GROUP BY,HAVING等
    • 数据操作语言:
      • 保留字:INSERT,UPDATE,DELETE
    • 事务处理语言:
      • BEDIN TRANSACTION,COMMIT和ROLLBACK
    • 数据定义语言
      • 保留字:CREATE,DROP等
    • 数据控制语言
      • 保留字:GRANT,REVOKE等
    • SQL语句
    SELECT name
    FROM movies
    WHERE year=2000;
    
    • 连接到MySQL
    • 本地链接
      • 先进入MySQL所在目录,如:D:xamppmysalin
      • 键入命令mysql -u username -p
    • 原程链接
      • 利用PUTTY或SSH Secure Shell
      • 键入命令mysql -u username -p
    SQL语句 含义
    SHOW DATABASES; 显示服务器上所有的数据库
    USE datebase; 打开一个数据库 (其他操作的签提)
    SHOW TABLES; 显示当前数据库的所有数据表
    DESCRIBE table; 显示指定表的结构

    SELECT语句

    • SELECT column1,column2,...,columnN FROM table;

    • SQL语法扩展

    • *在SELECT子句中的用法

      • SELECT * FROM table
    • DISTINCT:使SELECT查询不返回重复值

      • SELECT DISTINCT columns FROM table
    • 用WHERE子句过滤结果

      • SELECT columns FROM table WHERE predicates
    • SQL的逻辑运算符(通常用于WHERE)

    运算符 描述
    =
    >
    <
    <=
    >=
    <> 不等于
    AND(&&)
    BETWEEN min AND MAX 在某一特定范围之内
    IN(value1,value2…) 检测是否是集合内的某值
    LIKE pattern 在WHERE子句中搜索列中的指定模式
    NOT(!)
    OR(||)
    • 使用了通配符%的LIKE运算符
    用法 描述
    LIKE ‘text%’ 以text开头的所有记录
    LIKE’%text’ 以text结尾的所有记录
    LIKE’%text%’ 包含text的所有记录

    %:匹配0个或多个字符
    _:仅匹配一个字符

    • ORDER BY对查询结果进行排序
    • LIMIT NUM返回记录的最大数
    • LIMIT NUM1,NUM2:NUM1为偏移量,NUM2为返回的记录的最大数

    聚合函数

    函数 含义
    AVG 返回复合条件记录集中表达式的平均值
    COUNT …的计数值
    MAX …的最大值
    MIN …的最小值
    SUM …的求和值
    SELECT AVG(rank)FROM movies WHERE year>=2000;
    SELECT COUNT(*)FROM movies WHERE rank>=8.8;
    
    • GROUP BY:根据指定规则进行分组
    SELECT column(s) FROM table WHERE predicates GROUP BY column;
    SELECT year,AVG(rank) average FROM movies WHERE year>=2000 GROUP BY year;
    //average为别名
    
    • HAVING的应用
    • 对聚合函数结果进行过滤,功能等同与WHERE子句
    • WHERE无法识别聚合函数生成的别名,此时只能用HAVING
    SELECT yearAVG(rank)average
    from movies
    WHERE year>=2000
    GROUP BY year 
    HAVING average>=8.0;
    

    增改删语句

    • INSERT
    • 向数据表中添加一行数据,即一条记录
    INSERT INTO table[(column1,column2,...,columnN)]
    VALUES(value1,value2,...,valueN);
    
    INSERT INTO actors[(id,first_name,last_name,gender)]
    VALUES(4545,'Wda','bob','F');
    
    INSERT INTO actors         //默认全部属性
    VALUES(4545,'Wda','bob','F');
    
    • UPDATE
    • 修改数据表中的数据
    UPDATE table
    SET column1=value1,column2=value2,...,columnN=valueN
    WHERE predicates
    
    UPDATE table
    SET column1=value1,column2=value2,...,columnN=valueN
    WHERE id=35161
    
    • DELETE
    • 从数据库表中删除数据
    DELETE FROM table
    WHERE conditions
    

    多表查询

    • 迪卡尔积
    • 设R,S为集合,用R中元素为第一元素 ,S中元素为第二元素构成有序对,所有的这样的有序对组成的集合叫笛卡尔积,记作RxS
    • JOIN的用法
    SELECT columns
    FROM table1
    	JOIN table2 ON conditions
    	...
    	JOIN tableN ON conditions
    WHERE conditions
    

    实例1

    SELECT*
    FROM movies
    	join movies_genres ON id = movie_id
    WHERE name="Bob"
    

    在这里插入图片描述

    实例2
    在这里插入图片描述
    防止出现二义性

    1.
    SELECT*
    FROM actors
       JOIN directors ON actor.first_name=directors.first_name
    WHERE actors.gender='F';
    2.别名
    SELECT*
    FROM actors a
       JOIN directors d ON a.first_name=d.first_name
    WHERE actors.gender='F';
    

    查询设计

    • key数据库中的某一列,该列的值在每一行中都是唯一的

    • 主键 primary key

      • 主键必须唯一
      • 不为空
      • 每个表有且仅有一个主键
    • 外键foreign key

      • 外键用于与另一张表的关联.能确定另一张表记录的字段,用于保持数据的一致性.比如A表中的一个字段是B表的主键,就是A表的外键
        使用DESCRIBE发现主键
        在这里插入图片描述
        说明id为主键
    • 设计查询

      • 哪个表中包含关键数据(FROM)
      • 结果集中需要哪些列(SELECT)
      • 各表如何连接(JOIN)
      • 哪些需要被过滤(WHERE)
  • 相关阅读:
    MySQL百万级数据量分页查询方法及其优化
    Windows10内置Linux子系统初体验
    谈谈区块链(18):以太坊的UTXO
    永久告别mac屏幕涂层脱落
    Cloud Foundry中DEA启动应用实例时环境变量的使用
    jQuery 事件方法大全-超全的总结
    UVA12304-2D Geometry 110 in 1!
    Hbase总结(五)-hbase常识及habse适合什么场景
    Android笔记之 网络http通信
    Mac下安装Redis
  • 原文地址:https://www.cnblogs.com/l0nmar/p/12553837.html
Copyright © 2011-2022 走看看