数据类型

符号 数据类型
INT 整数
SMALLINT 短整数
DEC(m,n) 十进制数
FLOAT 浮点数
CHAR(n) 定长字符串
VARCHAR(n) 变长字符串
BIT(n) 定长位串
BIT VARYING(n) 变长位串
DATE 日期
TIME 时间
TIMESTAMP 时间戳

对表的操作

创建表

创建表的命令是:

1
2
3
4
5
6
7
CREATE  TABLE  tablename (

colname  datatype  [ NOT NULL ]

{ , colname  datatype  [ NOT NULL ] }

) ;

比如说:

1
2
3
4
5
6
CREATE TABLE student (
sno CHAR(5) NOT NULL,
sn CHAR(20),
sd CHAR(2),
sa SMALLINT,
);

就会创建一张名为 student 的表,有四列,分别为 sno,sn,sd,sa 其中的 sno 不为 null

修改表

增加和删除列的操作如下:

1
2
ALTER  TABLE  <基表名>  ADD  <列名>  <数据类型>;
ALTER  TABLE  <基表名>  DROP  <列名>;

例如向 student 表中添加一列 department 可以这么写:

1
ALTER TABLE student ADD department CHAR(20) NOT NULL;

然后删除sa 这一列可以写为:

1
ALTER TABLE student DROP sa;

删除表

可以使用命令

1
DROP TABLE <基表名>;

删除表,例如使用命令:

1
DROP TABLE student;

可以直接删除掉表 student

对数据的操纵

查询

基本的语句就是:

1
2
3
4
5
6
SELECT * | column name AS xxx
FROM tablename, table2 , ...
WHERE condition
GROUP BY column_x
HAVING group_condition
ORDER BY column[ASC|DESC]

这里面只有 SELECT 子句和 FROM 子句是必须要有的

这里的 HAVING 是对分组的补充,用处是抛弃某些不合法的分组

高级操作

Join 连接操作

基本语法:

1
2
3
4
SELECT *
FROM table1
JOIN table2
on condition

这里就是把table1table2 按照条件 condition 进行连接操作,这里的Join一共有四种操作:

  • INNER JOIN: 这个指的是表中至少有一个匹配才返回行
  • LEFT JOIN : 即使右表中没有匹配也从左表这返回行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回行
  • FULL JOIN: 可以认为是上面两个的并集

    在没有显式声明的情况下,JOIN 等同于 INNER JOIN

除法

在基本的SQL语句里面没有提供除法,所以这边一般就把除法翻译为表之间的关系,例如所有购买了商品A的人,就相当于查出所有存在购买商品A的购买记录的人。

删除

删除的语句是:

1
2
DELETE FROM tablename
[WHERE condition];

即从表 tablename 中删除满足条件 condition 的所有行

更新

SQL的更新语句的格式如下:

1
2
3
INSERT 
INTO tablename
VALUES (expr | NULL) | subquery

例子如下:

1
2
3
4
INSERT INTO SC(sno,cno)
SELECT sno , cno
FROM S , C
WHERE sd = 'CS' and cn = 'database'

这里就相当于先运行下面的子查询,返回的表里面的所有的 (sno,cno) 的元组被插入到 SC 这个表中了

修改

修改的语句是:

1
2
3
UPDATE tablename
SET columnname = expr | NULL | subquery
[WHERE searchconditin];

例如:

1
2
3
4
5
6
7
UPDATE SC
SET G = 0
WHERE sno IN (
SELECT sno
FROM S
WHERE sd = 'CS'
);

视图

定义视图的语句是:

1
2
CREATE VIEW <视图名称> [列名1,列名2, ...]
AS <映像语句>[WITH CHECK OPTION]
  • 这里面的 <视图名称> 是必选的,但是后面的列名是可选的
  • 这里的影响语句可以是某个查询的结果
  • WITH CHECK OPTION 加上之后意味着可以对视图进行修改
    例如:
    1
    2
    3
    CREATE VIEW CS_S
    AS SELECT * FROM s
    WHERE sd = 'CS'
    删除视图:
    使用命令
    1
    DROP VIEW <视图名称>
    可以删除一个视图