Create&OperateTable

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

第八章 创建和操纵表

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函数
MySQLCURRENT_DATE()
SQL ServerGETDATE()
OracleSYSDATE
AcessNOW
DB2CURRENT_DATE()
PostgreSQLCURRENT_DATE()
SQLitedate(‘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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值