• MySQL_Sql_打怪升级_进阶篇_进阶11: DDL数据定义语言


    进阶11: DDL数据定义语言

    11.1 数据定义语言介绍

    DDL(Data Definition Language) 数据库定义语言 语句用于定义数据库结构或模式

    数据定义语言

    库和表的管理

    一、库的管理
    创建、修改、删除
    
    二、表的管理
    创建、修改、删除
    
    三、操作关键字
    创建: create
    修改: alter
    删除: drop
    

    11.2 库的管理

    语法:

    create database  [if not exists] 库名 charset 字符集;
    

    11.2.1 库的创建

    创建库Books

    CREATE DATABASE IF NOT EXISTS books CHARSET utf8mb4 ;
    CREATE DATABASE IF NOT EXISTS books ;
    CREATE DATABASE books;
    

    11.2.2 库的修改

    更改库的字符集

    ALTER DATABASE books CHARACTER SET gbk ;
    ALTER DATABASE books CHARSET utf8mb4;
    

    11.2.3 库的删除

    删除books库

    DROP DATABASE IF EXISTS books;
    

    11.3 表的管理

    语法:

    create table 表名(
    	列名 列的类型【(长度) 约束】,
    	列名 列的类型【(长度) 约束】,
    	列名 列的类型【(长度) 约束】,
    	...
    	列名 列的类型【(长度) 约束】
    
    );
    

    11.3.1 表的创建

    案例1.创建表Book

    CREATE TABLE book(
    	id INT,		      #编号
    	bName VARCHAR(20),    #图书名
    	price DOUBLE,         #价格
    	authorId  INT,        #作者编号
    	publishDate DATETIME  #出版日期
    
    );
    
    DESC book;
    

    案例2:创建表author

    CREATE TABLE IF NOT EXISTS author(
    	id INT,
    	au_name VARCHAR(20),
    	nation VARCHAR(10)
    
    );
    
    DESC author;
    

    11.3.2 表的修改

    语法

    alter table 表名 add|drop|modify|change column 列名 【列类型 约束】;
    

    ①修改表名

    ALTER TABLE author RENAME TO  book_author;
    ALTER TABLE book_author RENAME  author;
    

    ②修改列名

    ALTER TABLE book CHANGE COLUMN publishdate pubDate DATETIME;
    

    ③修改列的类型或约束

    ALTER TABLE book MODIFY COLUMN pubdate TIMESTAMP;
    

    ④添加新列

    ALTER TABLE author ADD COLUMN annual DOUBLE; 
    

    ⑤指定列添加,在表首

    ALTER TABLE author ADD COLUMN telnum BIGINT  NOT NULL COMMENT '手机号' FIRST;
    

    ⑥指定列添加,在id之后

    ALTER TABLE author ADD COLUMN wechat VARCHAR(64) NOT NULL COMMENT '微信号' AFTER id;
    

    ⑤删除列

    ALTER TABLE author DROP COLUMN  annual;
    ALTER TABLE author DROP COLUMN  telnum;
    ALTER TABLE author DROP COLUMN  wechat;
    

    查看表结构

    DESC author;
    

    11.3.3 表的删除

    DROP TABLE IF EXISTS author;
    
    SHOW TABLES;
    

    11.4 表的复制

    在author表中插入数据

    INSERT INTO author VALUES
    (1,'村上春树','日本'),
    (2,'莫言','中国'),
    (3,'冯唐','中国'),
    (4,'金庸','中国');
    
    SELECT * FROM author;
    
    SELECT * FROM copy2;
    

    1.仅仅复制表的结构

    CREATE TABLE copy LIKE author;
    

    2.复制表的结构+数据

    CREATE TABLE copy2 
    SELECT * FROM author;
    

    3.只复制部分数据

    CREATE TABLE copy3
    SELECT id,au_name
    FROM author 
    WHERE nation='中国';
    

    4.仅仅复制某些字段

    CREATE TABLE copy4 
    SELECT id,au_name
    FROM author
    WHERE 0;
    

    11.5 数据定义语言习题

    1.创建表dept1

    NAME	NULL?	TYPE
    id		INT(7)
    NAME	VARCHAR(25)
    
    USE test;
    CREATE TABLE dept1(
    	id INT(7),
    	NAME VARCHAR(25)
    );
    

    2.将表departments中的数据插入新表dept2中

    CREATE TABLE dept2
    SELECT department_id,department_name
    FROM myemployees.departments;
    

    3.创建表emp5

    NAME	NULL?	TYPE
    id		INT(7)
    First_name	VARCHAR (25)
    Last_name	VARCHAR(25)
    Dept_id		INT(7)
    
    
    CREATE TABLE emp5(
    id INT(7),
    first_name VARCHAR(25),
    last_name VARCHAR(25),
    dept_id INT(7)
    );
    

    4.将列Last_name的长度增加到50

    ALTER TABLE emp5 MODIFY COLUMN last_name VARCHAR(50);
    

    5.根据表employees创建employees2

    CREATE TABLE employees2 LIKE myemployees.employees;
    

    6.删除表emp5

    DROP TABLE IF EXISTS emp5;
    

    7.将表employees2重命名为emp5

    ALTER TABLE employees2 RENAME TO emp5;
    

    8.在表dept和emp5中添加新列test_column,并检查所作的操作

    ALTER TABLE emp5 ADD COLUMN test_column INT;
    

    9.直接删除表emp5中的列 dept_id

    DESC emp5;
    ALTER TABLE emp5 DROP COLUMN test_column;
    
  • 相关阅读:
    十道海量数据处理面试题与十个方法大总结
    TopK的一个简单实现
    Spark1.0.0 学习路线指导
    Apache Spark源码走读之1 -- Spark论文阅读笔记
    倾情大奉送--Spark入门实战系列
    分布式发布订阅消息系统 Kafka 架构设计
    hive入门学习线路指导
    (5.3.1)数据库迁移——数据库迁移解决孤立用户与权限问题
    Shell初学(八)linux下的ACL
    Shell初学(七)linux账户管理/群组管理
  • 原文地址:https://www.cnblogs.com/liych/p/13643064.html
Copyright © 2020-2023  润新知