zoukankan      html  css  js  c++  java
  • MySQL-4-DDL

    DDL:数据定义语言

    创建create

    创建库

    • 语法:create database 【if not exists】库名
    # 创建库
    CREATE DATABASE IF NOT EXISTS books
    ## 通用写法
    DROP DATABASE IF EXISTS 旧库名
    CREATE DATABASE 新库名
    

    创建表

    • 语法:
    /*
    create table 表名(
          列名 列的类型【(长度)约束】,
          列名 列的类型【(长度)约束】,
          ...
          列名 列的类型【(长度)约束】 # 最有一个不加逗号
    )
    */
    # 如
    CREATE TABLE book(
    	id INT,
    	bName VARCHAR(20)
    );
    # 通用写法
    DROP TABLE IF EXISTS 旧表名
    CREATE TABLE 新表名();	
    

    修改alter

    修改库

    # 一般不建议更改库
    # 更改库的字符集
    ALTER DATABASE books CHARACTER SET utf8;
    

    修改表

    核心语法: alter table 表名 add|drop|modify|change column 列名

    • 修改列名
    • 修改列的类型或约束
    • 添加新列
    • 删除列
    • 修改表名
    # 修改列名
    ALTER TABLE book CHANGE COLUMN bName bname VARCHAR(10)
    # 修改列类型
    ALTER TABLE book MODIFY COLUMN id VARCHAR(3)
    # 修改列约束
       # 添加主键
       ALTER TAELE book MODIFY COLUMN id INT PRIMARY REY;
       ALTER TABLE book ADD PRIMARY KEY(id);
       # 添加外键 为主表stu的id添加外键约束,外键是从表major中的majorid
       ALTER TABLE stu ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid)REFERENCES major(id);
    # 添加新列
    ALTER TABLE book ADD COLUMN age INT;
    # 删除列
    ALTER TABLE book DROP COLUMN  age;
    # 修改表名
    
    

    删除drop

    删除库

    # 删除库
    DROP DATABASE IF EXISTS books
    

    删除表

    DROP TABLE IF EXISTS books;
    

    复制表

    • 仅仅复制表的结构
    • 复制表的结构和数据
    # 仅仅复制表的结构
    CREATE TABLE copy1 LIKE books;
    # 复制表的结构和数据
    CREATE TABLE copy2 SELECT * FROM books
    # 还可以只复制 部分数据 加晒选条件即可
    

    数据库中常见数据类型

    数值型-整型/浮点型

    整型

    整型类型 字节 整型类型 字节
    Tinyint 1 Smallint 2
    Smallint 3 Int/integer 4
    Bigint 4
    • 特点:
      ①如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字
      ②如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值
      ③如果不设置长度,会有默认的长度]
      ④长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用!

    浮点型

    + 分类:
    1.浮点型
    float(M,D)
    double(M,D)
    2.定点型
    dec(M,D)
    decimal(M,D)
    
    浮点类型 字节 浮点类型 字节
    float 4 double 8

    定点型 字节
    dec(M,D),decimal(M,D) M+2
    • M:整数部位+小数部位
    • D:小数部位
    • 特点:
      ①如果超过范围,则插入临界值
      ②M和D都可以省略
      ③如果是decima1,则M默认为10,D默认为0;如果是floatdouble,则会根据插入的数值的精度来决定精度
      ④定点型的精确度较高

    字符型-短型/长型

    /*
    较短的文本:
    char
    varchar
    较长的文本:
    text
    blob(较大的二进制)
    */
    

    日期型

    /*
    分类:
    date只保存日期
    time只保存时间
    year只保存年
    datetime保存日期+时间
    timestamp保存日期+时间
    特点:
    字节范围时区等的影响
            字节     范围     时区影响
    datetime  8   1000-9999    不受
    timestamp 4   1970-2038     受  
    */
    

    常见约束

    • NOT NULL:非空,用于保证该字段的值不能为空
    • DEFAULT:默认,用于保证该字段有默认值
    • PRIMARY KEY:主键,用于保证该字段的值具有唯一性,并且非空
    • UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空
    • CHECK:检查约束【mysq1中不支持】
    • FOREIGN KEY:外键,用于限制两个表的关系
      列级约束
    CREATE TABLE IF NOT EXISTS stu(
    	id INT PRIMARY KEY, # 主键
    	sName VARCHAR(20) NOT NULL, # 非空
    	gender CHAR CHECK(gender='男' OR gender='女'), #检查
    	seat INT UNIQUE, # 唯一
    	age INT DEFAULT 18, # 默认
    	majorId INT REFERENCES major(id) #外键
    );
    
    CREATE TABLE major(
    	id INT PRIMARY KEY,
    	mName VARCHAR(20) NOT NULL
    )
    

    表级约束

    CREATE TABLE stu(
    	id INT,
    	sName VARCHAR(20),
    	gender CHAR,
    	seat INT,
    	majorId INT,
    	
            # CONSTRAINT 别名 可省略
    	CONSTRAINT Pk PRIMARY KEY(id), #外键
    	CONSTRAINT uq UNIQUE(seat), #唯一
    	CONSTRAINT fk_stu_major FOREIGN KEY(majorId) REFERENCES major(id) # 外键
    );
    

    主键和唯一区别

    唯一性 是否为空 一个表中是否有多个 是否允许组合
    主键 × 至多1个 √,不推荐
    唯一 可以多个 √,不推荐

    外键

    • 要求在从表设置外键关系
    • 从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求
    • 主表的关联列必须是一个key(一般是主键或唯一)
    • 插入数据时,先插入主表,再插入从表
    • 删除数据时,先删除从表,再删除主表

    标识列即自增长

    id INT PRIMARY KEY AUTO_INCREMENT, #设置id是自增长类型
    
    /*
    1、标识列不一定要和主键搭配,但要求是一个key
    2、一个表可以有至多一个标识列
    3、标识列的类型只能是数值型
    4、标识列可以通过 SET auto_increment_increment = 3;设置步长
    */
    
  • 相关阅读:
    紫微斗数诸星分级及分类
    n次独立重复试验暨伯努利试验
    信息系统项目管理师上午综合知识试题解析: 项目集治理
    三点估算和PERT技术
    自己写操作系统---bootsector篇
    硬盘分区表知识—详解硬盘MBR
    如何在自定义端口上运行 Spring Boot 应用程序?
    查询所有同学的学号、姓名、选课数、总成绩
    查询平均成绩大于60分的同学的学号和平均成绩
    查询“001”课程比“002”课程成绩高的所有学生的学号;
  • 原文地址:https://www.cnblogs.com/huyuqing/p/14407436.html
Copyright © 2011-2022 走看看