数据库介绍

  • 数据库定义:存储和管理数据的系统
  • 数据库基本操作:增加(Create),删除(Delete),修改(Update),查找(Read)
  • 数据库分类
    1. 关系型数据库
    2. 非关系型数据库
关系型数据库(RDBMS) 非关系型数据库
存储形式 行列表格结构存储数据 键值对存储,文档存储,列式存储,图式存储
查询语言 使用SQL语言进行操作 不使用SQL语言(NoSQL)
典型产品 MySQL、Oracle、DB2、SQL Server MongoDB、Redis、HBase、Neo4j

SQL语句介绍

  • 定义:结构化查询语言(Structured Query Language)是关系型数据库管理系统的通用操作规范
  • SQL方言
    • 所有关系型数据库(MySQL/Oracle等)都遵循SQL标准
    • 不同数据库有特有语法

SQL语言分类

  • 根据功能分类
    1. DDL(数据定义语言):定义数据库对象,例如:CREATE DATABASE, CREATE TABLE
    2. DML(数据操作语言):对表记录进行增删改,例如:INSERT,DELETE,UPDATE
    3. DQL(数据查询语言):查询表记录(SELECT语句)
    4. DCL(数据库控制语言):管理数据库访问权限和用户

SQL通用规范

  1. 书写规范:一条SQL语句可以单行书写也可以多行书写,以分号;做结尾
  2. 大小写不敏感:建议关键词使用大写
  3. 注释规范:单行注释# 这是注释或者-- 这是注释,多行注释/* 这是多行注释 */

MySQL环境安装

软件安装

本次安装版本:MySQL 8.0.32,下载地址:MySQL :: Download MySQL Installer (Archived Versions)

配置环境变量

  • <MySQL目录>\bin添加到系统环境变量Path中

    [!note] MySQL默认密码
    MySQL默认用户名:root,默认密码:root

MySQL连接

指令行连接

  • 连接方式: 需要通过CS架构(客户端-服务器架构)进行连接。
  • 关键要素:
    • IP地址: 两台计算机之间要想通过网络连接,首先需要知道对方的IP地址。
    • 端口号: 每个应用软件都有一个唯一的属于自己的端口号,通过IP地址加端口号可以精准地连接到对应的服务。
  • 连接过程(CLI):
    1. 本地连接mysql -u<用户名> -p[密码],密码不写时,可以隐藏输入
    2. 远程连接mysql -h<数据库服务端IP> -P<数据库服务端端口> -u<用户名> -p[密码]

DataGrip连接


注意:此过程软件会安装驱动(mysql-connector-java-8.0.32.jar),MySQL :: Download MySQL Connector/J (Archived Versions)

自动下载

手动安装驱动

  1. 跳转到驱动程序界面
  2. 手动添加驱动,添加Jar包路径

    驱动包作用:该JAR文件允许Java程序(DataGrip)与MySQL数据库建立连接

MySQL语法

操作数据库(架构)

创建数据库

  • 语法格式CREATE DATABASE [IF NOT EXISTS] <database_name> [CHARSET='UTF8']
  • 注意
    • 当数据库存在时,会报错,可使用CREATE DATABASE IF NOT EXISTS 数据库名称
    • 使用CHARSET参数指定数据库的编码格式
  • 实例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 创建数据库  
    CREATE DATABASE 数据库名称;

    # 当数据库不存在时,创建数据库
    CREATE DATABASE IF NOT EXISTS 数据库名称;

    # 创建数据库并指定编码格式
    CREATE DATABASE 数据库名称 CHARSET = 'UTF8';
    CREATE DATABASE 数据库名称 DEFAULT CHARSET = 'UTF8';

查看数据库

  • 语法格式
    • 查看全部数据库:SHOW DATABASES
    • 查看单个数据库:SHOW CREATE DATABASE 数据库名称 语句的主要作用是查看数据库的完整创建定义,不会真正创建数据库,若没有对应数据库则会报错
  • 实例
    1
    2
    3
    4
    5
    # 查看数据库  
    SHOW DATABASES;

    # 查看单个数据库
    SHOW CREATE DATABASE 数据库名称;

选择数据库

  • 语法格式
    • 选择数据库USE 数据库名称;
    • 查看当前数据库SELECT database();
  • 实例
    1
    2
    3
    4
    5
    # 选择数据库
    USE 数据库名称;

    # 查看当前数据库
    SELECT database();

删除数据库

  • 语法格式DROP DATABASE 数据库名称;
  • 注意:此操作不可逆,数据无法恢复
  • 实例
    1
    DROP DATABASE 数据库名称;

修改数据库

  • 语法格式ALTER DATABASE 数据库名称 编码格式;
  • 注意:此方法只能改变数据库编码格式,不能改变数据库名称,要更改数据库名称只可通过删库重建修改
  • 实例
    1
    ALTER DATABASE 数据库名称 编码格式;

操作数据表

创建数据表

  • 语法格式
    1
    2
    3
    4
    5
    CREATE TABLE 表名(
    字段名 数据类型 [约束],
    字段名 数据类型 [约束],
    字段名 数据类型 [约束]
    )
    其中,表名,唯一标识数据表;字段名,即列名,表示数据属性;数据类型,限定字段存储格式;约束,对字段的额外限制条件
  • 常见数据类型
    • **整形(int)**:例如编号,年龄
    • 浮点类型:float(单精度),double(双精度),decimal(数学类型),与钱相关的用decimal避免精度丢失,有前到后精度依次提高,decimal(M, N),其中M表示数字总长度,N表示小数位长度
    • 字符串类型:固定字符串(char(字符串长度)),可变字符串(varchar(最大字符串长度)),已知固定长度用char,不确定长度用varchar
    • **枚举类型(enum)**:选项,用法enum('male', 'female')
  • 实例
    1
    2
    3
    4
    5
    6
    CREATE TABLE employee(  
    id int,
    name varchar(2),
    gender enum('male', 'female'),
    height float
    ) default charset ='utf8';

查看数据表

  • 语法格式show tables,查看数据库下所有表
  • 语法格式desc 表名或者describe 表名,展示表字段定义
  • 实例
    1
    2
    3
    SHOW TABLES

    DESC <table_name>

修改数据表

  • 语法格式rename table <旧表名> to <新表名>,重命名数据表
  • 实例
    1
    rename table <旧表名> to <新表名>

删除数据表

  • 语法格式drop table <table name>
  • 实例
    1
    drop table <table name>

数据类型

整数类型

整数类型 占用空间 表示范围 数据类型 表示范围
tinyint 1 Byte -128~127 tinyint unsigned 0-255
smallint 2 Byte -32768~32767 smallint unsigned 0-2^16-1
mediumint 3 Byte -800w~+800w mediumint unsigned
int 4 Byte -21,000w~+21,000w int unsigned
bigint 8 Byte bigint unsigned

浮点类型

  • 单精度:FLOAT
  • 双精度:DOUBLE
  • 数字类型:DECIMAL,用法decimal(M, N),其中M表示数字总长度,N表示小数位长度,存储小数要求没有误差时使用

字符串类型

  • 固定字符串:CHAR(n),长度固定,其中n表示字符串长度
  • 可变字符串:VARCHAR(n),长度不固定,但是有最大长度,n表示最大长度

    [!note] char 和 varchar 笔记
    char(3),如果填入’ab’时则会补一个空格为’ab ‘,占用3个字节
    varchar,最大长度为65535字节,在UTF8编码下,一个汉字约占3个字节,最多存放 65535/3 个汉字,故n最大取2w左右,若超过varchar最大大小,请使用TEXT类型

时间类型

  • DATE类型:保存格式为 YYYY-MM-DD
  • TIME类型:保存格式为HH:MM:SS
  • DATETIME类型:保存格式为:YYYY-MM-DD HH:MM:SS

约束

  • 主键约束:primary key,唯一标识表中的一行记录,一个表中只能有一个主键,且主键必须是非空的
  • 非空约束:not null,该字段不可以为空
  • 唯一约束:unique,该字段的值不可重复,一个表中可以有多个,可以为空值
  • 默认约束:default,该字段为空时,填入默认值
  • 外键约束:foreign key,填入数据时,会到关联表中查询该数据是否存在,若存在则成功填入,若不存在则填入失败