mysql数据库数据类型和约束

mysql数据库:数据类型和约束

  • 常见的数据类型和约束

    • 数据类型

      • 数值类型:INT、BIGINT、FLOAT、DOUBLE,DECIMAL等。
      • 字符串类型:CHAR、VARCHAR、TEXT等。
      • 日期和时间类型:DATE、DATETIME、TIMESTAMP等。
      • 二进制类型:BLOB、LONGBLOB、VARBINARY等。
      • 枚举类型:ENUM。集合类型:SET
    • 约束

      • 主键约束(PRIMARY KEY):用于唯一标识表中的每一行数据,通常使用整数类型的列。
      • 唯一约束(UNIQUE):保证列中的所有值都是唯一的,可以包含空值。
      • 外键约束(FOREIGN KEY):用于定义列与其他表的关系,保证引用完整性。
      • 非空约束(NOT NULL):确保列中不包含空值。
      • 默认值约束(DEFAULT ):在插入新行时,如果没有指定列的值,则使用默认值。
      • 检查约束(CHECK):用于确保列中的值满足特定的条件,可以使用各种表达式和运算符来定义。
    • 数值类型

在这里插入图片描述

  • 字符串类型

在这里插入图片描述

  • 日期和时间类型

在这里插入图片描述

  • CREATE TABLE users (
      id INT PRIMARY KEY,
      name VARCHAR(50) NOT NULL,
      email VARCHAR(100) UNIQUE,
      password VARCHAR(100) NOT NULL,
      created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
      updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      age INT CHECK(age >= 18),
      address TEXT,
      role ENUM('admin', 'user') DEFAULT 'user'
    );
    这个语句将创建一个名为users的表,包含多个列和约束。其中id列是主键,name列是非空字符串,email列是唯一的,password列是非空字符串,created_at列是日期时间类型,updated_at列是日期时间类型,但在更新时会自动更新,age列使用检查约束以确保其值大于等于18,address列是文本类型,role列是枚举类型,且默认值为'user'
  • PRIMARY KEY使用

    CREATE TABLE employees (
      id INT PRIMARY KEY,
      name VARCHAR(50),
      age INT
    );
    PRIMARY KEY 是一列或一组列,其值唯一标识表中的每一行。一个表只能有一个PRIMARY KEY。在表创建时,可以指定其中的一列为主键,也可以使用多列来组合作为主键。对于多列组合主键,它们的值的组合必须是唯一的。
    
  • AUTO_INCREMENT使用

    CREATE TABLE users (
      id INT PRIMARY KEY AUTO_INCREMENT,
      name VARCHAR(50)
    );
    AUTO_INCREMENT是一种MySQL特有的属性,它允许一个整数列自动增长,每次插入新行时自动递增。这通常用于为表创建一个唯一的、自动生成的数字标识符。必须将AUTO_INCREMENT属性与INTEGER数据类型一起使用,通常是使用INTBIGINT数据类型。
    在上面的代码中,每次插入一行时,MySQL将自动为id列生成一个新的唯一值,而不需要手动为该列指定一个值。这使得插入新行时更加方便,同时也确保每个行都有一个唯一的标识符。
    
  • UNIQUE使用

    CREATE TABLE students (
        student_id INT PRIMARY KEY,
        name VARCHAR(50) NOT NULL,
        email VARCHAR(100) UNIQUE
    );
    假设有一个“学生”数据表,其中包含学生ID、姓名和电子邮件地址。为了确保每个学生的电子邮件地址是唯一的,可以在“电子邮件地址”列上创建UNIQUE约束。
    在上面的代码中,我们创建了一个名为“students”的数据表,并在“email”列上创建了一个UNIQUE约束。这将确保每个学生的电子邮件地址是唯一的。
    
  • FOREIGN KEY使用

    CREATE TABLE products (
        product_id INT PRIMARY KEY,
        product_name VARCHAR(50) NOT NULL,
        price DECIMAL(8, 2) NOT NULL
    );
    
    CREATE TABLE orders (
        order_id INT PRIMARY KEY,
        order_date DATE NOT NULL,
        product_id INT,
        FOREIGN KEY (product_id) REFERENCES products(product_id)
    );
    假设有一个“订单”数据表和一个“产品”数据表,其中“订单”表包含订单ID、订单日期和产品ID,而“产品”表包含产品ID、产品名称和产品价格。为了确保订单中的每个产品ID都是有效的,可以在“订单”表中为“产品ID”列创建FOREIGN KEY约束,该约束参照“产品”表中的“产品ID”列。
    在上面的代码中,我们创建了一个名为“products”的数据表和一个名为“orders”的数据表,并在“orders”表中为“product_id”列创建了一个FOREIGN KEY约束。这将确保订单中的每个产品ID都是有效的,并且参照了“products”表中的产品ID列。
    
  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值