美文网首页
MySQL语法(一) 数据库、数据表的创建及修改

MySQL语法(一) 数据库、数据表的创建及修改

作者: 石志不渝 | 来源:发表于2023-09-03 11:29 被阅读0次

    创建数据

    一 MySQL数据库结构

    一个数据链接下,可以有很多数据库,每个数据库下,又可以有很多数据表。数据表是实际数据的容器。
    我们一般以不同的业务来划分数据库,比如一个公司经营着酒店、经营着港口。那么很明显,酒店里面的数据内容和港口里面的数据内容差别是很大的。那么,可以建一个数据库专门存放酒店相关的数据,而另外建立一个数据库存放港口相关的数据。

    数据库结构

    二 创建数据库

    下面的语句中[]里面的是可选的内容,<>内的内容需要自己进行修改。MySQL不分大小写,无论数据库名、数据表名、字段名还是具体的SQL指令都不分大小写。
    当安装完成MySQL服务及客户端后,可以依据业务需求,建立数据库,建立数据库的语句如下:

    CREATE DATABASE [IF NOT EXISTS] <数据库名> [ [DEFAULT] CHARACTER SET <字符集名>] [ [DEFAULT] COLLATE <校对规则名>];
    

    上述代码中:

    1. IF NOT EXISTS -- 是可选内容,代表如果后面的<数据库>不存在则进行创建;数据库中,是不允许存在多个同名数据库的,当已经存在你所要创建的数据库时,语句将会报错。如果加了这句,则不会报错,只是不会再创建一次。
    create database db_test; --目前数据库里已经有db_test库,此句会报错
    create database if not exists db_test;
    
    1. CHARACTER SET -- 指数据库的默认字符集,一般直接使用utf8。在目前的中文使用环境里,其他字符集容易使存储的数据出现乱码。字符集,是系统把字符转化为二进制的一个规则。
      简单提一下byte(字节)和bit(比特、位)。我们都知道,电脑的运行和存储,都是以二进制进行的。字符集,也就是我用几个byte去表示你实际显出出来的一个字。不同的字符集编码是不一样的。

      字节和比特

      拓展: 为什么有些软件遇到汉字路径会乱码?汉字和英文的字符集编码思路有什么不同?
      一般情况下,英文、数字、半角字符,都是一个byte;只拿数字和英文举例,英文是分字母的,一共26个,考虑大小写,一共52;数字其实也是如此,一位十进制数最多有10个;也就是英文+数字,一共只需要62个就可以表示。所以,AASCII码是0x41,B的是0x42,C0x431byte可以表示255个东西,足够表达普通的字母和键盘上的一些操作。但汉字,包括一些表情,肯定是远远多于255个的。所以英文的编码方式,是无法兼容中文的,解析时自然会变成乱码。

    2. COLLATE -- 指定数据校对规则,数据校对规则决定了数据库怎么去别对两个字符串,比如Aa是否是一样的。目前使用默认值就可以。
      字符集和校对规则,后期都是可以修改的,但数据库名称不行
      最终的语句

    --删除数据库语句,[if exists]依然是可选的,与[if not exists]相对应
    drop database if exists db_test;
    create database if not exists db_test default character set gb2312; 
    --查看数据库 db_test的字符集
    show create database db_test;
    
    创建时的字符集

    三 修改数据库

    语法

    ALTER DATABASE <数据库名> [ [DEFAULT] CHARACTER SET <字符集名>] [ [DEFAULT] COLLATE <校对规则名>];
    

    修改数据库,将创建时的gb2312字符集,改到utf8

    alter database db_test default character set utf8;
    --查看数据库 db_test的字符集
    show create database db_test;
    
    修改数据库字符集

    四 创建数据表

    首先看图:


    数据表 示意图

    依然是之前我们所使用的,超市、商品和销售的例子。我们可以把超市,单独建立一个数据库,数据库名字比如叫db_supermarket,我们可以看到:

    1. 数据表是数据的实际载体,也就是说,数据都是放到数据表里的;
    2. 数据表是在数据库中的,数据库算是对数据表的一个归集;
    3. 另外我们需要注意看数据表里面的数据,之前我们提到过字段这个概念,我们可以发现,不同字段,他的数据类型是不一样的,比如,字段名称文字、字段数量数值、字段销售日期时间日期这其中的文字,我们一般称之为字符串类型,为什么叫字符串呢?

    当我们提到字符时,它可能是一个字母,如a;可能是一个符号,如?;可能是一个汉字,如等等...,我们所谓的文字,其实就是n个任意字符连城了一串,是不是就可以叫做字符串

    4.1 语法

    下面是一个创建销售表的示例,我们在上图的基础上,添加了销售编号作为主键

    use db_test;
    drop table if exists info_sales;
    CREATE TABLE info_sales (
        product_code varchar(255) NOT NULL,
        sale_date date NOT NULL,
        sale_quantity int NOT NULL,
        sale_id varchar(255) PRIMARY key NOT NULL
    );
    

    上述语句分为三句:

    1. 把操作对象确定为db_test
    2. 如果数据库里有info_sales表,那么就删除
    3. 创建表info_sales

    执行上述语句后,可以看到数据库中创建了新的数据表。数据表下方列出的,是字段,带着金钥匙图标的,是主键。


    销售信息表

    通过上述示例,可以总结出 create语句的基本语法:

    CREATE TABLE [IF NOT EXISTS] table_name (
        字段1 字段1数据类型 [约束条件1 约束条件2],
        字段2 字段2数据类型 [约束条件1 约束条件2],
    );
    

    约束条件,就像上面的NOT NULL,PRIMARY key,都叫字段的约束条件,是对字段做限制用的。
    上面的NOT NULL,代表了字段不能没有数据。空也是一种数据,和NULL不一样

    4.2 数据类型

    上面我们已经说过,目前我们要讲的数据类型大致分为三种:数值、字符串及时间日期。

    1. 数值
      包括:整数、浮点类型和定点类型。
      常用的整数类型为:int
      常用的浮点类型为:float
      常用的定点类型为: decimal,numeric
      其中:
      1.1. float被称为\color{red}{近似数};而 intdecimalnumeric为高精度数据类型。这是因为,float直接使用二进制表示一个有小数点的数,decimal则使用两组二进制,分别表示小数点前的十进制数和小数点后的十进制数。差别在于,十进制的0.1在二进制里是无限循环的0.00011001100110011,使用float存储时,只能使用近似值存储。
      1.2. float不建议使用float(m,d),在高版本的MySQL中已经列入遗弃,应该使用标准的float类型。
      1.3. decimalnumeric可以使用decimal(m,d)的方式进行声明,代表数据的总长度是m十进制m范围是 1 到 65);其中,小数d位(范围是 0 到 30,并且不能大于 M)。
      use db_test;
      drop table if exists tb_test;
      create table tb_test(
          c_1 int,
          c_2 float,
          c_3 decimal(16,4),
          c_4 numeric(12,6)
      )
      
    2. 字符串
      字符串常用的有:charvarchartext。其中:
      2.1. char是固定长度的字符串,最大是255个字符;如果声明时,长度是6,那么就算只存入一个字,也会占用6个字符。
      2.2. varchar是可变长度的字符串,即,如果声明时长度是6但是存入一个字符,那么实际占用空间就是1个字符。
      2.3. text 用于存储长文本,比如评论等;不需要声明长度,并且不受大小控制。
       use db_test;
       drop table if exists tb_test_str;
       create table tb_test_str(
           c_1 char(10),
           c_2 varchar(50),
           c_3 text
       )
      
    3. 时间日期
      时间日期常用的有:datetimedatetime。其中:
      2.1. date它的显示格式是 YYYY-MM-DD,占用3个字节;
      2.2. time它显示的格式是 HH:mm:ss,占用3个字节;
      2.3. datetime它显示的格式是 YYYY-MM-DD HH:mm:ss,占用8个字节。前 5 个字节存储年月日时分,后 3 个字节存储秒和毫秒,每个部分占用一个半字节。
       use db_test;
       drop table if exists tb_test_tm;
       create table tb_test_tm(
           c_1 date,
           c_2 time unique primary key not null,
           c_3 datetime
       )
      

    五 修改数据表

    数据表创建以后是可以修改的,包括:

    1. 添加新列(字段);
       use db_test;
       ALTER TABLE tb_test_tm ADD c_4 varchar(10);
      
    2. 修改字段定义(字段类型);
       use db_test;
       ALTER TABLE tb_test_tm modify c_3 varchar(10);
      
    3. 修改字段名称;
       use db_test;
       ALTER TABLE tb_test_tm change c_2 newc_2 varchar(15)
      
    4. 删除字段;
       use db_test;
       ALTER TABLE tb_test_tm DROP c_1;
      
    5. 重命名表。
       use db_test;
       ALTER TABLE tb_test_tm RENAME TO tb_test_tm_new;
       rename TABLE tb_test_tm_new TO tb_test_tm;
      

    相关文章

      网友评论

          本文标题:MySQL语法(一) 数据库、数据表的创建及修改

          本文链接:https://www.haomeiwen.com/subject/yhmfvdtx.html