• MySQL数据库


    数据库(Database,简称DB)

    数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

    每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。

    我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

    所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

    长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”

    作用:保存、管理数据

    数据库总览

            关系型数据库(SQL) MySQL、Oracle、SQL Server、SQLite、DB2

            非关系型数据库(NOSQL) Redis、MongoDB

    数据库管理系统(Database Management System)

            数据库管理系统是对数据进行管理的大型系统软件,它是数据库系统的核心组成部分,用户在数据库系统中的一切操作,包括数据定义、查洵、更新(包括插入、删除和修改)及各种控制都是通过DBMS进行的。DBMS就是实现把用户意义下的抽象逻辑数据处理转换成计算机中的具体的物理数据的处理软件,这给用户带来很大的方便。

    主要功能:

    1.数据定义功能·

    2.数据操纵功能

    3.数据库运行管理功能

    4.数据库的建立和维护功能

    5.数据通信接口

    6.数据组织、存储和管理

            数据管理软件,科学组织和存储数据、高效地获取和维护数据 

     MySQL简介

    MySQL是一个开源的关系型数据库管理系统,由瑞典MySQL AB公司1995年开发,迅速成为最流行的开源关系型数据库管理系统。

    MySQL数据库管理系统由瑞典MySQL AB公司1995年开发,该公司后被Sun公司收购,现在Sun公司又被Oracle公司收购,因此MySQL目前属于Oracle旗下产品

    MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版。由于其体积小,速度快,总体拥有成本低,一般中小型网站的开发都选择MySQL作为网站数据库。

    特点

            免费、开源数据库    

            小巧、功能齐全

            使用便捷

            可运行于Windows或Linux操作系统

            可适用于中小型甚至大型网站应用

    结构化查询语句SQL

            Structure Query Language(结构化查询语言)简称SQL,它被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。数据库管理系统可以通过SQL管理数据库;定义和操作数据,维护数据的完整性和安全性。

    优点:

    1、简单易学,具有很强的操作性
    2、绝大多数重要的数据库管理系统均支持SQL
    3、高度非过程化;用SQL操作数据库时大部分的工作由DBMS自动完成

    结构化查询语句分类

    名称

    解释

    命令

    DDL

    (数据定义语言)

      定义和管理数据对象,

    如数据库,数据表等

    CREATE、DROP、ALTER

    DML

    (数据操作语言)

    用于操作数据库对象中所包含的数据

    INSERT、UPDATE、DELETE

    DQL

    (数据查询语言)

    用于查询数据库数据

    SELECT

    DCL

    (数据控制语言)

    用来管理数据库的语言,包括管理权限及数据更改

    GRANT、COMMIT、ROLLBACK

    DDL操作数据库

    创建数据库

    CREATE DATABASE [IF NOT EXISTS] 数据库名;

    删除数据库

    DORP DATABASE  [IF EXISTS] 数据库名;

    查看数据库

    SHOW   DATABASES;

    使用数据库

    USE  数据库名;

    DDL操作表

    创建数据表

    反引号用于区别MySQL保留字与普通字符而引入的

     删表

    DROP  TABLE  [ IF  EXISTS ]   表名
    

    IF EXISTS 为可选,判断是否存在该数据表 如删除不存在的数据表会抛出错误 

    显示表结构 

    desc 表名

    显示表创建语句

    show create table 表名

    修改数据表

    修改表(ALTER TABLE)

    修改表名

    ALTER TABLE 旧表名  RENAME AS  新表名

    添加字段

    ALTER TABLE 表名   ADD 字段名   列类型 [ 属性 ] 
    1. #在员工表基础上增加age列
    2. ALTER TABLE workers ADD age INT;

    修改字段

     ALTER TABLE 表名   MODIFY 字段名   列类型 [ 属性 ]
    ALTER TABLE 表名   CHANGE 旧字段名  新字段名   列类型 [ 属性 ]
    
    1. #修改email 长度为50
    2. ALTER TABLE workers MODIFY email VARCHAR(50);
    3. #列名name 修改为username
    4. ALTER TABLE workers CHANGE sname username VARCHAR(20);

    删除字段 

    ALTER TABLE 表名   DROP  字段名
    1. #删除remark列
    2. ALTER TABLE workers DROP remark;

    列类型

    规定数据库中该列存放的数据类型

    分为:

    数值类型

     类型

    说明

    取值范围

    存储需求

    tinyint

    非常小的数据

    有符值: -27 ~ 27-1  

    无符号值:0 ~ 28-1                                

    1字节

    smallint

    较小的数据

    有符值:  -215 ~ 215-1  

    无符号值:  0 ~ 216-1       

    2字节

    mediumint

    中等大小的数据

    有符值:  -223 ~ 223-1  

    无符号值:  0 ~ 224-1       

    3字节

    int

    标准整数

    有符值: -231 ~ 231-1  

    无符号值:0 ~ 232-1       

    4字节

    bigint

    较大的整数

    有符值: -263 ~263-1

    无符号值:0 ~264-1       

    8字节

    float

    单精度浮点数

    ±1.1754351e -38

    4字节

    double

    双精度浮点数

    ±2.2250738585072014e -308

    8字节

    decimal

    字符串形式的浮点数

    decimal(m, d)

    m个字节

    字符串类型

     类型

    说明

    最大长度

    char[(M)]

    固定长字符串,检索快但费空间, 0 <=  M  <=   255

    M字符

    varchar[(M)]

    可变字符串

    0 <=  M <= 65535

    变长度

    tinytext

    微型文本串

    28–1字节

    text

    文本串

    216–1字节

    日期和时间型数值类型

     类型

    说明

    取值范围

    DATE

    YYYY-MM-DD,日期格式

    1000-01-01~ 9999-12-31

    TIME

    Hh:mm:ss ,时间格式

    -838:59:59~838:59:59

    DATETIME

    YY-MM-DD hh:mm:ss 

    1000-01-01 00:00:00  至

    9999-12-31 23:59:59

    TIMESTAMP

    YYYYMMDDhhmmss格式表示的时间戳

    197010101000000 ~2037年的某个时刻

    YEAR

    YYYY格式的年份值

    1901~2155

    NULL值

    理解为“没有值”或“未知值” 不要用NULL进行算术运算,结果仍为NULL

    选择数据类型:

            整数和浮点

            日期类型

            char和varchar

    数据字段属性

    PRIMARY KEY

            主关键字(主键,primary key)是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。

    多字段主键案例:

     UNSIGNED

            无符号的 声明该数据列不允许负数

    ZEROFILL

            0填充的 不足位数的用0来填充,如 int(3),5则为 005

    AUTO_INCREMENT
     自动增长的,每添加一条数据,自动在上一个记录数上加1

     通常用于设置主键,且为整数类型

    可定义起始值和步长  

    NULL 和 NOT NULL

            默认为NULL,即没有插入该列的数值

            如果设置为NOT NULL,则该列必须有值

    DEFAULT

            默认的

            用于设置默认值 例如,性别字段,默认为“男”,否则为“女”;若无指定该列的值,则默认为“男”的值

     MySQL注释: 1、#……     单行注释

                              2、/*……*/    多行注释

    数据表的类型

    1. CREATE TABLE 表名(
    2. #省略一些代码
    3. ) ENGINE = MyISAM
    1. CREATE TABLE 表名(
    2. #省略一些代码
    3. ) ENGINE = InnoDB

    MySQL的数据表的类型

    MyISAM、InnoDB 、HEAP、BOB、CSV等

    常见的MyISAM与InnoDB类型

    名称

    MyISAM

    InnoDB

    事务处理

    不支持

    支持

    数据行锁定

    不支持

    支持

    外键约束

    不支持

    支持

    全文索引

    支持

    不支持

    表空间大小

    较小

    较大,约2倍

    使用MyISAM:   节约空间及相应速度

    使用InnoDB:     安全性,事务处理及多用户操作数据表

    DML语言

    DML语言(数据操作语言)

    用于操作数据库对象中所包含的数据

    包括

            INSERT   ( 添加数据语句 )

            UPDATE ( 更新数据语句 )

            DELETE  ( 删除数据语句 )

    添加数据

    INSERT INTO  表名  [ ( 字段1, 字段2, 字段3, … ) ]  VALUES  (  '值1', '值2', '值3', …)
    

    字段或值之间用英文逗号隔开

    “字段1, 字段2…”该部分可省略,但添加的值务必与表结构数据列顺序相对应,且数量一致

    可同时插入多条数据,values 后用英文逗号隔开

    1. INSERT INTO 表名 [ ( 字段1, 字段2, 字段3, … ) ] VALUES ( '值1', '值2', '值3', …),
    2. ( '值1', '值2', '值3', …),( '值1', '值2', '值3', …),......( '值1', '值2', '值3', …);
    1. INSERT INTO workers VALUES (1,'张三丰','男','1367-10-21','12321222@qq.com',102),
    2. (2,'达摩','男','122-4-15','1121213242@126.com',54),
    3. (3,'梅超风','女','1547-6-1','232442@163.com',44),
    4. (4,'三体星人','未知','3012-8-15','12345678@fly.com',2000),
    5. (5,'超级赛亚人','男','1985-2-3','whosyurdaday@sina.com',25);

     

    修改数据 

    1. UPDATE 表名
    2. SET column_name = value [ , column_name2 = value2, …. ] [ WHERE condition ];

    column_name 为要更改的数据列

    value 为修改后的数据,可以为变量、具体值、表达式或者嵌套的SELECT结果

    condition为筛选条件,若不指定则修改该表的所有列数据

    WHERE条件子句

    有条件地从表中筛选数据

    WHERE中的运算符:

    运算符

    含义

    范例

    结果

    =

    等于

    5=6

    false

    <> 或 !=

    不等于

    5!=6

    true

    >

    大于

    5>6

    false

    <

    小于

    5<6

    true

    >=

    大于等于

    5>=6

    false

    <=

    小于等于

    5<=6

    true

    BETWEEN

    在某个范围之间

    BETWEEN 5 AND 10  

    -

    AND

    并且

    5>1 AND 1>2

    false

    OR

    5>1 OR 1>2

    true

    1. #将sid为4的那一行的username改为"弗利萨"
    2. UPDATE workers SET username='弗利萨' WHERE sid=4;
    3. #将sid为4的那一行的age设为250
    4. UPDATE workers SET age =250 WHERE sid=4;

     

     删除数据

    delete命令

    DELETE     FROM   表名  [ WHERE  condition ]; 
    
    1. #删除age为2000的那一行
    2. DELETE FROM workers WHERE age=250;

     

    condition为筛选条件,若不指定则删除该表的所有列数据

    TRUNCATE命令

    用于完全清空表数据,但表结构、索引、约束等不变

    TRUNCATE     [TABLE]    table_name

    区别于DELETE命令

    相同:都能删除数据、不删除表结构,但TRUNCATE 速度更快

    不同:使用TRUNCATE TABLE重新设置AUTO_INCREMENT计数器

               使用TRUNCATE TABLE不会对事务有影响

  • 相关阅读:
    不要再说离群点难观测,来学学这种特征异常检测的高效方法
    关于小程序如何做到强制更新
    Vue (十五) --------- UI 组件库
    基于Python实现看图说话和微表情识别
    AWS SAP-C02教程2--存储资源
    牛客题目——盛水最多的容器、字符串的排列
    其它样式相关属性
    C++二分算法:使数组严格递增
    使用 @antfu/eslint-config 配置 eslint (包含兼容uniapp方法)
    Visual Studio 调试上传文件时自动停止运行的解决方法
  • 原文地址:https://blog.csdn.net/qq_51810428/article/details/126611573