SQL——SQL数据定义

1.基本类型

char(n):

固定长度的字符串,用户指定长度n,也可使用全程character。

varchar(n):

可变长度的字符串,最大长度为n,等价于全程character varying。

int:

整数类型(和机器相关的整数的有限子集),等价于全程integer。

smallint:

小整数类型(和机器相关的整数的有限子集)。

numeric(p,d):

定点数,精度由用户指定。这个数有p为数字(加上一个符号位),其中d数字在小数点右边。例如numeric(3,1)可以存储44.5,但不可以存储444.5或者0.32这样的数。

real,double precision:

浮点数和双精度浮点数,精度与机器相关。

float(n):

精度至少为n为的浮点数。

2.基本模式定义

1.创建表,或者说创建一个关系:

1)创建表的通用形式如下:

create table 表名(
属性名 属性的域,
……
<完整性约束>,
……
);

2)示例:
# 创建一个系的表
#表包含系名,系所在建筑名,系的投资
#主键,或者说唯一标识,为dept_name,用形如 primary key (attribute_name1,attribute_name2,...)定义那些属性是主码
CREATE TABLE department(
  dept_name VARCHAR(20),
  building VARCHAR(15),
  budget NUMERIC(12,2),
  PRIMARY KEY (dept_name)
);
# 课程表
CREATE TABLE course(
  course_id VARCHAR(7),
  title VARCHAR(50),
  dept_name VARCHAR(20),
  credits NUMERIC(2,0),
  PRIMARY KEY (course_id),
#   定义参照的外键
  FOREIGN KEY (dept_name )REFERENCES department(dept_name)
);
CREATE TABLE instructor(
  id VARCHAR(5),
#   not null 表明该属性的值不能为空
  name VARCHAR(20) NOT NULL ,
  dept_name VARCHAR(20),
  salary NUMERIC(8,2),
  PRIMARY KEY (id),
  FOREIGN KEY (dept_name) REFERENCES department(dept_name)
);

CREATE TABLE section(
  course_id VARCHAR(8),
  sec_id VARCHAR(8),
  semester VARCHAR(6),
  year NUMERIC(4,0),
  building VARCHAR(15),
  room_number VARCHAR(7),
  time_slot_id VARCHAR(4),
  PRIMARY KEY (course_id,sec_id,semester,year),
  FOREIGN KEY (course_id)REFERENCES course(course_id)
);

CREATE TABLE teaches(
  id VARCHAR(5),
  course_id VARCHAR(8),
  sec_id VARCHAR(8),
  semester VARCHAR(6),
  year NUMERIC(4,0),
  PRIMARY KEY (id,course_id,sec_id,semester,year),
  FOREIGN KEY (course_id,sec_id,semester,year) REFERENCES section(course_id, sec_id, semester, year),
  FOREIGN KEY (id) REFERENCES instructor(id)
);
CREATE TABLE student(
  id VARCHAR(7),
  name VARCHAR(8) NOT NULL ,
  dept_name VARCHAR(20),
  tol_cred NUMERIC(3,0),
  PRIMARY KEY (id),
  FOREIGN KEY (dept_name) REFERENCES department(dept_name)
);
CREATE TABLE takes(
  id VARCHAR(7),
  course_id VARCHAR(8),
  sec_id VARCHAR(8),
  semester VARCHAR(6),
  year NUMERIC(4,0),
  grade NUMERIC(3,0),
  PRIMARY KEY (id,course_id,sec_id,semester,year),
  FOREIGN KEY (id) REFERENCES student(id),
  FOREIGN KEY (course_id,sec_id,semester,year) REFERENCES section(course_id, sec_id, semester, year)
);

2、向表中插入一个元组(或者说插入一行数据):

1)通用形式:

insert into 表名(属性名,……) values(对应属性值,……);
如果要插入的元组数据包含了所有属性,则可以简写为
insert into 表名 values(属性值,……);

2) 示例(向表instructor中插入数据):
INSERT INTO instructor
    VALUES (10211,'smith','biology',66000);
INSERT INTO instructor (id, name, salary)
    VALUES (10212,'zero',44000);

3.删除所有元组

1)通用形式:

delete from 表名;

2)示例:

DELETE FROM instructor;

4.删除一个表(关系):

1)通用形式:

drop table 表名;

2)示例:

DROP TABLE instructor;

4.向已有的表(关系)插入和移除属性:

1)插入形式:

alter table 表名 add 属性 属性域;

2)移除形式:

alter table 表名 drop 属性;
#######3)示例:

#添加该属性是,关系中所有的元组的该属性值为null
ALTER TABLE instructor ADD name VARCHAR(20) ;
ALTER TABLE instructor DROP name;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简单来说就是 因为div宽度是width+padding+border,width不是纯宽度,如果不想算,就把wi...
    西凉0阅读 1,560评论 0 1
  • 对于世间的一切,若有一法放不下,也出离不了世间。必须把世间的一切全部放下,方可不回世间酬还宿债。——成刚法师 愿我...
    白雪飘零阅读 1,943评论 0 0
  • 提起电影审查—— 想必没有哪个影迷不恨得牙痒痒。 他让我们看不到《王牌特工》里暴走科林叔血洗教堂。 也与《泰坦尼克...
    Sir电影阅读 6,984评论 2 36