SQL并不是完全的编程语言,而是一种数据子语言,仅包括定义和处理数据库的结构。要成为完全的编程语言,SQL语句必须嵌入脚本语言(如VBScript)或编程语言(Java和C#),也可以使用支持DBMS的命令提示交互式地提交SQL语句。
SQL命令分类之二:DDL、DML。
CREATE语句:
1.
CREATE TABLE 表名(
列名 值类型 若干列约束,
列名 值类型 若干列约束,
......
);
列约束——PRIMARY KEY,NOT NULL,NULL,UNIQUE,DEFAULT
2.
表约束:
CREATE TABLE 表名(
列名 值类型 若干列约束,
列名 值类型 若干列约束,
......
CONSTRAINT 约束名 PRIMARY KEY(列名),
CONSTRAINT 约束名 FOREIGN KEY(列名) REFERENCES 表名(列名)
ON UPDATE CASCADE,
CONSTRAINT 约束名 FOREIGN KEY(列名) REFERENCES 表名(列名)
ON UPDATE NO ACTION,
CONSTRAINT 约束名 FOREIGN KEY(列名) REFERENCES 表名(列名)
ON DELETE CASCADE,
CONSTRAINT 约束名 FOREIGN KEY(列名) REFERENCES 表名(列名)
ON DELETE NO ACTION
);INSERT语句:
1.
INSERT INTO 表名 VALUES(值1,值2,值3...);——————————不需要指定代理键的值,值的顺序和表中的顺序一致,非数字值放在单引号中。
2.
INSERT INTO 表名 (列名1,列名2,列名3......) VALUES(值1,值2,值3......);
SELECT语句:
1.
SELECT 列名1,列名2,列名3——————————列名前加DISTINCT关键字,将强制删除结果中的重复行 ,* 代表所有列
FROM 表名——————————————SELECT语句本身的结果也是表,故此处可以嵌套SELECT语句
WHERE 行限定条件;————————省略WHERE语句就是不进行行限定
关于WHERE子句行限定条件的限定方法
限定方法是通过逻辑连接符(AND,OR)将若干个子条件连接。其中,子条件的构造方法有:
—列值大小判断,由比较运算符(=,>,<,>=,<=,!=或<>)构成,其中文本类型的列只能判断是否相等
—列值范围判断,通过BETWEEN关键字
—列值集判断,通过关键字IN和NOT IN,如 : WHERE 列名 IN(值1,值2,值3)表示指定列的值必须是括号中值集中的一个,而NOT IN 表示非该值集中的任意一个。除了使用直接列举的方式表示值集,还可以用嵌套的方式(SELECT语句对单个列进行操作的结果就是一个值集)。
—文本类列值的简单格式判断,使用LIKE和NOT LIKE关键字,下划线代表一个未指定字符,百分号代表一个或多个未指定的字符,Access ANSI-89 SQL使用问号代替下划线,星号代替百分号
—列值是否有值,使用关键字IS NULL和IS NOT NULL。
SELECT语句中,SELECT后面不仅可以是表(FROM后跟的表)中存在的列,还可以通过存在的列获取新列,方法有:
1.
对现有列进行基本算数运算(只对数值列),格式如:SELECT (列名 * 数值),如果在此基础上加上AS 新列名,就能为此列命名,格式如:SELECT (列名 * 数值) AS 新列名
2.
内置函数的值——COUNT、SUM、AVG、MAX、MIN的值,其中,COUNT可以用于任何类型数据,其它只可用于数值型数据,它们构造的新列都是数值型数据。
COUNT用法——COUNT(列名),得到的是指定列的行数值
SUM用法——SUM(列名),得到的是指定列的总和
MAX用法——MAX(列名),得到的是指定列的最大值
MIN用法——MIN(列名),得到的是指定列的最小值
格式如:SELECT COUNT( * ) AS 新列名
SELECT FROM架构可加入的其它子句:
1.
ORDER BY 列名 ASC——————ASC是升序,不写ASC也是升序,换为DESC则为降序。此外,不只可以按一个列排序,还可以依次按多个列排序,列名用逗号分割。
2.
分组————————分组主要用于对内置函数的采值范围进行分组,
SELECT 列名 , Count (*) AS 新列名
FROM 表名
GROUP BY 列名
HAVING 限定条件——————————分组不仅限定了SELECT部分内置函数的采值范围,也限定了HAVING部分中会存在的内置函数的采值范围。
SQL标准规定,同时出现WHERE和GROUP BY时,首先运用WHERE条件。
使用连接查询多个表:
方法1
SELECT 表名1.列名1,表名2.列名
FROM 表1,表2
WHERE 表名1.列1=表2.列1;————————表1和表2通过表1.列1和表2.列1进行连接
方法2
SELECT 表1.列1,表2.列2,表3.列3
FROM 表1,表2,表3
WHERE (表1 JOIN 表2
ON 表1.列1=表2.列1)JOIN 表3 ON 表2.列1=表3.列1;————————Access要求JOIN前加INNER,外连接加LEFT或者RIGHT
修改信息:
UPDATE 表名
SET 列名=新值
WHERE 行限定;
删除行信息:
DELETE
FROM 列名
WHERE 行限定;
修改表结构:
1.添加约束
ALTER 表名
ADD CONSTRAINT 约束名 ......;
2.删除约束
ALTER 表名
DROP CONSTRAINT 约束名;
3.添加字段
ALTER 表名
ADD 新字段名 字段类型 字段特性;
4.删除字段
ALTER 表名
DROP COLUMN 字段名
5.修改字段类型和特性
ALTER 表名
ALTER COLUMN 字段名 字段类型 字段特性;