Create&OperateTable

Mac安装使用Mysql教程(从零开始)

  • 第一章 Mac安装MySQL
    • 1.1 过程记录
    • 1.2 参考
  • 第二章 安装数据库管理软件DBeaver
    • 2.1 过程记录
    • 2.2 参考
  • 第三章 DBeaver创建MySQL数据库
    • 3.1 过程记录
    • 3.2 报错及解决
    • 3.3 参考
  • 第四章 终端管理MySQL
    • 4.1 开启MySQL服务
    • 4.2 登录MySQL(复杂)
    • 4.3 登录MySQL(命令简化)
    • 4.4 登录MySQL(全局设置)
    • 4.5 操作数据库
    • 4.6 参考
  • 第五章 MySQL基本操作之查询
    • 5.1 检索数据排序
    • 5.2 数据过滤
    • 5.3 汇总数据
    • 5.4 数据分组
    • 5.5 使用子查询
    • 5.6 联结表
    • 5.7 高级联结
    • 5.8 组合查询
    • 5.9 操作多个表
    • 5.10 参考
  • 第六章 MySQL基本操作之插入
    • 6.1 插入整行数据
    • 6.2 插入行的一部分
    • 6.3 插入查询结果
    • 6.4 从一个表复制到另一个表
    • 6.5 参考
  • 第七章 MySQL基本操作之更新与删除
    • 7.1 更新数据
    • 7.2 删除数据
    • 7.3 更新和删除的指导原则
    • 7.4 参考
  • 第八章 创建和操纵表
    • 8.1 创建表
    • 8.2 更新表
    • 8.3 删除表
    • 8.4 重命名表
    • 8.5 参考
  • 第九章 使用视图
    • 9.1 视图简介
    • 9.2 创建及使用视图
    • 9.3 参考
  • 第十章 使用存储过程
    • 10.1 存储过程简介
    • 10.2 存储过程优缺点
    • 10.3 执行存储过程
    • 10.4 创建存储过程
    • 10.5 参考
  • 第十一章 管理事务处理
    • 11.1 事务处理简介
    • 11.2 控制事务处理
    • 11.3 撤销和提交
    • 11.4 使用保留点
  • 第十二章 游标
    • 12.1 游标简介
    • 12.2 游标使用
      • 实例一
      • 实例二
      • 实例三
    • 12.3 参考
  • 第十三章 MySQL学习问题及解决记录
    • 13.1 DBeaver无法创建存储过程
    • 13.2 总结中…

第八章 创建和操纵表

8.1 创建表

       创建表有两种方法,第一种是通过DBMS工具创建,第二种是通过SQL语句创建。

  1. 创建基础表
    使用CREATE TABLE语句创建表,其中包含如下三个要素:
  • 表名,在CREATE TABLE语句之后;

  • 列名及其定义,用逗号分隔;

  • 有的DBMS还要求指定表的位置;

    CREATE TABLE MyFirstTable
    (my_id  char(10)  NOT NULL,
    my_name  char(10) NOT NULL,
    my_age char(10) NOT NULL,
    my_note char(10) NOT NULL
    );
    
  1. 使用NULL
  • 在不指定NOT NUUL时,多数DBMS默认指定的是NULL,但有的DBMS要求指定NULL,否则报错;
  • 只有NOT NULL的列允许指定为主键;
  • NULL与空字符串不同,空字符串是一个有效的值,而NULL是无值;
  1. 使用默认值
    在CREATE TABLE语句的列定义中用关键字DEFAULT指定默认值,默认值一般用于时间日期列,而不同DBMS获取系统日期的命令往往不同,下表列出了不同DBMS的用法:
DBMS 函数
MySQL CURRENT_DATE()
SQL Server GETDATE()
Oracle SYSDATE
Acess NOW
DB2 CURRENT_DATE()
PostgreSQL CURRENT_DATE()
SQLite date(‘now’)

       在MySQL中获取系统日期的具体操作如下:

	CREATE TABLE MyFirstTable
	(my_id  char(10)  NOT NULL,
 	my_name  char(10) NOT NULL,
 	my_date char(10) DEFAULT CURRENT_DATE,
 	my_note char(10) NOT NULL
 	);

8.2 更新表

  1. 注意事项:
  • 理想情况下,不要在表中包含数据时对其进行更新。应该在表的设 计过程中充分考虑未来可能的需求,避免今后对表的结构做大 改动。
  • 所有的 DBMS 都允许给现有的表增加列,不过对所增加列的数据类型 (以及 NULL 和 DEFAULT 的使用)有所限制。
  • 许多 DBMS 不允许删除或更改表中的列。
  • 多数 DBMS 允许重新命名表中的列。
  • 许多 DBMS 限制对已经填有数据的列进行更改,对未填有数据的列几乎没有限制。
  1. 语法:
           更新表的语法与创建表的语法比较相似:
  • 表名,在ALTER TABLE语句之后;

  • 说明列要做出哪些修改。

    # 添加列
    ALTER TABLE Vendors
    ADD vend_phone CHAR(20);
    # 删除列
    ALTER TABLE Vendors
    DROP COLUMN vend_phone;
    
  1. 复杂更新:
           复杂的表结构更新,一般需要手动删除过程,具体如下:
    (1) 用新的列布局创建一个新表;
    (2) 使用 INSERT SELECT 语句(关于这条语句的详细介绍,请参阅第 15课)从旧表复制数据到新表。有必要的话,可以使用转换函数和计算字段;
    (3) 检验包含所需数据的新表;
    (4) 重命名旧表(如果确定,可以删除它);
    (5) 用旧表原来的名字重命名新表;
    (6) 根据需要,重新创建触发器、存储过程、索引和外键。

8.3 删除表

       使用 DROP TABLE 语句就可以直接删除表(整个表而不是其内容):DROP TABLE MySecondTable;

       注意事项:

  • 删除表没有确认,也不能撤销,执行这条语句将永久删除该表;
  • 许多DBMS不允许删除于其它表相关联的表;

8.4 重命名表

       重命名操作不存在严格标准:

  • DB2、MariaDB、MySQL、Oracle 和 PostgreSQL 用户使用 RENAME 语句;
  • SQL Server 用户使用 sp_rename 存储过程;
  • SQLite 用户使用 ALTER TABLE 语句。
    具体语法可参见相应的DBMS文档。

8.5 参考

[1] Ben Forta.SQL必知必会-中文-第4版
[2] .MySQL 8.0参考手册(pdf)
[3] .MySQL 8.0参考手册(web)

你可能感兴趣的:(Data,创建表,更新表,删除表,重命名表)