DDL语言-定义数据库和表

DDL语言

概述

Data Define Language: 数据定义语言,用于对数据库和表的管理及操作。

库的管理

一、创建数据库

CREATE DATABASE stuDB;
CREATE DATABASE IF NOT EXISTS stuDB;# 用java时用此格式,提高代码容错性

二、删除数据库

DROP DATABASE stuDB;
DROP DATABASE IF EXISTS stuDB;      #提高代码容错性

表的管理

一、创建表

1.数据类型

  1. 整形

    TINYINT SMALLINT INT BIGINT

  2. 浮点型

    FLOAT(m,n)

    DOUBLE(m,n)

    DECIMAL(m,n)

    m和n可选

  3. 字符型

    CHAR(n) n可选

    VARCHAR(n) n必填

    TEXT

    n表示最多字符个数

  4. 日期型

    DATE TIME DATETIME TIMESTAMP

  5. 二进制型

    BLOB 存储图片型数据

2.常见约束

概念

约束:用于限制表中字段的数据,从而进一步保证数据表的数据是一致的、准确的、可靠的

约束类型

  • NOT NULL 非空:用于限制该字段为必填项。

  • DEFAULT 默认:用于限制若该字段没有显式插入值,则直接显式默认值。

  • PRIMARY KEY 主键:用于限制该字段的值不能重复。设置为主键列的字段默认不能为空。

    一个表只能有一个主键,可以是组合主键。

  • UNIQUE 唯一:用于限制该字段值不能重复。

    字段是否可以为空一个表可以有几个
    主键不可以1个
    唯一可以n个
  • CHECK 检查:用于限制该字段值必须满足指定条件。

    CHECK(age BETWEEN 0 AND 100) (MYSQL不支持)

  • FOREIGN KEY 外键:用于限制两个表的关系。要求外键列的值必须来自于主表的关联列。

    要求

    1. 主表的关联列必须和从表的关联列的类型一致,意思一样,名称无要求。
    2. 主表的关联列必须是主键。

3.约束分类

分为 :表级约束和列级约束

  • 支持列级约束:NOT NULL,DEFAULT,UNIQUE ,PRIMARY KEY,CHECK

  • 支持表级约束: UNIQUE,PRIMARY KEY, FOREIGN KEY

    表级约束可以单独放在外键前面,外键约束放在最后。

没有添加约束的案例
CREATE TABLE IF NOT EXISTS stuinfo(
    stuid INT,
    stuname VARCHAR(20),
    gender CHAR,
    email VARCHAR(20),
    borndate DATETIME
);
添加约束
CREATE TABLE IF NOT EXISTS major(
    id INT
);

CREATE TABLE IF NOT EXISTS stuinfo(
        stuid INT PRIMARY KEY ,# 添加主键约束
        tuname VARCHAR(20) NOT NULL UNIQUE ,# 非空约束   唯一约束
        gender CHAR DEFAULT '男',# 默认约束
        email VARCHAR(20) UNIQUE ,# 唯一约束
        age INT CHECK ( age BETWEEN 0 AND 100),# 添加检查约束 (没有效果,MYSQL不支持check)
        borndate DATETIME,
        majorid INT,
        CONSTRAINT fk_stuinfo_major FOREIGN KEY (majorid) REFERENCES major(id)  #添加外键约束
);
也可以如下格式:表级约束可以单独放在外键前面,外键约束放在最后。
CREATE TABLE IF NOT EXISTS stuinfo(
        stuid INT ,
        tuname VARCHAR(20) NOT NULL UNIQUE ,# 非空约束   唯一约束
        gender CHAR DEFAULT '男',# 默认约束
        email VARCHAR(20) ,
        age INT CHECK ( age BETWEEN 0 AND 100),# 添加检查约束 (没有效果,MYSQL不支持check)
        borndate DATETIME,
    
        majorid INT,
        PRIMARY KEY(stuid), # 添加主键约束
        CONSTRAINT uq UNIQUE(email),  # 唯一约束                       
        CONSTRAINT fk_stuinfo_major FOREIGN KEY (majorid) REFERENCES major(id)                                                 #引用从表中的id字段     
);

二、修改表[了解]

语法

ALTER TABLE 表名 ADD|MODIFY|CHANGE|DROP COLUMN 字段名 字段类型 【字段约束】;

修改表名

ALTER TABLE stuinfo RENAME TO students;
ALTER TABLE students ADD COLUMN address VARCHAR(20)  NOT NULL ;#增加字段
ALTER TABLE students CHANGE COLUMN address familyadd VARCHAR(20);#修改字段名
ALTER TABLE students MODIFY COLUMN familyadd INT;#修改字段类型
#删除字段
ALTER TABLE students DROP COLUMN familyadd;

三、删除表

#删除表
DROP TABLE IF EXISTS students;

四、复制表

1 只复制表的结构 like

CREATE TABLE newtable LIKE students;

2 复制表的结构+数据

CREATE TABLE newtable2 SELECT * FROM girls.beauty;

**案例:**复制employees表中的last_name,email,salary字段到新表emp中,但不复制数据

CREATE TABLE empSELECT email,salary,last_nameFROM myemployees.employeesWHERE 0=1;  #添加一个永不成立的筛选条件

小结

写出SQL语句的定义顺序和执行顺序。

定义顺序(书写顺序)

  1. select distinct 查询列表
  2. from 表名 别名
  3. join 表名 别名
  4. on 连接条件
  5. where 分组前筛选
  6. group by 分组列表
  7. having 分组后筛选
  8. order by 排序列表
  9. limit 条目数

执行顺序

  1. from子句
  2. join子句
  3. on子句
  4. where子句
  5. group by子句
  6. having子句
  7. select子句
  8. order by子句
  9. limit子句
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值