网站首页 > 技术文章 正文
SQL是一种说明性的编程语言;对于C之类的过程语言,你编写程序时需要指明得出结果所需的每个步骤,使用SQL这种说明性语言,只需描述想要的内容中,无需了解存取路径,只需提出what to do,而无需指明how to do;是一种面向集合的操作方式,只用于9个动词。因此,标准的SQL没有传统的流程控制结构,如if-then-else、for等语句。
SQL是交互式式或嵌入式语言。在交互式SQL环境中,用户输入的SQL命令直接发送到数据库管理系统,得到结果后立即显示。DBMS的服务器同时拥有图形和命令行工具,用一接受用户输入的SQL语句或包含SQL程序(脚本)的文本文件。
在开发数据库应用程序时,可以将SQL语句“嵌入”到编写程序所用的宿主语言(host language)中。宿主语言通常是一种通用语言(如C++、Java)或脚本语言(如PHP或Python).如一个PHP CGI脚本可以用SQL语句来查询MySQL数据库,MySQL交查询的结果返回给PHP变量,以便进一步分析或显示在网页上。
但在DBMS、宿主语言或操作环境中,语法上略有差异。
SQL表示“结构化查询语言”是一种变通的误解。它不是结构化的,不只用于查询,不是一种过程语言。
目前所有的关系型数据库管理系统如oracle、SQL Server、DB2、VFP都支持SQL。
查询只是SOL语言的重要组成部分,但不是全部。
数据定义:对表、表结构的操作,用create、drop、alter三个命令动词;
数据操作:对表记录的操作,用insert、delete、update三个命令动词;
数据控制:用grant、revoke二个命令动词;
数据查询:只有selec一个命令动词。
整个SQL,共9个命令动词对表、对表中列、行的操作:
创建、更改和删除表;
插入、更新和删除行;
查询(从n表中)选择列,筛选行;
数据定义语句:对表或表结构的操作 | Create | |
Alter | ||
Drop | ||
数据操作语句:对表记录的操作 | Insert | |
Update | ||
Delete | ||
数据查询语句 | Select | |
数据控制语句 | Grant | |
revoke |
student(学生表):
son char(5) 学号
sname char(20) 姓名
ssex tinyint(1) 性别
sage char(3) 年龄
sdept char(20) 所在系
1 增(记录)
INSERT INTO student (son,sname) VALUES('17050600156','Henrry')
2 查(记录)
SELECT sname,sage FROM student WHERE sage<20
(查询所有年龄在20岁以下的学生姓名及其年龄)
Select的选择项可以是表文件中的一个字段,也可以是一个常量,也可以是一个表达式,对于字段和表达式还可以使用下列函数:avg、sum、count、min、max等。
索引是排序的列表,在这个列表中索引列(或列表)的每个不同值和包含该值的行的硬盘地址存储在一起。DBMS无需检索整个表来定位行,而仅需扫描索引中的地址,就可以直接访问相应列。索引搜索通常要比顺序搜索快,但也是有代价的。其实质也就是另建了一张反映被索引表的行的地址清单。
3 删(记录)
DELETE FROM student WHERE sname = 'Henrry'
4 改(记录)
UPDATE student SET sname = 'Penny' WHERE sname = 'Henrry'
5 补充
SQL的三级模式:
外模式:视图
模式:基本表
内模式:存储文件
视图是存储的select语句,它能返回基于一个或多个表(或称作基础表)检索得到的数据表;
视图的基础表可以是基本表、临时表或其他视图,是指定的数据列或数据行的集合。
CREATE VIEW view-customes ...AS SELECT ...
创建视图并不会有任何显示,只是为了让DBMS用一个命名的select语句存储视图,然后通过其检索数据。
reference:http://www.w3school.com.cn/sql/sql_select.asp
-End-
猜你喜欢
- 2024-10-27 一文看懂mycat配置--数据库的读写分离、分表分库
- 2024-10-27 基于Percona XtraBackup 实现全备&增量备份与恢复
- 2024-10-27 Java EE核心框架实战:如何使用MyBatis实现CURD-2种数据库
- 2024-10-27 mysql如何进行累加计算 mysql 变量累加
- 2024-10-27 Springboot集成Mybatis ID生成策略注解 @GeneratedValue
- 2024-10-27 mybatis插入获取主键的方式和原理
- 2024-10-27 mybatis-plus保姆级入门教程,手把手教你轻松实现增删改查
- 2024-10-27 MyBatis框架 - 映射文件 mybatis如何映射表结构
- 2024-10-27 终于等到你:CYQ.Data V5系列 (ORM数据层)最新版本开源了
- 2024-10-27 一文带你搞定mybatis的映射配置文件
你 发表评论:
欢迎- 633℃几个Oracle空值处理函数 oracle处理null值的函数
- 626℃Oracle分析函数之Lag和Lead()使用
- 614℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 608℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 606℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 599℃【数据统计分析】详解Oracle分组函数之CUBE
- 588℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 573℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- oracle 19cOCM认证有哪些内容(oracle认证ocm月薪)
- Oracle新出AI课程认证,转型要持续学习
- oracle 表的查询join顺序,可能会影响查询效率
- Oracle DatabaseAmazon Web Services正式可用,Oracle数据库上云更容易了
- Oracle 19.28 RU 升级最佳实践指南
- 汉得信息:发布EBS系统安装启用JWS的高效解决方案
- 如何主导设计一个亿级高并发系统架构-数据存储架构(三)
- Java 后端开发必看!工厂设计模式轻松拿捏
- ORA-00600 「25027」 「x」报错(抱错孩子电视剧 爸爸是武术 另一个爸爸是画家)
- 新项目终于用上了jdk24(jdk新建项目)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)