• 【MySQL】MySQL中对数据库及表的相关操作


      👉引言💎

    在这里插入图片描述

    铭记于心
    🎉✨🎉我唯一知道的,便是我一无所知🎉✨🎉

    -DDL操作数据库

    4.1创建数据库(掌握)

    • 语法
    create database 数据库名 [character set 字符集][collate  校对规则]     注: []意思是可选的意思
    
    • 1

    字符集(charset):是一套符号和编码。

    • 练习

    创建一个day01的数据库(默认字符集)

    create database day01;
    
    • 1

    创建一个day01_2的数据库,指定字符集为gbk(了解)

    create database day01_2 character set gbk;
    
    • 1

    也可以通过可视化创建(默认即可)

    4.2查看所有的数据库

    4.2.1查看所有的数据库

    • 语法
    show databases; 
    
    • 1

    4.2.2查看数据库的定义结构【了解】

    • 语法
    show create database 数据库名;
    
    • 1
    • 查看day01这个数据库的定义
    show create database day01; 
    
    • 1

    4.3删除数据库

    • 语法
    drop database 数据库名;
    
    • 1
    • 删除day01_2数据库
    drop database day01_2;
    
    • 1

    4.4修改数据库【了解】

    • 语法
    alter database 数据库名 character set 字符集;
    
    • 1
    • 修改day01这个数据库的字符集(gbk)
    alter database day01 character set gbk;
    
    • 1

    注意:

    • 是utf8,不是utf-8
    • 不是修改数据库名

    4.5其他操作

    • 切换数据库, 选定哪一个数据库
    use 数据库名;       //注意: 在创建表之前一定要指定数据库. use 数据库名
    
    • 1
    • 练习: 使用day01
    use day01;
    
    • 1
    • 查看正在使用的数据库
    select database();
    
    • 1

    -DDL操作表

    5.1 创建表

    5.1.1 语法

    create table 表名(
      列名 类型 [约束],
      列名 类型 [约束]
      ...
        
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    5.1.2 类型

    5.1.2.1 数值类型

    • 整型系列:xxxInt

    int(M),必须和unsigned zerofill一起使用才有意义

    • 浮点型系列:float,double(或real)

    double(M,D):表示最长为M位,其中小数点后D位
    例如:double(5,2)表示的数据范围[-999.99,999.99],如果超过这个范围会报错。

    • 定点型系列:decimal(底层实际上是使用字符串进行存储)

    decimal(M,D):表示最长为M位,其中小数点后D位

    • 位类型:bit

    字节范围是:1-8,值范围是:bit(1)~bit(64),默认bit(1)

    用来存储二进制数。对于位字段,直接使用select命令将不会看到结果。可以使用bit()或hex()函数进行读取。插入bit类型字段时,使用bit()函数转为二进制值再插入,因为二进制码是“01”。

    5.1.2.2 日期时间类型

    日期时间类型:year, date, datetime, timestamp

    注意一下每一种日期时间的表示范围

    timestamp和datetime的区别:

    • timestamp范围比较小
    • timestamp和时区有关
      • show variables like ‘time_zone’;
      • set time_zone = ‘+8:00’;
    • timestamp受MySQL版本和服务器的SQLMode影响很大
    • 表中的第一个非空的timestamp字段如果插入和更新为NULL则会自动设置为系统时间

    5.1.2.3 字符串类型

    MySQL中提供了多种对字符数据的存储类型,不同的版本可能有所差异。常见的有:

    char,varchar,xxtext,binary,varbinary,xxblob,enum,set等等

    对于大点的文件存储,一般都是存储路径到数据库,然后文件放在特定的文件服务器中

    • 字符串类型char,varchar(M)

    char如果没有指定宽度,默认为1个字符
    varchar(M),必须指定宽度

    • binary和varbinary类似于char和varchar,不同的是它们包含二进制字符串,不支持模糊查询之类的。
    • 一般在保存少量字符串的时候,我们会选择char和varchar;而在保存较大文本时,通常会选择使用text或blob系列。blob和text值会引起一些性能问题,特别是在执行了大量的删除操作时,会在数据表中留下很大的“空洞”,为了提高性能,建议定期时候用optimize table功能对这类表进行碎片整理。可以使用合成的(Synthetic)索引来提高大文本字段的查询性能,如果需要对大文本字段进行模糊查询,MySql提供了前缀索引。但是仍然要在不必要的时候避免检索大型的blob或text值。
    • enum枚举类型,它的值范围需要在创建表时通过枚举方式显式指定,对于1~255个成员的枚举需要1个字节存储;对于255`65535个成员需要2个字节存储。例如:gender enum(‘男’,‘女’)。如果插入枚举值以外的值,会按第一个值处理。一次只能从枚举值中选择一个。
    • set集合类型,可以包含0~64个成员。一次可以从集合中选择多个成员。如果选择了1-8个成员的集合,占1个字节,依次占2个,3个。。8个字节。例如:hoppy set(‘吃饭’,‘睡觉’,‘玩游戏’,‘旅游’),选择时’吃饭,睡觉’或’睡觉,玩游戏,旅游’

    5.1.2.4 示例

    +----------------+--------------+------+-----+---------+----------------+
    | Field          | Type         | Null | Key | Default | Extra          |
    +----------------+--------------+------+-----+---------+----------------+
    | eid            | int(11)      | NO   | PRI | NULL    | auto_increment |
    | ename          | varchar(20)  | NO   |     | NULL    |                |
    | tel            | char(11)     | NO   |     | NULL    |                |
    | gender         | char(1)      | YES  |     | 男        |                |
    | salary         | double       | YES  |     | NULL    |                |
    | commission_pct | double(3,2)  | YES  |     | NULL    |                |
    | birthday       | date         | YES  |     | NULL    |                |
    | hiredate       | date         | YES  |     | NULL    |                |
    | job_id         | int(11)      | YES  |     | NULL    |                |
    | email          | varchar(32)  | YES  |     | NULL    |                |
    | mid            | int(11)      | YES  |     | NULL    |                |
    | address        | varchar(150) | YES  |     | NULL    |                |
    | native_place   | varchar(10)  | YES  |     | NULL    |                |
    | did            | int(11)      | YES  |     | NULL    |                |
    +----------------+--------------+------+-----+---------+----------------+
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    5.1.3 约束

    • 即规则,规矩 限制;
    • 作用:保证用户插入的数据保存到数据库中是符合规范的
    约束约束关键字
    主键primary key非空且唯一,并且一张表只能有一个主键
    唯一unique唯一,当前列不能出现相同的数据
    非空not null非空,当前列不能为null
    默认default如果当前列没有数据,则指定默认数据

    约束种类:

    • not null: 非空 ; eg: username varchar(40) not null username这个列不能有null值

    插入null值就会报错

    • unique:唯一约束, 后面的数据不能和前面重复; eg: cardNo char(18) unique; cardNo 列里面不可以有重复数据
    • primary key;主键约束(非空+唯一); 一般用在表的id列上面. 一张表基本上都有id列的, id列作为唯一标识的
      • auto_increment: 自动增长,必须是设置了primary key之后,才可以使用auto_increment
    • id int primary key auto_increment; id不需要我们自己维护了, 插入数据的时候直接插入null, 自动的增长进行填充进去, 避免重复了.

    注意:

    1. 先设置了primary key 再能设置auto_increment
    2. 只有当设置了auto_increment 才可以插入null , 否则插入null会报错

    id列:

    1. 给id设置为int类型, 添加主键约束, 自动增长
    2. 或者给id设置为字符串类型,添加主键约束, 不能设置自动增长

    5.1.4练习

    • 创建一张学生表(含有id字段,姓名字段不能重复,性别字段不能为空默认值为男. id为主键自动增长)
    CREATE TABLE student(
      id INT PRIMARY KEY AUTO_INCREMENT, -- 主键自增长
      NAME VARCHAR(30) UNIQUE, -- 唯一约束
      gender CHAR(1) NOT NULL DEFAULT '男'
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5

    5.2 查看表【了解】

    5.2.1查看所有的表

    show tables;
    
    • 1

    5.2.2查看表的定义结构

    • 语法
      desc 表名;
    • 练习: 查看student表的定义结构
    desc student;
    
    • 1

    5.3 修改表【掌握,但是不要记忆】

    5.3.1语法

    • 增加一列
    alter table [数据库名.]表名称 add [column] 字段名 数据类型;
    alter table [数据库名.]表名称 add [column] 字段名 数据类型 first;
    alter table [数据库名.]表名称 add [column] 字段名 数据类型 after 另一个字段;
    
    • 1
    • 2
    • 3
    • 修改列的类型约束: alter table 表名 modify 字段 类型 约束 ;
    • 修改列的名称,类型,约束: alter table 表名 change 旧列 新列 类型 约束;
    • 删除一列: alter table 表名 drop 列名;
    • 修改表名 : rename table 旧表名 to 新表名;修改时不要使用’ '(单引号在起别名中使用),但是可以用 来区分关键字

    5.3.2练习

    • 给学生表增加一个grade字段,类型为varchar(20),不能为空
    ALTER TABLE student ADD grade VARCHAR(20) NOT NULL;
    
    • 1
    • 给学生表的gender字段改成int类型,不能为空,默认值为1
    alter table student modify gender varchar(20);
    
    • 1
    • 给学生表的grade字段修改成class字段
    ALTER TABLE student CHANGE grade class VARCHAR(20) NOT NULL;
    
    • 1
    • 把class字段删除
    ALTER TABLE student DROP class;
    
    • 1
    • 把学生表修改成老师表(了解)
    RENAME TABLE student TO teacher;
    
    • 1

    5.4 删除表【掌握】

    • 语法
      drop table 表名;
    • 把teacher表删除
    drop table teacher;
    
    • 1

    🌹写在最后💖
    路漫漫其修远兮,吾将上下而求索!伙伴们,再见!🌹🌹🌹在这里插入图片描述


  • 相关阅读:
    Go内置函数make和new的区别?
    源码安装 HIPIFY 和应用示例,将cuda生态源码转化成HIP生态源码
    人工智能基础_机器学习044_使用逻辑回归模型计算逻辑回归概率_以及_逻辑回归代码实现与手动计算概率对比---人工智能工作笔记0084
    【面试题】如何替换项目中的if-else和switch
    【知识点】分布式系统相关名词/概念/知识点
    【开发者必看】【push kit】推送服务典型问题合集3
    【探索Linux】—— 强大的命令行工具 P.11(基础IO,文件操作)
    学生家乡网页设计作品静态HTML网页模板源码 广西旅游景点网页设计 大学生家乡主题网站制作 简单家乡介绍网页设计成品
    【题单】一个动态更新的洛谷综合题单
    终于不用到处找资料了,《Java进阶学习面试全套资料》全是精华,免费分享给大家
  • 原文地址:https://blog.csdn.net/runofsun/article/details/125964384