mysql基础-DDL操作

mysql 笔记

1. mysql 基本信息

  • 关系型数据库,基于表进行存储
  • 关系型数据库与非关系型数据库

2. sql 语句

2.1 sql 语句分类

  1. DDL (data definition language) 数据定义语言,用来定义数据库对象与,数据库,表,字段
  2. DML( data manipulation language) 数据操作语言,对表中数据进行增删改
  3. DQL (data query language) 数据查询语言,查询数据库中表的记录
  4. DCL (data control language) 数据控制语言,控制数据库的访问权限,创建用户

2.2 DDL-数据库操作

  • 查询

    # 查询所有数据库
    show databases
    # 查询当前数据库
    select database()
    
  • 创建

    create database [if not exists] databaseName [defalut charset 字符集] [collate 排序规则]
    
    # if not exists  表示如果该名称的数据库不存在,则创建数据库,否则不执行热河操作
    #  default charset  设置默认字符集
    # collate 排序规则
    # 示例
    CREATE DATABASE IF NOT EXISTS RUNOOB DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    

    collate 介绍

    所谓 utf8_unicode_ci,其实是用来排序的规则。对于mysql中那些字符类型的列,如 VARCHAR,CHAR,TEXT 类型的列,都需要有一个 COLLATE 类型来告知 mysql 如何对该列进行排序和比较。简而言之,COLLATE 会影响到 ORDER BY 语句的顺序,会影响到 WHERE 条件中大于小于号筛选出来的结果,会影响DISTINCTGROUP BYHAVING语句的查询结果。另外,mysql 建索引的时候,如果索引列是字符类型,也会影响索引创建,只不过这种影响我们感知不到。总之,凡是涉及到字符类型比较或排序的地方,都会和 COLLATE 有关。

    各种 COLLATE 的区别

    COLLATE 通常是和数据编码(CHARSET)相关的,一般来说每种 CHARSET 都有多种它所支持的 COLLATE,并且每种 CHARSET 都指定一种 COLLATE 为默认值。例如 Latin1 编码的默认 COLLATE 为 latin1_swedish_ci,GBK 编码的默认 COLLATE 为 gbk_chinese_ci,utf8mb4 编码的默认值为 utf8mb4_general_ci。

    这里顺便讲个题外话,mysql 中有 utf8 和 utf8mb4 两种编码,在 mysql 中请大家忘记utf8,永远使用utf8mb4。这是 mysql 的一个遗留问题,mysql 中的 utf8 最多只能支持 3bytes 长度的字符编码,对于一些需要占据 4bytes 的文字,mysql 的 utf8 就不支持了,要使用 utf8mb4 才行。

    很多 COLLATE 都带有_ci 字样,这是 Case Insensitive 的缩写,即大小写无关,也就是说”A”和”a”在排序和比较的时候是一视同仁的。selection * from table1 where field1=”a”同样可以把 field1 为”A”的值选出来。与此同时,对于那些_cs 后缀的 COLLATE,则是 Case Sensitive,即大小写敏感的。

    在 mysql 中使用 show collation 指令可以查看到 mysql 所支持的所有 COLLATE。以 utf8mb4 为例,该编码所支持的所有 COLLATE 如下图所示。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M1TdJ1K4-1649400335244)(upload/image-20220403174107760.png)]

  • 删除

    drop database [if exists] databaseName;
    # if exists 如果数据库不存在删除不会报错,如果没有这条语句,删除不存在的数据库会报错
    drop database test;
    drop database if exists test
    
  • 使用

    use databaseName
    # 使用node数据库
    use node
    

2.3 DDL 表操作

  • 查询

    # 查询当前数据库所有表
    show tables;
    
    #查询表结构
    desc tableName;
    
    
  • 创建表

    create table tableName(
    	#字段1  类型 [comment 注释]
    	....
    );
    
  • 修改表

    • 添加字段
    # 添加字段
    alter table tableName add 字段名 类型(长度) comment 备注
    # 示例
    alter table user add nickname varchar(10) comment 'test'
    
    
    • 修改数据类型

      alter table 表名 modify 字段名 新数据类型长度;
      # 将test字段数据类型修改为varchar(3)
      alter table user modify test varchar(3);
      
    • 修改字段名和字段类型

      alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
      #将test 字段修改为 email  类型varchar(12)
      alter table user change test email varchar(12);
      
      
    • 修改表名

      alter table 表名 rename to 新表名
      # 修改表名为test
       alter table user rename to test;
      
    • 删除字段

    alter table 表名 drop 字段名
    # 删除dotsa 字段
    alter table user drop dotsa;
    
    
  • 删除表

    drop table [if exists] 表名; 删除表;
    drop table test;
    
    truncate table 表名; 删除指定表,并重新创建该表,相当于清空表数据
    truncate table test;
    

2.4 mysql 数据类型

  • 数值类型

    数值类型区分有符号类型(signed)和无符号类型(unsigned)

    有符号类型可以存负数,无符号类型只能存正数

    int
    bigint 大整数
    tinyint  极大整数
    mediumint 大整数
    float 浮点数
    double  双精度浮点数
    decimal  小数值
    
  • 字符串类型

    char  定长字符串   0-255    ,性能好,不足长度会填空空格
    varchat  变长字符串   性能差,超过长度会报错
    
    tinyblob 不超过255字节的二进制数据
    tinytext  短文本字符串
    
    blob  0-65535
    text  短文本 0-65535
    
    mediumblob
    mediumtext 中等长度文本
    
    langblob
    langtext 长文本  0-4294967295
    
    blob 类型一般很少使用
    
    
  • 日期类型

    date 日期值
    time
    year
    
    datetime
    timestamp
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值