Mysql

Mysql学习

  •  什么是数据库

     数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

 

  •  数据库分类
    • 关系数据库:Mysql、oracle、SQL server、DB2、SQLL李特
    • 非关系数据库(NoSql===》Not Only SQL):redis、MongoDB

 

  •  Mysql(https://www.mysql.com/)
    • 配置文件在mysql的安装目录下的my.ini

Mysql_第1张图片

    • “--”单行SQL的注释、“/*    */”多行SQL的注释

 

  • 操作数据库
--创建数据库
create database [if not exists] dataname 

--删除数据库
drop database [if not exists] dataname 

--使用数据库
use dataname

--查看所有数据库
show databases

  

  • 数据库的列类型
    • 数值

    TINYINT:   微整型,一个字节,  范围  -128~127

    SMALLINT:   小整型,2个字节,范围  -32768~32767

    INT:   整型,4个字节

    BIGINT:   大整型,8个字节

    FLOAT:   单精度浮点型,4个字节,最大3.4e38,可能产生误差

    DOUBLE:   双精度浮点型,8个字节,可能产生误差

    DECIMAL(M,D):  定点小数,小数点不会变化,几乎也不会产生误差,M代表总的有效数,D代表小数点后的有效位数(工资、价格.....)

   BOOL/BOOLEAN: 通常用于存储两个值得数据,  TRUE/FALSE。真正存储时 true转为1,FALSE转为0。因为Mysql中没有真正的布尔型,最终会自动转为微整型TINYINT。

    • 日期时间型

   DATE:           日期型          YYYY-MM-DD

   TIME:            时间型          HH:mm:ss

  DATETIME:   日期时间型    YYYY-MM-DD  HH:mm:ss

    • 字符串型

  VARCHAR(M): 变长字符串,不会产生空间浪费,操作速度相对慢,M的最大值为65535

  CHAR(M):  定长字符,可能会产生空间浪费,操作速度相对快,往往存储一些固定长度的数据(如手机号码、身份证号等),M的最大值为255

  TEXT(M):   大型变长字符串,M的最大值是2G.   

    •  null

 

  • 数据库的字段属性(重点)
    • unsigned:无符号的整数,不能为负
    • zerofill:0填充,不足的0补上
    • 自增:在基础上自增1
    • 非空:not null
    • 默认:如果插入没有值则选择默认值

 

  •  mysql的引擎

参考:https://www.cnblogs.com/psyu/p/10883332.html

 

  •  mysql数据管理

 

--插入数据
insert into tablename (xxx,xxx,xxx) values(xxx,xxx,xxx)

--查询
select xxx from tablename

--删除
delete from tablename where xxx

--清空表
truncate table

--修改
update tablename where set  name=newvalue

  

  • select
    • SELECT
          [ALL | DISTINCT | DISTINCTROW ]
          [HIGH_PRIORITY]
          [STRAIGHT_JOIN]
          [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
          [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
          select_expr [, select_expr] ...
          [into_option]
          [FROM table_references
            [PARTITION partition_list]]
          [WHERE where_condition]
          [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
          [HAVING where_condition]
          [WINDOW window_name AS (window_spec)
              [, window_name AS (window_spec)] ...]
          [ORDER BY {col_name | expr | position}
            [ASC | DESC], ... [WITH ROLLUP]]
          [LIMIT {[offset,] row_count | row_count OFFSET offset}]
          [into_option]
          [FOR {UPDATE | SHARE}
              [OF tbl_name [, tbl_name] ...]
              [NOWAIT | SKIP LOCKED] 
            | LOCK IN SHARE MODE]
          [into_option]
      
      into_option: {
          INTO OUTFILE 'file_name'
              [CHARACTER SET charset_name]
              export_options
        | INTO DUMPFILE 'file_name'
        | INTO var_name [, var_name] ...
      }
    • where
    • in
    • null
    • not null
    • having
    • like
    • join in
    • as
    • desc
    • asc
    • order by
    • group by
    • limit

 

  • 聚合函数
    • count()
    • sum()
    • avg()
    • max()
    • min()

 

  • 事务(要么都成功,要么都失败)

原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

一致性(Consistency):事务前后数据的完整性必须保持一致。

隔离性(Isolation):事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

 

 

脏读:指一个事务读取了另外一个事务未提交的数据。

不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对)

幻读(虚读):是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。(一般是行影响,多了一行)

 

  • 索引:简单来说就像一本书的目录
    1. 普通索引:仅加速查询 最基本的索引,没有任何限制,是我们大多数情况下使用到的索引。
    2. 唯一索引:与普通索引类型,不同的是:加速查询 + 列值唯一(可以有null)
    3. 全文索引:全文索引(FULLTEXT)仅可以适用于MyISAM引擎的数据表;作用于CHAR、VARCHAR、TEXT数据类型的列。
    4. 组合索引:将几个列作为一条索引进行检索,使用最左匹配原则。
    5. 参考:http://blog.codinglabs.org/articles/theory-of-mysql-index.html

 

  • 数据库三大范式
    • 第一范式:原子性,属性不可再分
    • 第二范式:在1下,属性完全依赖于主键,在一张表只描述一件事
    • 第三范式:在2下,每一列只依赖主键

 

你可能感兴趣的:(Mysql)