• Mysql基础【操作数据库表】


    一、数据库相关概念🍓

    数据库: 存储数据的仓库,数据是有组织的进行存储,英文:DataBase,简称 DB

    • 存储和管理数据的仓库
    • 其本质是一个文件系统, 还是以文件的方式,将数据保存在电脑上

    在这里插入图片描述
    数据库管理系统:管理数据库的大型软件英文:DataBase Management System,简称 DBMS,指一种操作和管理维护数据库的大型软件。

    在这里插入图片描述
    MySQL就是一个 数据库管理系统软件, 安装了Mysql的电脑,我们叫它数据库服务器

    数据库管理系统的作用
    用于建立、使用和维护数据库,对数据库进行统一的管理

    SQL:英文:Structured Query Language,简称 SQL,结构化查询语言
    是一种特殊目的的编程语言,是一种数据库 查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

    常见的关系型数据库管理系统:

    • Oracle:收费的大型数据库,Oracle 公司的产品 ---->甲骨文 银行Oracle

    • MySQL: 开源免费的中小型数据库。后来 Sun 公司收购了 MySQL,而 Sun 公司又被 Oracle 收购 java

    • SQL Server:MicroSoft 公司收费的中型的数据库。C#、.net 等语言常使用

    • PostgreSQL:开源免费中小型的数据库 定位

    • DB2:IBM 公司的大型收费数据库产品

    • SQLite:嵌入式的微型数据库。如:作为 Android 内置数据库

    • MariaDB:开源免费中小型的数据库–mysql 的一个分支

    二、 MySQL 数据库🍓

    (一)、安装🥝

    MySQL 5.7 下载路径

    在这里插入图片描述
    找到安装目录 ,默认在C 盘 配置环境变量

    C:\Program Files (x86)\MySQL\MySQL Server 5.7\bin

    登录
    打开cmd 命令行

    win+R 输入cmd回车

    在黑框中输入,mysql -uroot -p123456,回车,出现下图且左下角为mysql>,则登录成功。

    -u user 的缩写
    -p password

    mysql -uroot -p123456
    
    • 1

    在这里插入图片描述
    远程链接:

     mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306) 
    
    • 1

    win + R
    cmd
    navivate sqlyog idea —>datagrip

    退出

    • exit
    • quit

    安装目录

    在这里插入图片描述

    (二)、 MySQL数据模型🥝

    关系型数据库

    关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的 二维表 组成的数据库

    如下 学生表和教师表 都是有行有列二维表我们将这样的称为关系型数据库

    在这里插入图片描述

    关系型数据库的优点:

    • 都是使用表结构,格式一致,易于维护。
    • 使用通用的 SQL 语言操作,使用方便,可用于复杂查询。
    • 关系型数据库都可以通过SQL进行操作,所以使用方便。
    • 数据存储在磁盘中,安全。

    数据模型

    在这里插入图片描述

    如上图,我们通过客户端可以通过数据库管理系统创建数据库,在数据库中创建表,在表中添加数据。

    创建一个数据库,会在本地文件夹生成.frm 表文件 和 .MYD 数据文件,在安装目录下的 data文件下

    mysql> create database db1;
    
    • 1
    • MySQL中可以创建多个数据库,每个数据库对应到磁盘上的一个文件夹
    • 在每个数据库中可以创建多个表,每张都对应到磁盘上一个 frm 文件
    • 每张表可以存储多条数据,数据会被存储到磁盘中 MYD 文件中
      在这里插入图片描述

    三、SQL概述🍓

    (一)、 SQL 简介🥝

    • 英文:Structured Query Language,简称 SQL
    • 结构化查询语言,一门操作关系型数据库的编程语言
    • 定义操作所有关系型数据库的统一标准
    • 对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称为“方言”

    通用语法

    1) SQL语句可以单行 或者 多行书写,以分号 结尾 ;
    2) 可以使用空格和缩进来增加语句的可读性。
    3) MySql中使用SQL不区分大小写,一般关键字大写,数据库名 表名列名 小写。
    4) 注释方式

    在这里插入图片描述

    # show databases; 单行注释 
    -- show databases; 单行注释 
    /* 多行注释 
    show databases; */ 
    
    • 1
    • 2
    • 3
    • 4

    (二)、 SQL分类🥝

    在这里插入图片描述

    1.DDL:操作数据库🍎

    在这里插入图片描述

    /* 方式1 直接指定数据库名进行创建 默认数据库字符集为:latin1 */ 
    CREATE DATABASE db1; 
    /* 方式2 指定数据库名称,指定数据库的字符集 一般都指定为 utf8,
    与Java中的编码保持一致 */ 
    CREATE DATABASE db1_1 CHARACTER SET utf8;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    为了避免错误

    CREATE DATABASE IF NOT EXISTS 数据库名称;
    
    
    • 1
    • 2

    查看/选择数据库

    数据库创建好了,要在数据库中创建表,得先明确在哪儿个数据库中操作,此时就需要使用数据库。

    在这里插入图片描述

    代码示例

    -- 切换数据库 从db1 切换到 db1_1 
    USE db1_1; 
    -- 查看当前正在使用的数据库 
    SELECT DATABASE(); 
    -- 查看Mysql中有哪些数据库 
    SHOW DATABASES; 
    -- 查看一个数据库的定义信息
    SHOW CREATE DATABASE db1_1; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    修改数据库
    修改数据库字符集
    在这里插入图片描述

    -- 将数据库db1 的字符集 修改为 utf8
    ALTER DATABASE db1 CHARACTER SET utf8; 
    -- 查看当前数据库的基本信息,发现编码已更改 
    SHOW CREATE DATABASE db1; 
    
    • 1
    • 2
    • 3
    • 4

    删除数据库
    在这里插入图片描述

    -- 删除某个数据库 
    DROP DATABASE db1_1;
    DROP DATABASE IF EXISTS 数据库名称;
    
    • 1
    • 2
    • 3

    2.DDL:操作表🍎

    操作表也就是对表进行增(Create)删(Retrieve)改(Update)查(Delete)。

    查询表

    查询当前数据库下所有表名称

    SHOW TABLES;
    
    • 1

    查询表结构

    DESC 表名称;
    
    • 1

    创建表

    CREATE TABLE 表名( 
      字段名称1 字段类型(长度), 
      字段名称2 字段类型 注意 最后一列不要加逗号 
     )
    • 1
    • 2
    • 3
    • 4
    • 5

    数据类型

    常见数据类型

    在这里插入图片描述

    char

    详细的数据类型(了解即可)
    在这里插入图片描述

    注意:MySQL中的 char类型与 varchar类型,都对应了 Java中的字符串类型,
    区别在于:
    char类型是固定长度的: 根据定义的字符串长度分配足够的空间。
    varchar类型是可变长度的: 只使用字符串长度所需的空间

    比如:保存字符串 “abc”

    x char(10) 占用10个字节 
    y varchar(10) 占用3个字节
    
    • 1
    • 2

    适用场景: char类型适合存储 固定长度的字符串,比如 密码 ,性别一类 varchar类型适合存储 在一定范围内,有长度变化的字符串

    需求1: 创建商品分类表

    表名:
    category 分类
    表中字段: 
      分类ID :cid ,为整型 
      分类名称:cname,为字符串类型,指定长度20 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    -- 切换到数据库 db1 
    USE db1; 
    -- 创建表 
    CREATE TABLE category( 
      cid INT, 
      cname VARCHAR(20) 
    ); 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    练习:

    创建测试表

    表名: 
    test1 
    表中字段: 
      测试ID : tid ,为整型 
      测试时间: tdate , 为年月日的日期类型
    
    • 1
    • 2
    • 3
    • 4
    • 5
    -- 创建测试表 
    CREATE TABLE test1( 
      tid INT, 
      tdate DATE 
    ); 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    快速创建一个表结构相同的表(复制表结构)

    语法格式

    create table 新表名 like 旧表名
    
    • 1
    -- 创建一个表结构与 test1 相同的 test2表 
    CREATE TABLE test2 LIKE test1; 
    -- 查看表结构 
    DESC test2;
    
    -- 查看创建表的SQL语句 
    SHOW CREATE TABLE category; 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    删除表

    在这里插入图片描述

    -- 直接删除 test1 表 
    DROP TABLE test1; 
    -- 先判断 再删除test2表 
    DROP TABLE IF  EXISTS test2; 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    修改表

    1)修改表名

    语法格式

    rename table 旧表名 to 新表名
    
    • 1

    将category表 改为 category1

    RENAME TABLE category TO category1; 
    
    • 1
    1. 修改表的字符集
    alter table 表名 character set 字符集
    
    • 1

    create table
    drop table
    rename table
    alter table

    将category表的字符集 修改为gbk

    alter table category character set gbk;
    
    • 1

    3)向表中添加列, 关键字 ADD

    alter table 表名 add 字段名称 字段类型 
    
    • 1

    为分类表添加一个新的字段为 分类描述 cdesc varchar(20

    # 为分类表添加一个新的字段为 分类描述 cdesc varchar(20) 
    ALTER TABLE category ADD cdesc VARCHAR(20);
    
    • 1
    • 2
    1. 修改表中列的 数据类型或长度 , 关键字 MODIFY
    alter table 表名 modify 字段名称 字段类型
    
    • 1

    对分类表的描述字段进行修改,类型varchar(50)

    ALTER TABLE category MODIFY cdesc VARCHAR(50);
    
    • 1

    5)修改列名称 , 关键字 CHANGE

    alter table 表名 change 旧列名 新列名 类型(长度); 
    
    • 1

    对分类表中的 desc字段进行更换, 更换为 description varchar(30)

    ALTER TABLE category CHANGE cdesc description VARCHAR(30);
    
    • 1

    6)删除列 ,关键字 DROP

    alter table 表名 drop 列名; 
    
    • 1

    删除分类表中description这列

    ALTER TABLE category DROP description;
    
    • 1

    案例
    需求:设计一张学生表,请注重数据类型、长度的合理性
    1. 编号
    2. 姓名,姓名最长不超过10个汉字
    3. 性别,因为取值只有两种可能,因此最多一个汉字
    4. 生日,取值为年月日
    5. 入学成绩,小数点后保留两位
    6. 邮件地址,最大长度不超过 64
    7. 家庭联系电话,不一定是手机号码,可能会出现 - 等字符
    8. 学生状态(用数字表示,正常、休学、毕业…)

    create table student (
    	id int,
        name varchar(10),
        gender char(1), -- boolean 
        birthday date,
        score double(5,2),
        email varchar(15),
        tel varchar(15), 
        status tinyint 
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    练习使用 navicate/idea 操作数据库
    可能遇到的问题:

    报错:Server returns invalid timezone. Go toAdvanced‘ tab and set serverTimezone‘ property manually.
    
    • 1

    百度一下设置时区,如

    https://blog.csdn.net/Andy86666/article/details/115090903
    
    https://blog.csdn.net/qq_22136439/article/details/106429131
    
    • 1
    • 2
    • 3

    《SQL必知必会》
    《从零蛋开始学Mysql》—>小孩子

    《从根上理解mysql》
    《高性能MYSQL》

  • 相关阅读:
    Android中Spi机制的使用及源码原理解析
    202305青少年软件编程(Python)等级考试试卷(四级)
    【C++】智能指针
    协程+Retrofit+ViewModel+LiveData+DataBinding
    MapUtils常用方法
    STM32物联网项目-独立看门狗IWDG
    计算机基础知识——字,字节,进制,short,byte等
    Typescript中的浅拷贝和深拷贝
    python模块的介绍和导入
    Roson的Qt之旅 #116 QTcpServer详细介绍
  • 原文地址:https://blog.csdn.net/2301_77444674/article/details/133339929