zoukankan      html  css  js  c++  java
  • MySQL_DDL_数据库和表的操作

    DDL语言

    说明:Date Define Language数据定义语言,用于对数据库和表的管理和操作
    
    • 库的管理
    #一、创建数据库
    CREATE DATABASE 数据库名;
    CREATE DATABASE IF NOT EXISTS 数据库名;
    
    #删除数据库
    DROP DATABASE 数据库名;
    DROP DATABASE 数据库名;
    
    • 表的管理
    #一、创建表
    语法:
    CREATE TABLE [IF NOT EXISTS] 表名(
    	字段名 字段类型 [字段约束],
    	字段名 字段类型 [字段约束],
    	字段名 字段类型 [字段约束]
    );
    
    -- 案例:没有添加约束
    CREATE TABLE IF NOT EXISTS table1(
    	table_id INT,
    	table_name VARCHAR(20),
    	birthday DATETIME
    	gender CHAR,
    	age INT,
    );
    
    -- 案例:添加约束
    CREATE TABLE IF NOT EXISTS table1(
    	table_id INT PRIMARY KEY,-- 添加了主键约束
    	table_name VARCHAR(20) UNIQUE,-- 添加了唯一约束
    	birthday DATETIME
    	gender CHAR DEFAULT '男',-- 添加了默认约束
    	age INT CHECK(age BETWEEN 0 AND 100),-- 添加了检查约束,MySQL不支持,顾不会生效
    	majorid INT,
    	CONSTRAINT 自定义名字 FOREIGN KEY (majorid) REFERENCES 主表名(主表的主键);-- 添加了外键约束
    );
    
    #一)数据类型:
    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 存储图片数据
    
    #二)常见约束
    说明:用于限制表中字段的数据,从而进一步保证数据表的数据是一致、精确和可靠的
    
    NOT NULL 非空:用于限制该字段为必填项
    DEFAULT 默认:用于限制该字段没有显式插入值时,直接显示的默认值
    PRIMARY KEY 主键:用于限制该字段的值不能重复,设置为主键列的字段默认不能为空,一个表只能设置一个主键(可以是多个列的组合主键)
    
    UNIQUE 唯一:用于限制该字段值不能重复
    	对比		字段是否可以为空	一个表可以有几个
    
    	PRIMARY KEY          否				1个
    	UNIQUE               是				n个
    CHECK 检查:用于限制该字段值必须满足指定条件
    	CHECK(age BETWEEN 1 AND 10)
    
    FOREIGN KEY 外键:用于限制两个表的关系,要求外键列的值必须来自于主表的关联列(外键位于从表)
    	要求:
    	①主表的关联列和从表的关联列的类型必须一致、意思一样;名称可以不同
    	②主表的关联列必须是主键
    	
    #
    语法:ALTER TABLE 表名 ADD|MODIFY|CHANGE|DROP COLUMN 字段名 字段类型 【字段约束】;
    
    #1.修改表名
    ALTER TABLE stuinfo RENAME TO 表名;
    
    #2.添加字段
    ALTER TABLE 表名 ADD COLUMN 新字段 TIMESTAMP NOT NULL;
    DESC students;
    
    #3.修改字段名
    ALTER TABLE 表名 CHANGE COLUMN 原字段名 新字段名 DATETIME NULL;
    
    #4.修改字段类型
    ALTER TABLE 表名 MODIFY COLUMN 字段名 TIMESTAMP ;
    
    #5.删除字段
    ALTER TABLE 表名 DROP COLUMN 字段名;
    DESC 表名;-- 查看表
    
    #三、删除表 √
    DROP TABLE IF EXISTS 表名;
    
    #四、复制表√
    -- 仅仅复制表的结构
    
    CREATE TABLE 新表名 LIKE 目标表名;
    
    -- 复制表的结构+数据
    CREATE TABLE 新表名 SELECT * FROM 目标表名.字符段;
    
    -- -- 案例:复制employees表中的last_name,department_id,salary字段到新表 emp表,但不复制数据
    CREATE TABLE emp 
    SELECT last_name,department_id,salary 
    FROM myemployees.`employees`
    WHERE 1=2; -- 让判断结果不成立
    
  • 相关阅读:
    缩点【洛谷P1262】 间谍网络
    模板-割点
    Tarjan缩点+LCA【洛谷P2416】 泡芙
    模拟赛 10-20考试记
    BFS【bzoj1667】: [Usaco2006 Oct]Cows on Skates滑旱冰的奶牛
    最短路【bzoj2464】: 中山市选[2009]小明的游戏
    linux /dev/mapper/centos-root 被占满
    Centos7中安装Mysql8并修改密码策略并远程连接
    Centos7中PHP编译安装mysqli扩展报错
    Linux中Composer 在安装依赖包与本地php版本不符问题
  • 原文地址:https://www.cnblogs.com/csyh/p/12391620.html
Copyright © 2011-2022 走看看