删除列
alter table class_factors
drop column 班级人数,人数系数确保在非主键列中不输入重复值
alter table teachers
add constraint uk_tno
unique (教师号)
用于建立和加强两个表数据之间的连接的一列或多列
lter table class_factors
add contraint fk_class_factors
foreign key (班级号)
references class (班级号)
当向表中插入数据时,如果没有为定义了DEFAULT的列提供值,则是隐式要求为此列使用默认值
alter table teachers
add constraint df_birth
default 1900-00-00 for 出生年月
通过限制输入到列中的值来强制域的完整性
alter table workload_standard
add constraint chk_standard
check ( standard >=330 )
用DISTINCT关键字可以去掉结果中的重复行。
SELECT DISTINCT Sno FROM SC
用来查找属性值属于指定集合的元组
列名 [ NOT ] IN (常量1, 常量2, … 常量n)
SELECT Sname, Ssex FROM Student
WHERE Sdept IN ('信息系', '数学系', '计算机系')
匹配串中可包含如下四种通配符:
_:匹配任意一个字符;
%:匹配0个或多个字符;
[ ]:匹配[ ]中的任意一个字符;
[ ^ ]:不匹配[ ]中的任意一个字符
查询名字中第2个字为‘小’或‘大’的学生的姓名和学号。
SELECT Sname, Sno FROM Student
WHERE Sname LIKE '_[小大]%'
查询学生表中姓‘张’、‘李’和‘刘’的学生的情况。
SELECT * FROM Student
WHERE Sname LIKE ' [张李刘]%'
查询学号的最后一位不是2、3、5的学生情况。
SELECT * FROM Student
WHERE Sno LIKE '%[^235]'
排序
ORDER BY <列名> [ASC | DESC ] [,<列名> … ]
说明:按<列名>进行升序(ASC)或降序(DESC)排序。
SQL提供的计算函数有:
COUNT( * ):统计表中元组个数;
COUNT([DISTINCT] <列名> ):统计本列列值个数;
SUM([DISTINCT] <列名> ):计算列值总和;
AVG([DISTINCT] <列名> ):计算列值平均值;
MAX([DISTINCT] <列名> ):求列值最大值;
MIN([DISTINCT] <列名> ):求列值最小值。
上述函数中除COUNT(*)外,其他函数在计算过程中均忽略NULL值。
统计选修了课程的学生的人数。
SELECT COUNT (DISTINCT Sno)
FROM SC
分组语句的一般形式:
[GROUP BY <分组条件>]
[HAVING <组过滤条件>]
HAVING用于对分组自身进行限制,它有点象WHERE子句,但它用于组而不是对单个记录;通常与GROUP BY一起使用。
查询修了3门以上课程的学生的学号
SELECT Sno FROM SC
GROUP BY Sno
HAVING COUNT(*) > 3
此语句的处理过程为:先用GROUP BY按 Sno进行分组,然后再用统计函数COUNT分别对每一组进行统计,最后挑选出统计结果满足大于3的组的Sno