数据库学习笔记——SQL语言初学

SQL数据库结构化语言通常包括DQL(查询),DML(操纵),DPL(处理),DCL(控制),DDL(定义或描述语言),CCL(指针控制)

数据定义语句

**定义模式**CREATE SCHEMA TEXT AUTHORIZATION ZHANG
**外码**FOREIGN   KEY (Sno)REFERENCES Student(Sno)//满足参照完整性
**设置搜索路径**SET search_path To "S-T",PUBLIC
**修改表**			ALTER TABLE ADD			//添加列,约束条件
								Add COLUMN Sage INT//将Sage列设置为整数型
								ADD UNIQUE(Cname)//添加必须取唯一值的约束条件
								DROP COLUMN//删除列
								DROP CONSTRAINT//删除指定的完整性约束条件
								ALTER COLUMN	//修改原有列定义
					DROP TABLE<表名>[RESTRICT/CASCADE]//有限制删除表和无限制删除表
**建立索引**		CREATE [UNIQUE/CLUSTER] INDEX XXX ON YYY(NAME)
					DROP INDEX XXX;
								

在这里插入图片描述

数据查询

**查询列**      	SELECT <属性名> FROM <表名> WHERE<条件表达式>
**查询全部列**		SELECT * FROM <表名>*相当于ALL
**消除重复查询**	SELECT DISTINCT <属性名> FROM SC;
**确定范围**		SELECT FROM WHERE Sage BETWEEN 10 AND 30;
					SELECT  NAME FROM STUDENT WHERE GRADE IN ('A','B','C');
**字符匹配**		[NOT] LIKE 'a%b'//以a开头以b结尾
								a_b中一个空格表示任意单个字符
								'Dd\_'表示真的有Dd_
								'Dd_'中_表示任意单个字符
**升序降序**		ORDER BY ASC\DESC (LIMIT 0,1);//	括号中表示最大的一个
**聚集函数**		SELECT COUNT(*)FROM STUDENTS;
					COUNT(*)//计算元组个数,区分求个数和求和
					COUNT([DISTINCT|ALL]<列名>)//SUM AVG MAX MIN求某列的和,平均数,最大,最小
												//DISTINCT是用来返回唯一不同值
					SELECT CNO,COUNT(SNO) FROM SC GROUP BY CNO//先分组再计算
					SELECT * FROM SC GROUP BY SNO HAVING AVG(Grade)>=90//区分WHERE和HAVING语句,WHERE作用于记录,而HAVING记录于分组


on,where,having的区别
表的操作是会建立一个临时表的,on是在建立临时表的过程中发挥作用,where是在建立临时表之后进行计算操作之前发挥作用,而having是在计算之后发挥作用。
DISTINCT可以列出不同的值,无论是属性值还是属性名(select distinct *from)。

数据连接查询和嵌套查询

 **等值连接**SELECT Student.*,SC.*FROM Student,SC WHERE ...;//会存在重复属性列
 	SELECT * FROM Student JOIN SC ON Student.Sno=SC.Sno//和上面是一样的 
 **自然连接**:SELECT Student.Sno,Sname,Sage,Sdept,Cno,Grade;//手动减掉重复属性列
 **自身连接**:取俩个不同的别名再相连接
 **外连接**SELECT * FROM Student LEFT OUT JOIN SC ON(Student.Sno=SC.sno)//左外连接显示左边的所有数据右边若无则补NULL;右外连接保留右边的所有数据,若无则补空。
 **多表连接**:SELECT *FROM 1,2,3 WHERE ...//两个表以上进行连接称为多表连接。
 **嵌套查询**SELECT STU.Sno FROM Student WHERE Sno IN (SELECT Sno FROM SC WHERE Cno='2') AS STU;//使用嵌套查询必须使用别名将内部查询的结果重新命名。
 ;	

								

内连接与外连接:内连接是将相同属性连接,外连接是有相同则连接,若不同则补空//可以用嵌套循环过程来理解外连接。
连接操作的执行过程:1嵌套循环法2排序合并法3索引连接法
嵌套子查询的谓语有:in(属于),=(),>(),>=();>ANY()其中一个,>ALL()所有;
EXISTS
集合查询 并(UNION)【OR】,交(INTERSECT)【这和and一样吧】,差(EXCEPT)
UNION 将两语句的结果合并,自动去重
UNION ALL 将两语句结果合并,保留重复
判空操作只能用is NULL ,不能用=NULL;

数据更新

**插入**:INSERT INTO Student() VALUES('','','','',13);
		INSERT INTO Student(Age) SELECT Age FROM People GROUP BY Sdept
**修改**UPDATE<表名> SET(a=1) WHEREName='XPJ'//没有where就是把所有记录都统一变化
**删除**DELETE FROM Student WHERE()
**建立视图**CREATE VIEW <视图名> AS SELECT() FROM() WHERE()//as是使用别名语句
**删除视图**DROP VIEW <视图名>[CASCADE]//CASCADE是可以把该视图的导出视图一起删除
**跟新视图**UPDATE <视图名> SET WHERE

更新视图时系统会自动转化成更新基本表
不是所有视图都是可以更新的,不同数据库管理系统有不同的限制,因为有些视图的更新不能唯一有意义的 转化成相对应基本表的更新。而行列子集视图(含主码的子集)是可以更新的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值