本文为SQL学习记录笔记
第一篇记录笔记:创建数据库与创建表
创建数据库的基本语法如下所示:
1 | CREATE DATABASE sqlbizhibihui --创建一个叫sqlbizhibihui的数据库 |
创建表的基本语法如下所示:
1 | CREATE TABLE table_name --创建一个名为table_name的表 |
修改表的基本语法如下所示:
1.修改表元素
1 | ALTER TABLE EMPLOYEE_TEL |
2.添加列
所有的 DBMS 都允许给现有的表增加列,不过对所增加列的数据类型
(以及 NULL 和 DEFAULT 的使用)有所限制。
1 | ALTER TABLE Vendors |
3.添加自动增加的列
MySQL提供SERIAL方法为表生成唯一值,例如
1 | CREATE TABLE TEST_INCREMENT |
SQL Server使用IDENTITY类型
1 | CREATE TABLE TEST_INCREMENT |
然后就可以直接插入数据了
1 | INSERT INTO TEST_INCREMENT(TEST_NAME) |
4.从现有表新建另一个表
SQL Server使用以下代码
1 | SELECT * |
MySQL和Oracle使用以下代码
1 | CREATE TABLE PRODUCTS_TMP AS--要复制到的新表名 |
5.删除表
MySQL和Oracle使用以下代码
1 | DROP TABLE TABLE_NAME [ RESTRICT | CASCADE ] |
如果使用了RESTRICT选项,并且表被视图或约束所引用,DROP就会返回一个错误。
而如果使用CASCADE选项,删除就会成功,而且表引用的约束和视图引用都会被删除
SQL Server使用以下代码
1 | DROP TABLE PRODUCTS_TMP; |
完整性约束
1.主键约束
把字段EMP_ID指定为表EMPLOYEE_TBL的主键
1 | CREATE TABLE EMPLOYEE_TBL |
以上为在创建表时设定EMP_ID为主键,还可以在创建完表后为表添加主键
以下命令为为表EMPLOYEE_TBL添加规则n1,设置EMP_ID为主键
1 | alter table EMPLOYEE_TBL |
2.唯一性约束
唯一性约束要求表中某个字段的值在每条记录里都是唯一的,这一点和主键类似。
为phone列添加唯一性约束
1 | CREATE TABLE EMPLOYEE_TBL |
3.外键约束
外键是子表里的一个字段,引用父表里的主键,外键约束是确保表于表之间引用完整性的主要机制,一个被定义为外键的字段用于引用另一个表里的主键。
在这个范例中,EMP_ID字段被定义为表EMPLOYEE_PAY_TST的外键,它引用了表EMPLOYEE_TBL里的EMP_ID里的字段,这个外键确定了表EMPLOYEE_PAY_TST里每个EMP_ID都在EMPLOYEE_TBL里有对应的EMP_ID,这被称为父子关系,其中父表是EMPLOYEE_TBL,字表是EMPLOYEE_PAY_TST。
1 | CREATE TABLE EMPLOYEE_PAY_TST |
为了在字表里插入一个EMP_ID值,它首先要存在于父表的EMP_ID里,类似的,父表里删除一个EMP_ID,字表里的EMP_ID也必须完全删除
还可以通过以下方式设置外键:
1 | alter table sc --设置要修改的表名 |
4.检查约束
检查约束用于检查输入到特定字段的数据的有效性,限制约束限制对特定输入数据的范围或格式,确保该列获得有效值,避免非法数据类型的产生与扩散。对同一列可以定义多个检查约束。但标识列。ROWGUIDCOL列或数据类型为TIMESTAMP的列不能定义检查约束,因为他们的约束由数据库系统字动添加。
基本格式
1 | CREATE TABLE 表名 |
例如设置表XSSCORE中列SCORE的值大于0小于100
1 | CREATE TABLE XSSCORE |
5.默认值约束
基本格式
1 | CREATE TABLE 表名 |
例如,设置表nation默认值为汉
1 | CREATE TABLE XSSCORE |
还可以通过以下语句添加默认约束
1 | ALTER TABLE 表名 |
例如为表student列nation添加默认值汉
1 | ALTER TABLE Student |
6.默认值
默认值与默认约束类似,但是默认约束与默认值不能同时在某个列上使用
默认值可以绑定到多个不同的列上
1 | go |
7.规则
设置score取值范围为[0,100]
1 | go |
删除规则
1 | go |
8.删除约束
删除表EMPLOYEES里的EMPlOVEES_PK约束
1 | ALTER TABLE EMPLOYEES |