(1)SQL是一种类似于英语的语言,语法简单。
(2)SQL是一种一体化语言,包括数据定义、数据查询、数据操作和数据控制等多方面的功能。
(3)SQL是一种非过程化的语言,用户不需要关心具体的操作过程。
(4)SQL是一种面向集合的语言,每个命令的操作对象是一个或多个关系,结果也是一个关系。
(5)SQL既是自含式语言,又是嵌入式语言。
(6)SQL具有数据查询、数据定义、数据操纵和数据控制四种功能。
创建数据库:
//创建数据库
create database <数据库名字>;
//创建数据表
create table <表明>(
id int NOT NULL AUTO_INCREMENT,
name varchar(20) NOT NULL,
sex char(1) DEFAULT '男',
score NUMERIC(4,1) CHECK(score>=0 AND score<=100),
PRIMARY KEY(id)
);
//约束
//AUTO_INCREMENT 自增
//NOT NULL 非空
//DEFAULT 默认值
//设置唯一约束
//[CONSTRAINT <约束名>] UNIQUE 可以设置多行约束和一个表内可以有多个约束
//[CONSTRAINT <约束名>] PRIMARY KEY(属性名) 主键约束 一个表只能有一个主键约束
//外键约束[CONSTRAINT <约束名>] FOREIGN KEY 参照性约束
//CHECK 约束,检查字段所允许的范围,确保域的完整性。
这里需要注意的是 UNIQUE约束和主键约束类似,但是有很大的区别:
在一个关系表中,主键约束只能存在一个,但是UNIQUE约束可以存在多个;
主键约束的不允许出现NULL值,但是UNIQUE允许出现NULL;
不能为同一列或者一组列同时定义主键约束和UNIQUE约束。
ADD方式
ALTER TABLE <表名> ADD <列定义>|<完整性约束定义>
//添加列和完整性约束
ALTER方式
ALTER TABLE <表名> ALTER COLUMN <表名> <数据类型>
//修改列
DROP方式
ALTER TABLE <表名> DROP CONSTRAINT <约束名>
//删除完整性约束
DROP TABLE <表名>
SELECT [ALL|DISTINCT] <列名> [AS 别名]
FROM <表名> [AS 别名]
[WHERE <检索条件>]
[GROUP BY <列名> [HAVING <条件表达式>]]
[ORDER BY <列名> [ASC|DESC]]
无条件查询,没有where语句
条件查询:存在where语句,通过使用where语句控制查询的条件。
这里需要注意的是BETWEEN AND 和 '<' 和 '<=' 的区别,BETWEEN AND 包括取等的情况。
多重条件查询则采用AND和OR控制条件。
集合查询,使用IN和NOT IN进行集合查询
SELECT SNo,CNo FROM SC WHERE CNo IN ('C1','C2')
等同于:
SELECT SNo,CNo FROM SC WHERE CNo ='C1' OR CNo ='C2'
NOT IN 的用法类似与'<>'运算符
模糊查询:使用'LIKE'进行部分匹配查询
这里需要了解几个通配符'%'、'_'、'[]'、'[^]'详情可以参考此博客文章。
空值查询:查询的时候要写成<列名> IS NULL 不能写成 <列名>=NULL
常用库函数
AVG平均函数
SUM求和函数
MAX求最大值的函数
MIN求最小值的函数
COUNT按列值统计个数
分组查询:
GROUP BY的用法
SELECT TNo,COUNT(*) AS C_Num
FROM TC
GROUP BY TNo
或者:
SELECT SNo,COUNT(*) AS SC_Num
FROM SC
GROUP BY SNo
HAVING (COUNT(*)>=2)
//使用HAVING语句类似于WHERE语句,控制查询的条件
查询结果的排序:
使用ORDER BY排序
注意ASC为升序,DESC为降序,默认排序方式为升序。