数据库(database):
是按照数据的结构来组织、储存和管理数据的仓库。
常见的数据库:
一、数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。
它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过 DBMS 访问数据库中的数据,数据库管理员也通过 dbms 进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分 DBMS 提供数据定义语言DDL(Data Definition Language)和数据操作语言 DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。
目前市面上使用的主流数据库的存储模型为关系型数据库。
关系型数据库:
是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库
中的数据。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是
由二维表及其之间的联系所组成的一个数据组织。
二、SQL语言介绍
SQL(Structured Query Language)为数据库的语言在 1974 年由 Boyce【博伊
斯】和 Chamberlin【钱伯林】提出的一种介于关系代数与关系演算之间的结构化查询
语言,是一个通用的、功能极强的关系型数据库语言。
1、SQL是最重要的关系数据库操作语言,是所有关系数据库管理系统的标准语言。
2、许多数据库厂商在使用SQL的同时,都对SQL进行了扩展,比如ORACLE的PL/SQL语言,MSSQL-Server的T-SQL语言
3、SQL语言是一种 非过程化 语言,只需要提出“做什么”,而不需要指明“怎么做”
·SQL可以做什么?
1、数据库的 增删改查 操作(CRUD)
2、数据库对象的创建,修改和删除操作
3、用户权限/角色的授予和取消
4、事务控制
·SQL语言的分类:
1、DQL(数据查询语言)
select
2、DML(数据操作语言)
insert、update、delete
3、DDL(数据定义语言)
create、alter、drop
4、DCL(数据控制语言)
grant、revoke
5、TCL(事务控制语言)
SAVEPOINT、ROLLBACK、SET TRANSACTION、COMMIT
数据操作语言针对表中的数据,而数据定义语言针对数据库对象(表、索引、视图、触发器、存储过程、函数、表空间等)
关系数据库的基本概念:
·关系:整个二维表
·关系名:表格名称
·元组:行数据(记录)
·属性:列数据(字段)
·属性名:列名称(字段名)
·主键:唯一确定元组的属性组(关键字)
(当一列数据有重复的时候,不能做主键,可以由两组来组成主键。)
·域:属性的取值范围
三、SELECT语句
--SELECT语句
--最简单的SELECT语句
SELECT * FROM DEPT; -- * 表示所有列 where 所有行
SELECT * FROM EMP;
SELECT EMPNO , ENAME , SAL , COMN FROM EMP; --查询指定类的数据
--所有的员工存在的部门的部门编号
--查询的数据:deptno
--来源:emp
--去重:使用distinct
SELECT DISTINCT DEPTNO FROM EMP;
SELECT DISTINCT ENAME DEPTNO FROM EMP; --这里是将两个字段合成一个来考虑去重!
--表达式 结果字段的名字为表达式的名字,值为表达式计算的结果-->计算器
SELECT 1+1 FROM EMP;
SELECT DISTINCT 123*456 FROM EMP;
--别名 SELECT 字段1 AS 别名, 字段2 AS 别名, 字段3 别名...FROM 表名 别名;(AS可以省略)
--别名如果是英文 默认大写,如果想要原样使用/中文带空格,在别名前后加上""
SELECT DISTINCT 123+456 AS "get Sum" FROM DEPT;
SELECT DISTINCT 123+456 "求和' FROM DEPT D;
--''代表字符串 ""原样输出 结果字段名和值原样字符串输出
SELECT '哈哈' "123" FROM EMP; --字段为 哈哈,如果没有"123",那么字段名(属性名)为'哈哈'
--表达式|字符串都是伪列:不是表中真实存在的字段 DUAL
--字符串的拼接 ||
SELECT 'a'||'b-' FROM DUAL;
--查询所有员工的姓名添加到同一前缀 尚学堂 ***
SELECT '尚学堂'||ENAME "学生姓名" FROM EMP;
--虚表:oracal中不是真实存在的表,其中没有任何数据 DUAL
--时间
SELECT STSDATE FROM DAUL;
SELECT SYSDATE " 时间" FROM DUAL;