alter語句

SQL> --創建表order_status2
SQL> CREATE TABLE order_status2 (
  2  id INTEGER
  3  CONSTRAINT order_status2_pk PRIMARY KEY,
  4  status VARCHAR2(10),
  5  last_modified DATE DEFAULT SYSDATE
  6  );


SQL> --在表order_status2中增加一個字段modified_by
SQL> ALTER TABLE order_status2
  2  ADD modified_by INTEGER;


SQL> --在表order_status2中增加一個字段initially_created
SQL> ALTER TABLE order_status2
  2  ADD initially_created DATE DEFAULT SYSDATE NOT NULL;


SQL> --修改表order_status2中status字段的長度從varchar2(10)為varchar2(15)
SQL> ALTER TABLE order_status2
  2  MODIFY status VARCHAR2(15);


SQL> --修改表order_status2的id字段從number(38)為number(5)
SQL> ALTER TABLE order_status2
  2  MODIFY id NUMBER(5);


SQL> --修改order_status2中字段status的數據類型
SQL> ALTER TABLE order_status2
  2  MODIFY status CHAR(15);


SQL> --修改列的默認值
SQL> ALTER TABLE order_status2
  2  MODIFY last_modified DEFAULT SYSDATE-1;


SQL> --刪除列
SQL> ALTER TABLE order_status2
  2  DROP COLUMN initially_created;


SQL> --CHECK約束
SQL> ALTER TABLE order_status2
  2  ADD CONSTRAINT order_status2_status_ck
  3  CHECK (status IN ('PLACED','PENDING','SHIPPED'));


SQL> ALTER TABLE order_status2
  2  ADD CONSTRAINT order_status2_id_ck CHECK (id>0);


SQL> --NOT NULL約束
SQL> ALTER TABLE order_status2
  2  MODIFY status CONSTRAINT order_status2_status_nn NOT NULL;


SQL> --NOT NULL約束,注意此處增加NOT NULL約束使用的是MODIFY關鍵字而不是ADD
SQL> --CONSTRAINT后面跟的是該約束的名稱,
SQL> --雖然不使用CONSTRAINT指定名稱,數據庫會自動分配一個約束的名稱,
SQL> --但是這樣并不利于數據庫的維護,建議再增加約束時指定有意義的約束名稱
SQL> ALTER TABLE order_status2
  2  MODIFY modified_by CONSTRAINT order_status2_modified_by_nn NOT NULL;


SQL> --從order_status表中刪除modified_by列,
SQL> --目地是清楚之前modified_by列上的約束
SQL> ALTER TABLE order_status2
  2  DROP COLUMN modified_by;


SQL> --FOREIGN KEY約束,設置級聯,
SQL> --當刪除employees表中某條記錄,同時刪除order_status2表中相關記錄
SQL> ALTER TABLE order_status2
  2   ADD CONSTRAINT order_status2_modified_by_fk
  3   modified_by REFERENCES employees (employee_id) ON DELETE CASCADE;


SQL> --從order_status表中刪除modified_by列,
SQL> --目地是清楚之前modified_by列上的約束
SQL> ALTER TABLE order_status2
  2  DROP COLUMN modified_by;


SQL> ALTER TABLE order_status2
  2  ADD CONSTRAINT order_status2_modified_by_fk
  3  modified_by REFERENCES employees (employee_id) ON DELETE SET NULL;


SQL> --添加UNIQUE約束
SQL> ALTER TABLE order_status2
  2  ADD CONSTRAINT order_status2_status_uq UNIQUE (status);


--刪除約束
ALTER TABLE order_status2
DROP CONSTRAINT order_status2_status_uq;
### 使用 SQL 中的 `ALTER` 语句修改表结构 在关系型数据库管理系统(RDBMS),如 Microsoft SQL Server 中,可以使用 `ALTER TABLE` 语句来动态修改现有表的结构。以下是关于如何通过 `ALTER` 语句实现不同操作的具体方法。 #### 添加新列到表中 如果需要向现有的表中添加一列或多列,则可以通过以下语法完成: ```sql ALTER TABLE table_name ADD column_name data_type [NULL | NOT NULL]; ``` 例如,在名为 `student` 的表中新增加一个名为 `class` 的字段,其数据类型为字符串长度不超过20字符,并允许为空值[^1]: ```sql ALTER TABLE student ADD class VARCHAR(20) NULL; ``` #### 删除已存在的列 当不再需要某特定列时,可利用下面这条指令将其移除掉: ```sql ALTER TABLE table_name DROP COLUMN column_name; ``` 比如从学生信息记录里去掉班级这一项属性的话就可以这样写代码片段[^1]: ```sql ALTER TABLE student DROP COLUMN class; ``` #### 更改已有列的数据类型或设置其他特性 对于已经存在于表格里的某些项目而言,我们可能希望调整它们的一些基本配置选项——像改变存储容量大小限制或是强制要求输入有效数值而非空白状态等等情况都可以借助于这个功能达成目的。 - **仅变更数据类型** ```sql ALTER TABLE table_name ALTER COLUMN column_name new_data_type [(size)] [NULL | NOT NULL]; ``` 假设现在想把刚才提到过的那个叫做“Class”的分类标签改成不允许存在任何缺失的情况并且限定最大字数不得超过十个单位那么就按照这种方式来进行处理吧[^1]! ```sql ALTER TABLE student ALTER COLUMN class VARCHAR(10) NOT NULL; ``` - **重命名某个字段的名字本身而不是它所代表的内容含义方面的东西哦~** 这种情况下需要用到系统自带的一个过程函数即sp_rename()啦!它的调用形式如下所示: ```sql EXEC sp_rename 'old_column_name', 'new_column_name'; ``` 举个例子来说就是如果我们觉得之前的称呼不够贴切想要换成更加正式一点的说法比如说标准课程之类的术语表达方式的话那就应该这么做了哈[^1]: ```sql EXEC sp_rename 'class','standard_course' ``` 以上便是有关于怎样运用SQL语言里面的alter关键字去灵活操控我们的数据库对象之一—表的相关知识要点总结咯😊希望能对你有所帮助呀!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值