zoukankan      html  css  js  c++  java
  • 第二节:表的管理

    一、表的管理

      1、表的创建

        语法格式:

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

        创建表必须具备:

        ① create table 权限;

        ② 存储空间;

        ③ 必须指定表名;

        ④ 必须知道列名,数据类型和长度或约束;

      2、表的修改

        语法格式:

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

           ① 修改列名(column可以省略) 

    ALTER TABLE book CHANGE COLUMN publishDate pubDate DATETIME;
    

      

           ② 修改列的类型或约束或默认值

    ALTER TABLE book MODIFY COLUMN pubDate TIMESTAMP;

         ③ 添加新列

    ALTER TABLE author ADD COLUMN annual DOUBLE;
    

         ④ 删除列

    ALTER TABLE book DROP COLUMN annual;
    

         ⑤ 修改表名(必须是对象的拥有者)

    ALTER TABLE author RENAME TO book_author;
    

        ⑥ 修改表的字符集

    alter table 表名 character set 字符集名称;
    

     

      3、表的删除

        语法格式:

    drop table 【IF EXISTS】 表名;
    

        一般在创建表/库的之前,都会先进行删除,再进行创建:

    DROP DATABASE IF EXISTS 旧库名;
    
    CREATE DATABASE 新库名;
    
    DROP TABLE IF EXISTS 旧表名;
    
    CREATE TABLE 表名();
    

        表的删除:

        ① 数据和结构都被删除;

        ② 所有正在运行的相关事务被提交;

        ③ 所有相关索引被删除;

        ④ DROP Table 语句不能回滚;

      4、查看表

        查询某个数据库中所有的表名称:

    show tables;
    

      

        查看表结构:

    DESC 表名
    

      

        查看表全部数据:

    select * from 表名;
    

         查看创建表的 SQL 语句:

    show create table 表名;
    

      

      5、复制表

        语法格式:

    CREATE TABLE 新表名 LIKE 表名;
    

        

        ① 复制表结构,不会有数据

    CREATE TABLE copy_book LIKE book;
    

      

        ② 复制表结构 + 表数据

    CREATE TABLE copy_book2 
    SELECT * FROM book;
    

      

        ③ 复制表结构 + 部分数据,部分列

    CREATE TABLE copy_book3
    SELECT id, bname
    FROM book
    WHERE id = 1;
    

      

        ④ 仅仅复制某些字段(列)不复制数据

          方式一:

    CREATE TABLE copy_book4
    SELECT id, bname
    FROM book
    WHERE 1 = 2;
    

      

          方式二:

    CREATE TABLE copy_book4
    SELECT id, bname
    FROM book
    WHERE 0;   #0代表 false
    

      

    二、案例

      1、创建表

        表 book:

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

      

        表:author

    CREATE TABLE author (
    	id INT,
    	au_name VARCHAR(20),
    	nation VARCHAR(10)
    
    );
    

      

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

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

      

      3、将列Last_name的长度增加到50

    ALTER TABLE emp5 MODIFY COLUMN last_name VARCHAR(50);
    

      

      4、根据表employees创建employees2

    CREATE TABLE employees2 LIKE myemployees.employees;
    

      

      5、将表employees2重命名为emp5

    ALTER TABLE employees2 RENAME TO emp5;
    

      

      6、在表emp5中添加新列test_column

    ALTER TABLE emp5 ADD COLUMN test_column INT;
    

      

      7、直接删除表emp5中的列 dept_id

    ALTER TABLE emp5 DROP COLUMN test_column;
    

      

  • 相关阅读:
    【bzoj1174】[Balkan2007]Toponyms Trie树
    【bzoj1786】[Ahoi2008]Pair 配对 dp
    【bzoj3956】Count 单调栈+可持久化线段树
    【bzoj4605】崂山白花蛇草水 权值线段树套KD-tree
    【bzoj3696】化合物 树形dp
    【bzoj1150】[CTSC2007]数据备份Backup 模拟费用流+链表+堆
    【bzoj3671】[Noi2014]随机数生成器 贪心
    【bzoj4653】[Noi2016]区间 双指针法+线段树
    【bzoj4197】[Noi2015]寿司晚宴 分解质因数+状态压缩dp
    用Python操作Named pipe命名管道,实用做法——os.read 或 os.write
  • 原文地址:https://www.cnblogs.com/niujifei/p/14930826.html
Copyright © 2011-2022 走看看