编程学习记录12:Oracle数据库的一些基本操作2,表相关操作,添加约束

数据库中表的创建一般需要考虑三部分:表名、列名及类型、列的约束

表名:没什么要求,只要不重名就行。

常用数据类型:

  1、字符类型

    1)CHAR(长度):定长字符串,位数不足时用空格填充

    2)VARCHAR2(长度):变长字符串,不会自动填充空格,比较常用

  2、数字类型

    1)NUMBER(p,s):p表示精度(总长度),s表示小数位

    2)INT:普通整型

  3、日期类型

    1)DATE:精确到秒

    2)TIMESTAMP:精度小于秒

  4、大文件

    1)BLOB:一般用来存储二进制数据,图像等,最大4GB

    2)CLOB:一般用来存储文本信息,最大4GB

约束:用来防止无效的数据进入数据库,保持数据的完整性。

约束分类:

  1、NOT NULL非空

  2、UNIQUE:唯一,能有一个空

  3、PRIMARY KEY:主键,非空和唯一

  4、FOREIGN KEY:外键,表中的某个属性值在另外表中有出现

  5、CHECK:检查约束,缩小数据值域,如年龄必须非负

  6、DEFAULT:默认约束,如果没有指定插入的值则使用默认值

具体语句:

  1、创建表(没有约束)

  CREATE TABLE <表名> (

    <列名> <列类型>

    [,<列名> <列类型>...]

  );

  2、行级约束(直接写在列类型后面)

   CREATE TABLE <表名> (

    id INT PRIMARY KEY, --主键

    sex VARCHAR2(2) DEFAULT '男', -- 默认

    name VARCHAR(10) NOT NULL, -- 非空

    tel VARCHAR2(11)  UNIQUE, -- 唯一

    deptno INT CONSTRAINT <约束名> REFERENCES  <引用表名>(<引用列名>), -- 外键

    age INT CONSTARINT <约束名> CHACK(<条件>) -- 检查约束

  );

  3、表级约束(写在最后一个列申明后面) 

  CREATE TABLE <表名> (

    id INT ,

    sex VARCHAR2(2) ,

    name VARCHAR2(10),

    tel VARCHAR2(11) ,

    deptno INT ,

    age INT ,

    PRIMARY KEY(<列名>), -- 主键

    UNIQUE(<列名>), -- 唯一

    CHECK(<条件>), -- 检查约束

    CONSTRAINT <约束名> PRIMARY KEY(<列名>), -- 主键

    CONSTRAINT <约束名> UNIQUE(<列名>), -- 唯一

    CONSTRAINT <约束名> FOREIGN KEY(<列名>) REFERENCES <引用表名>(<引用列名>), -- 外键

    CONSTRAINT <约束民> CHECK(条件) -- 检查约束,

  );

  4、修改约束

    1)添加约束

    ALTER TABLE <表名> ADD PRIMARY KEY(<列名>) -- 主键

    ALTER TABLE <表名> ADD UNIQUE(<列名>) -- 唯一

    ALTER TABLE <表名> ADD FOREIGN KEY(<表名>) REFERENCES <引用表名>(<引用列名>) -- 外键

    ALTER TABLE <表名> ADD CHECK(<条件>) -- 检查约束

    2)删除约束

    ALTER TABLE <表名> DROP PRIMARY KEY -- 删除主键

    ALTER TABLE <表名> DROP UNIQUE(<列名>) -- 删除唯一

    ALTER TABLE <表名> DROP CONSTRAINT <约束名> -- 根据约束名删除约束

  

  5、添加数据

  INSERT INTO  <表名> VALUES(<列的值>[,<列的值>]) -- 这种方式必须给全部列赋值,且必须按顺序赋值

  INSERT INTO  <表名>(<列1名字>[,<列2名字>]) VALUES(<列1的值>[,<列2的值>]) -- 根据指定列的顺序给列赋值,其他列若没有默认值则会赋空

  6、查询数据

  SELECT * FROM <列名> [WHERE <条件>] -- 会输出满足条件的数据的所有列

  SELECT <列名1> [重命名1], <列名2>[重命名2] FROM <列名> [WHERE <条件>] -- 会输出满足条件的数据指定列,若有重命名则列名为重命名的值 

  

  7、删除数据

  DELETE <表明> [WHERE <条件>] -- 会删除满足条件的所有数据,不加条件则删除所有数据

  8、更新数据

  UPDATE <表明> SET <列名> = <值>[,<列名> = <值>] [WHERE <条件>] -- 更新指定列的值,不加条件则前部修改