当前位置: 首页 > news >正文

常用数据库

模式的定义于删除

1.定义模式

CREATE SCHEMA [ <模式名> ]  AUTHORIZATION < 用户名 >;

要创建模式,调用该命令的用户必须拥有数据库管理员权限,或者获得了DBA授权


eg:为用户WANG定义一个模式S-C-SC

CREATE SCHEMA "S-C-SC" AUTHORIZATION WANG;

定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,如基本表、视图、索引等。

2.删除模式

DROP SCHEMA <模式名><CASCADE|RESTRICT>

其中CASCADE和RESRICT两者必选其一。CASCADE(级联),表示在删除模式的同时把该模式中所有的数据库对象全部删除。RESTRICT(限制),表示如果该模式中已经定义了数据库对象,则拒绝该删除语句的执行。


eg: 删除创建的模式Test

DROP SCHEMA Test CASCADE;

基本表的定义、删除与修改

1.定义基本表

CREATE TABLE <表名>(<列名><数据类型>[列级完整性限制])
										……
										[,<表级完整性约束>];

eg:建立一个学生表Student

CREATE TABLE Student
		(Sno CHAR(8) PRIMARY KEY,//列级完整性约束,Sno是主码
		Sname VARCHAR(20) UNIQUE,//Sname取唯一值
		Ssex CHAR(6),
		Sbirthday Date,
		Smajor VARCHAR(40)
		);

每一个基本表都属于某一个模式,一个模式包含多个基本表。

2.修改基本表

ALTER TABLE <表名>
	[ADD[COLUMN]<新列名><数据类型>[完整性约束] //增加新的一列
	[DROP[COLUMN]<列名>[CASCADE|RESREICT]]	//删除一列
	[RENAME COLUMN <列名> TO <新列名>]		//重命名列
	[ALTER COLUMN <列名> TYPE <数据类型>]//修改列的数据类型

3.删除基本表

DROP TABLE <表名>[RESTRICT|CASCADE]

如果选择RESTRICT,则该表的删除有限制条件,即该表不能被其他表的约束所引用,不能有视图,不能有触发器,不能有存储过程或函数等。

索引的建立与删除

1.索引(空间换时间)

当表的数据量很大时,查询操作会比较耗时。建立索引可以加快查询速度

常见的索引结构包括顺序表索引、B+树索引、哈希索引、位图索引等。索引文件由属性值和相应的元组指针组成。

索引需要占用一定的存储空间,当基本表更新时,索引需要进行相应的维护。

2.建立索引

CREATE [UNIQUE][CLUSTER] INDEX <索引名> 
ON <表名>(<列名>[次序]……)

eg:按学生姓名升序建立唯一索引

CREATE UNIQUE INDEX Idx_StuSname ON Student(Sname);

3.修改索引

ALTER INDEX <旧索引名> RENAME TO <新索引名>

4.删除索引

DROP INDEX <索引名>

数据查询

SELECT[ALL|DISTINCT]<目标列表达式>[别名]……
FROM <表名或视图名>[别名]
[WHERE <条件表达式>]
[GROUP BY <列名1>[HAVING <条件表达式>]]
[ORDER BY <列名2>[ASC|DESC]]
[LIMIT <行数1>[ OFFSET<行数2>]];

例子:


查询全体学生的学号与姓名

SELECT Sno,Sname FROM Student;

查询全体学生的详细记录

SELECT * FROM Student;

去掉结果中的重复行

SELECT DISTINCT Sno
FROM SC;

查询主修计算机科学与技术专业全体学生的姓名

SELECT Sname
FROM Student
WHERE Smajor='计算机科学与技术';

查询计算机科学与技术专业和信息安全专业的学生的姓名及性别

SELECT Sname,Ssex
FROM Student
WHERE Smajor IN ('计算机科学与技术','信息安全');

字符匹配

  • %代表任意长度(长度可以为0)的字符串
  • _代表任意单个字符

查询所有姓刘的学生的姓名、学号和性别

SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname LIKE '刘%';

涉及空值的查询

查询缺少成绩的学生的学号和相应的课程号

SELECT Sno,Cno
FRON SC
WHERE Grade IS NULL;

注意这里的IS不能用=替代


聚集函数

COUNT (*)						//统计元组个数
COUNT([DISTINCT|ALL]<列名>)		//统计一列的值的个数
SUM([DISTINCT|ALL]<列名>)		
AVG([DISTINCT|ALL]<列名>)
MAX([DISTINCT|ALL]<列名>)
MIN([DISTINCT|ALL]<列名>)

WHERE子句不能直接用聚集函数作为条件表达式。聚集函数只能用于SELECT子句和GROUP BY子句中的HAVING短语。


GROUP BY
查询平均成绩大于或等于90分的学生学号和平均成绩

SELECT Sno,AVG(Grade)
FROM SC
GROUP BY Sno
HAVING AVG(Grade)>=90;

数据更新

1.插入数据

INSERT INTO <表名>[(<属性列1>)]
VALUES (<常量1>……);

2.修改数据

UPDATE <表名>
SET <列名>=<表达式>
[WHERE <条件>];

eg:将学生2018001的出生日期改为2001-3-18

UPDATE Student
SET Sbirthday='2001-3-18'
WHERE Sno='2018001';

3.删除数据

DELETE FROM <表名>
[WHERE <条件>];

eg: 删除计算机科学与技术专业所有学生的选课记录

DELETE FROM SC
WHERE Sno IN
		(SELECT Sno
		FROM Student
		WHERE Smajor='计算机科学与技术');
http://www.dtcms.com/a/98421.html

相关文章:

  • 使用 Docker Compose 在单节点部署多容器
  • C++ 变量与初始化详解(十五)
  • 【商城实战(100)】商城败局启示录:探寻成功的反方向
  • 【ChatBox】deepseek本地部署
  • 解决 Gradle 构建错误:Could not get unknown property ‘withoutJclOverSlf4J’
  • 【Linux笔记】进程间通信——匿名管道||进程池
  • Linux 系统部署Jump Server服务
  • 使用msmtp和mutt在CentOS上发送指定目录下的所有文件作为邮件附件
  • 聚焦高德开放平台的地图应用场景:创新实践与技术解析
  • 若依赖前端处理后端返回的错误状态码
  • 【新手初学】SQL注入getshell
  • 1、C51单片机(STC8G2K64S4)串口实验
  • Java开发者指南:深入解析PBFT拜占庭容错算法
  • pycharm终端操作远程服务器
  • 【磁盘扩容】linux磁盘扩容
  • Koordinator-Metric查询
  • Python3基础库入门(个人学习用)
  • [ C语言 ] | 从0到1?
  • Redis设计与实现-哨兵
  • 分销商城小程序开发六大核心功能详解
  • 用react实现router路由
  • C++ 中名字的作用域、概念、嵌套与实践(十八)
  • Java基础-22-基本语法-实体类
  • 【MySQL篇】事务管理,事务的特性及深入理解隔离级别
  • Unity功能模块一对话系统(5)-完善对话流程及功能
  • Python针对大规模数据使用”sys模块加速I/O操作“:
  • 21天Python计划:函数简单介绍
  • PCBB印刷电路板缺陷检测YOLO数据集分享
  • LeetCode hot 100—两两交换链表中的节点
  • Redis场景问题1:缓存穿透