SQL语言基础分类讲解
sql语言的三大类语句
sql语言的三大类语句SQL(Structured Query Language)是一种专门用于管理和操作关系型数据库的语言。
它被广泛应用于从小型企业到大型组织等各种规模的数据库管理系统中。
SQL语言包含了多种类型的语句,但总体上可以分为三大类:数据操纵语言(DML)、数据定义语言(DDL)和数据控制语言(DCL)。
一、数据操纵语言(DML)数据操纵语言主要用于从数据库中检索、插入、更新和删除数据。
下面是一些常见的DML语句:1. SELECT语句:SELECT语句用于从一个或多个表中检索数据。
它允许我们指定要检索的列和查询的条件,以满足特定的需求。
示例:SELECT 列名 FROM 表名 WHERE 条件;2. INSERT语句:INSERT语句用于将新的数据插入到数据库表中。
示例:INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);3. UPDATE语句:UPDATE语句用于更新表中已经存在的数据。
示例:UPDATE 表名 SET 列名 = 值 WHERE 条件;4. DELETE语句:DELETE语句用于从表中删除数据。
示例:DELETE FROM 表名 WHERE 条件;二、数据定义语言(DDL)数据定义语言主要用于创建、修改和删除数据库对象,例如表、视图、索引等。
下面是一些常见的DDL语句:1. CREATE语句:CREATE语句用于创建新的数据库对象,如表、视图和索引。
示例:CREATE TABLE 表名 (列名1 数据类型, 列名2 数据类型, ...);2. ALTER语句:ALTER语句用于修改现有的数据库对象,如表结构、列定义等。
示例:ALTER TABLE 表名 ADD 列名数据类型;3. DROP语句:DROP语句用于删除数据库对象。
示例:DROP TABLE 表名;三、数据控制语言(DCL)数据控制语言用于定义数据库的安全性和完整性约束,以及授权和回收用户对数据库对象的访问权限。
SQL基础培训教材课件pptx-2024鲜版
2024/3/27
17
03
数据库创建与管理操作
Chapter
2024/3/27
18
创建数据库及设置参数
01
选择数据库管理系 统(如MySQL、 Oracle、SQL Server等)
02
确定数据库名称、 存储位置、字符集 等参数
03
使用CREATE DATABASE语句创 建数据库
04
设置数据库参数, 如最大连接数、日 志文件大小等
03
注意事项
2024/3/27
04
确保插入的数据类型与表定义的数据类型一致。
05
对于自增列,无需指定值,数据库会自动生成。
06
对于非空列,必须指定值,否则会报错。 34
更新数据策略及最佳实践
更新指定列的数据:使用UPDATE语句,指定表名、要更 新的列名及新的值,同时可以通过WHERE子句指定更新 条件。
2024/3/27
25
索引优化查询性能
索引的作用
加快数据的检索速度,提高查 询效率。
索引的创建原则
根据查询需求和表结构特点, 选择合适的字段创建索引。
索引的维护
定期分析和优化索引,避免索 引过多或不合理导致性能下降。
2024/3/27
26
实例演示:设计并实现一个用户信息表
01
表结构设计
根据实际需求设计用户信息表的字 段和数据类型。
2
01
SQL概述与基础知识
Chapter
2024/3/27
3
SQL定义及发展历程
SQL(Structured Query Language)是结构化查询语 言的缩写,用于管理关系数据库管理系统(RDBMS)。
基础sql语句
基础sql语句1. SELECT: 用于查询表中的数据,可以使用通配符(*)表示所有列或者指定列名。
例子:SELECT * FROM table_name;2. FROM: 用于指定查询的数据来源,即需要查询哪张表。
例子:SELECT * FROM table_name;3. WHERE: 用于筛选满足条件的数据行,可以使用比较运算符(>,<,=,!=,>=,<=)等。
例子:SELECT * FROM table_name WHEREcolumn_name >= 10;4. ORDER BY: 用于将查询结果按照某个列进行排序,可以指定升序或降序(ASC或DESC)。
例子:SELECT * FROM table_name ORDER BYcolumn_name ASC;5. GROUP BY: 用于将查询结果按照某个列进行分组,通常使用聚合函数(SUM,COUNT,AVG,MAX,MIN)进行数据计算。
例子:SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;6. LIMIT: 用于限制查询结果的数量,只返回前几条数据。
例子:SELECT * FROM table_name LIMIT 10;7. JOIN: 用于将多张表按照共同的字段进行连接,可以有多种连接方式(INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL OUTER JOIN)。
例子:SELECT * FROM table1 LEFT JOIN table2 ONtable1.column_name = table2.column_name.。
SQl数据库快速入门必须掌握的四大基本语句
SQl数据库快速入门必须掌握的四大基本语句做一个系统的后台,基本上都少不了增删改查,作为一个新手入门,我们必须要掌握SQL 四条最基本的数据操作语句:Insert,Select,Update和Delete!下面对这四个语句进行详细的剖析:熟练掌握SQL是数据库用户的宝贵财富。
在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。
当你完成这些学习后,显然你已经开始算是真正SQ L入门了。
在我们开始之前,先使用CREA TE TABLE语句来创建一个表。
DDL语句对数据库对象如表、列和视进行定义。
它们并不对表中的行进行处理,这是因为DDL语句并不处理数据库中实际的数据。
这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。
SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。
由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。
在图1中我们给出了一个名为EMPLOY EES的表。
其中的每一行对应一个特定的雇员记录。
请熟悉这张表,我们在后面的例子中将要用到它。
INSERT语句用户可以用IN S ERT语句将一行记录插入到指定的一个表中。
例如,要将雇员John Smith 的记录插入到本例的表中,可以使用如下语句:INSERTINTO EMPLOYE ES VALUES('Smith','John','1980-06-10','Los Angles',16,45000);通过这样的IN SERT语句,系统将试着将这些值填入到相应的列中。
这些列按照我们创建表时定义的顺序排列。
SQL语言入门
SQL语⾔⼊门内容来源:唐成. PostgreSQL修炼之道[M]. 机械⼯业出版社, 2015.此书购买链接:SQL(Structured Query Language)结构化查询语⾔1. 语法简介1.1 语句分类DDL (Data Definition Language)数据定义语⾔,主要⽤于创建、删除,以及修改表、索引等数据库对象语⾔。
DML (Data Manupulation Language)数据操作语句,主要⽤于插⼊、更新、删除数据,所以分为INSERT、UPDATE、DELETE三种语句。
DQL (Data Query Language)数据查询语句,基本就是SELECT查询语句,⽤于数据查询。
1.2 语法结构多条SQL语句之间⽤分号(;)隔开每个SQL命令有⼀些列的记号组成:关键字标识符双引号包围的标识符常量单引号包围的⽂本常量特殊的字符……2. DDL语句2.1 建表语句表⽰关系型数据库中最基本的对象,有很多列也有很多⾏,每⼀列有⼀个名字,不同的列有不同的数据类型。
建表语句的⼀个简单语法如下:CREATE TABLE table_name (col01_name data_type,col02_name data_type,col03_name data_type,col04_name data_type);其中CREATE和TABLE为关键字,表⽰创建表。
table_name为表名,col01_name col02_name col03_name col04_name分别表⽰列名。
data_type表⽰数据类型,不同的数据库系统有不同的数据类型名称。
变长的字符串在⼤多数数据库中都可使⽤varchar类型。
整形数据⼀般使⽤int类型。
⽇期类型使⽤date。
例如:CREATE TABLE score (student_name varchar(40),chinese_score int,math_score int,test_date date);在建表的时候,可以指定表的主键,主键是表中⾏的唯⼀标识,这个唯⼀标识,是不能重复的。
SQL数据库基础语法
SQL数据库基础语法SQL语句的概述SQL语⾔的分类 数据定义语⾔(Data Definition Language)主要⽤于修改、创建和删除数据库对象,其中包括CREATE ALTER DROP语句。
数据查询语⾔(Data Query Language)主要⽤于查询数据库中的数据,其主要是SELECT语句,SELECT语句包括五个⼦句,分别是FROM WHERE HAVING GROUP BY和WITH语句。
数据操作语⾔(Data Manipulation Language)主要⽤于更新数据库⾥数据表中的数据,包括INSERT UODATE DELETE语句。
数据控制语⾔(Data Control Language)主要⽤于授予和回收访问数据库的某种权限。
包括GRANT REVOKE等语句。
事物控制语⾔,主要⽤于数据库对事物的控制,保证数据库中数据的⼀致性,包括COMMIT ROLLBACK语句。
常⽤的数据类型 MYSQL: SQL语句的书写规范 SQL语句中不区分关键字的⼤⼩写 SQL语句中不区分列名和对象名的⼤⼩写 SQL语句对数据库中数据的⼤⼩写敏感 SQL语句中使⽤--注释时,--后⾯⾄少有⼀个空格,多⾏注释⽤/* */ 数据库的创建与删除 (1)数据库的创建: CREATE DATABASE database_name; 在中书写SQL语句时,在SQL语句后⾯都要加上分号 (2)数据库的删除 DROP DATABASE database_name;数据表的创建与更新 数据库中的表 (1)数据记录:在数据表中的每⼀⾏被称为数据记录 (2)字段:数据表中的每⼀列被称为字段 (3)主键(PRIMARY KEY):作为数据表中唯⼀的表⽰,保证了每⼀天数记录的唯⼀性。
逐渐在关系数据库中约束实体完整性。
所谓实体完整性,是指对数据表⾏的约束。
(4)外键(FOREIGN KEY):外键⽤来定义表与表之间的关系。
数据库第4章 SQL语言基础及数据定义功能
第4章SQL语言基础及数据定义功能用户使用数据库时需要对数据库进行各种各样的操作,如查询数据,添加、删除和修改数据,定义、修改数据模式等。
DBMS必须为用户提供相应的命令或语言,这就构成了用户和数据库的接口。
接口的好坏会直接影响用户对数据库的接受程度。
数据库所提供的语言一般局限于对数据库的操作,它不是完备的程序设计语言,也不能独立地用来编写应用程序。
SQL(Structured Query Language,结构化查询语言)是用户操作关系数据库的通用语言。
虽然叫结构化查询语言,而且查询操作确实是数据库中的主要操作,但并不是说SQL只支持查询操作,它实际上包含数据定义、数据查询、数据操作和数据控制等与数据库有关的全部功能。
SQL已经成为关系数据库的标准语言,所以现在所有的关系数据库管理系统都支持SQL。
本章将主要介绍SQL语言支持的数据类型以及定义基本表和索引的功能。
4.1 SQL语言概述SQL语言是操作关系数据库的标准语言,本节介绍SQL语言的发展过程、特点以及主要功能。
4.1.1 SQL语言的发展最早的SQL原型是IBM的研究人员在20世纪70年代开发的,该原型被命名为SEQUEL (Structured English QUEry Language)。
现在许多人仍将在这个原型之后推出的SQL语言发音为“sequel”,但根据ANSI SQL委员会的规定,其正式发音应该是“ess cue ell”。
随着SQL语言的颁布,各数据库厂商纷纷在其产品中引入并支持SQL语言,尽管绝大多数产品对SQL语言的支持大部分是相似的,但它们之间还是存在一定的差异,这些差异不利于初学者的学习。
因此,我们在本章介绍SQL时主要介绍标准的SQL语言,我们将其称为基本SQL。
从20世纪80年代以来,SQL就一直是关系数据库管理系统(RDBMS)的标准语言。
最早的SQL标准是1986年10月由美国ANSI(American National Standards Institute)颁布的。
SQL必知必会笔记
SQL必知必会笔记第一章了解SQL1. 数据库是一个以某种有组织的方式存储的数据集合保存有组织的数据的容器(通常是一个文件或是一组文件) 2. 数据库软件应成为数据库管理系统DBMS3. 表某种特定类型数据的结构化清单4. 模式(schema)关于数据库和表的布局及特性的信息5. 列(Colomn)表中的一个字段。
所有表都是由一个或是多个列组成的。
6. 数据类型(datatype)所容许的数据的类型。
每个表列都有相应的数据类型,他限制(或容许)该列中存储的数据。
7. 行表中的一个记录8. 主键(primary key)一列或者一组列,其值能够唯一标识表中的每个行唯一标识表中每行的这个列(或这组列)称为主键。
主键用来表示一个特定的行。
没有主键,更新或删除表中特定行很困难,因为没有安全的方法保证只涉及相关的行。
9. 表中任何列都可以作为主键,只要满足(1)任意两行都不具有相同的主键值(2)每个行都必须具有一个主键值(主键列不允许NULL值)(3)主键列中的值不允许修改或更新(4)主键值不能重用,即某列从表中删除,它的主键不能赋给以后的新行。
第三章按多个列排序1( 子句(clause)sql语句由子句构成,有些子句是必须的,而有的是可选的。
一个子句通常由一个加上所提供的数据组成。
2( 子句的例子有SELECT语句的FROM子句3( ORDER BY 子句的位置在指定一条ORDER BY子句时,应保证它是SELECT语句中最后一条子句。
该子句的次序不对将会出现错误消息。
4( 按多个列排序执行多个列排序命令前可以发现同样的工资的人名不是按字典序排列的执行以后~~~撒花~~按列位置排序select FIRST_NAME,salaryfrom employeesorder by salary,FIRST_NAME;等价于select FIRST_NAME,salaryfrom employeesorder by 2,1;5( Order by 默认为升序排序而order by salary DESC 为降序排序DESC关键字只直接应用到位于其前面的列名ORDER BY salary DESC, FIRST_NAME; 6( 在SELECT语句中,数据根据WHERE 子句中指定的搜索条件进行过滤。
SQL语言分类
SQL语⾔分类SQL语⾔共分为四⼤类:⼀、数据查询语⾔DQL 数据查询语⾔DQL基本结构是由SELECT⼦句,FROM⼦句,WHERE⼦句组成的查询块: SELECT FROM WHERE⼆、数据操纵语⾔DML 数据操纵语⾔DML主要有三种形式: 1) 插⼊:INSERT 2) 更新:UPDATE 3) 删除:DELETE三、数据定义语⾔DDL 数据定义语⾔DDL⽤来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如: CREATE TABLE/VIEW/INDEX/SYN/CLUSTER 表视图索引同义词簇 DDL操作是隐性提交的!不能rollback四、数据控制语⾔DCL 数据控制语⾔DCL⽤来授予或回收访问数据库的某种特权,并控制数据库操纵事务发⽣的时间及效果,对数据库实⾏监视等。
如: 1) GRANT:授权。
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某⼀点。
回滚---ROLLBACK;回滚命令使数据库状态回到上次最后提交的状态。
其格式为:SQL>ROLLBACK; 3) COMMIT [WORK]:提交。
在数据库的插⼊、删除和修改操作时,只有当事务在提交到数据库时才算完成。
在事务提交前,只有操作数据库的这个⼈才能有权看到所做的事情,别⼈只有在最后提交完成后才可以看到。
提交数据有三种类型:显式提交、隐式提交及⾃动提交。
下⾯分别说明这三种类型: (1) 显式提交 ⽤COMMIT命令直接完成的提交为显式提交。
其格式为:SQL>COMMIT; (2) 隐式提交 ⽤SQL命令间接完成的提交为隐式提交。
这些命令是:ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
(3) ⾃动提交 若把AUTOCOMMIT设置为ON,则在插⼊、修改、删除语句执⾏后,系统将⾃动进⾏提交,这就是⾃动提交。
简述sql数据类型
简述sql数据类型
SQL(Structured Query Language,结构化查询语言)是用于管理关系数据库管理系统的标准计算机语言,数据类型是 SQL 语言中重要的一部分。
下面是 SQL 中常用的数据类型:
1. 数值类型:
- 整数类型(INT):用于存储整数,例如 1、2、3 等。
- 小数类型(FLOAT):用于存储浮点数,例如 3.14、1.23 等。
- 精确小数类型(DECIMAL):用于存储高精度的小数,通常用于金融计算等需要高精度的场景。
2. 日期和时间类型:
- DATE:用于存储日期,例如'2023-09-01'。
- TIMESTAMP:用于存储日期和时间,例如'2023-09-01 12:30:00'。
3. 字符串类型:
- CHAR:用于存储固定长度的字符串,例如'Hello'。
- VARCHAR:用于存储可变长度的字符串,例如'Hello World'。
4. 二进制类型:
- BLOB:用于存储大型二进制数据,例如图像、音频、视频等。
- BINARY:用于存储固定长度的二进制数据,例如存储 MD5 哈希值等。
除了以上常见的数据类型,不同的数据库管理系统可能还支持其他特定的数据类型,例如 JSON 类型、XML 类型等。
在使用 SQL 时,需要根据具体的业务需求选择合适的数据类型来存储数据。
希望这个回答对你有帮助。
如果你有任何其他问题,请随时提问。
SQL最全基础教程
索引优化原理及实践指南
索引原理
索引是一种数据结构,可以提高数 据检索的速度。通过创建索引,数 据库系统可以快速定位到表中的特
定行。
索引优化
常见的索引类型包括B树索引、哈 希索引、位图索引等,不同类型的
索引适用于不同的场景和需求。
子查询分类
标量子查询、列子查询、行子查询和表子查询。标量子查询返回单个值,列子查询返回一列数据,行子查 询返回一行数据,表子查询返回多行多列数据。
嵌套使用技巧
子查询可以嵌套在SELECT、FROM和WHERE子句中。在SELECT子句中,子查询可以作为表达式的一部 分;在FROM子句中,子查询可以作为派生表使用;在WHERE子句中,子查询可以作为条件表达式的一 部分。
透明数据加密(TDE)
对数据库文件进行加密,保护静止数据的安全性。
审计跟踪记录访问行为
审计策略配置
配置审计策略以记录对数 据库对象的访问行为。
实时监控与报警
实时监控数据库访问行为, 并在检测到异常时及时报 警。
审计日志分析
分析审计日志以检测异常 访问行为或潜在的安全威 胁。
08
总结回顾与拓展学习资源
对查询结果进行排序。
排序顺序
升序(ASC)或降序(DESC),默认为升 序。
排序列
指定要排序的列名或列别名。
多列排序
可指定多个列进行排序,先按第一列排序, 再按第二列排序,以此类推。
分组聚合
01
02
03
04
05
GROUP BY子句 分组列 作用
聚合函数
HAVING子句作 分组条件 用
sql一级二级三级标准
sql一级二级三级标准
SQL标准分为三个主要部分:一级、二级和三级范式。
1. 一级范式(1NF):这是最基础的范式,要求表中的每个列都是不可分割的最小单元,并且每个表都必须有一个唯一的主键。
2. 二级范式(2NF):在满足一级范式的基础上,要求表中的每个非主键列完全依赖于主键。
换句话说,一个表应该具有一个唯一的主键,并且所有其他列都直接依赖于主键。
例如,一个订单表有订单号、产品ID、数量和价
格等列,其中价格是根据产品ID从另一个表中获取的。
在这种情况下,价
格列不直接依赖于主键订单号,而是依赖于非主键列产品ID,违反了二级
范式。
要满足二级范式,可以将价格这一非主键列分离出来,创建一个产品表,其中包含产品ID和价格,然后通过产品ID将两个表关联起来。
3. 三级范式(3NF):在满足二级范式的基础上,要求消除表中的传递依赖。
换句话说,这意味着任何非主键列都不能依赖于其他非主键列。
以上内容仅供参考,可以查阅SQL相关的书籍或咨询专业的技术人员,获
取更全面准确的信息。
泛微培训教材:SQL语句基础
泛微软件股份—Learning Day课件
过滤查询结果
逻辑操作符 逻辑操作符允许使用逻辑条件来限制所查询的 结果 操作符 说明
x AND y
x OR y
当x和y都为true时,返回true
泛微软件股份—Learning Day课件
介绍两个函数
Case when
示例:显示员工姓名,性别
select lastname ,case when sex='0' then '男' when sex='1' then '女' end from HrmResource NVL( string1, replace_with)。 Oracle 特有
泛微软件股份—Learning Day课件
过滤查询结果 示例3 查询系统有效用户 select * from hrmresource where stauts in(0,1,2,3) 示例4 查询分部id = 5的有效用户 select * from hrmresource where stauts in(0,1,2,3) And subcompanyid1 = 5 示例5
示例2 查询2014-01这个月新建的流程 Select * from workflow_requestbase where createdate >=‘2014-01-01’ and createdate <=‘2014-01-31’ 或者 Select * from workflow_requestbase where createdate between ‘2014-01-01’ and ‘2014-01-31’
《SQL基础知识培训》课件
使用合适的查询语句,避免使用复杂的子查询和联接操作,减少数据量。
数据库设计优化
合理地设计数据库表结构,规范数据类型,避免数据冗余和异常。
SQL注入与防范
SQL注入定义
SQL注入是一种攻击手段 ,攻击者通过在输入字段 中插入恶意的SQL代码, 来获取、修改或删除数据 库中的数据。
防范措施
06
SQL实践案例
简单查询案例
总结词
通过简单的查询语句,学习如何使用 SELECT语句从数据库表中检索数据。
查询订单信息
从订单表中检索订单号、客户名称和订单金 额。
查询员工信息
从员工表中检索所有员工的姓名、年龄和职 位。
查询商品信息
从商品表中检索商品名称、价格和库存数量 。
复杂查询案例
使用JOIN子句将员工表和部门表进行 关联,检索员工的姓名、部门名称和 职位。
03
视图可以用于限制用户 对数据库的访问权限, 只展示用户需要的部分 数据。
04
视图可以用于实现数据 的汇总和聚合操作,方 便进行数据分析和管理 。
索引
索引是一种数据库对象,它可 以帮助加快对数据库表中数据
的检索速度。
索引可以大大提高查询操作的 效率和性能,特别是对于大型 数据库表来说效果更加明显。
根据业务需求和岗位职责,合理分配数 据库权限,遵循最小权限原则。
权限审计
定期进行权限审计,检查权限设置是 否合理和安全,及时发现和处理潜在
的安全风险。
权限控制策略
制定严格的权限控制策略,限制对敏 感数据的访问和修改,对高权限用户 进行重点监控和管理。
权限变更管理
对权限变更进行记录和管理,确保权 限变更符合安全要求和业务需求。
SQL语言的分类及语法
SQL语言的分类及语法1.1.2 SQL语言的分类及语法可执行的SQL语句的种类数目之多是惊人的。
使用SQL,你可以执行任何功能:从一个简单的表查询,到创建表和存储过程,到设定用户权限。
在这个章节中,我们将重点讲述如何从数据库中检索、更新和报告数据,也是基于这个目的,我们应该了解的最重要的SQL 语句是:●SELCET●INSERT●UPDATE●DELETE●CREAT●DROP以上这些命令可简要描述如表1.1所示,这些命令看起来并不困难,在下面的例子中,我们将在实例中应用这些命令,了解其功能。
表1.1 重要的SQL语句1.SELECT语句语法表1.2 SELECT语句的组件下面我们对这个重要的语句语法进行示例讲解,需要说明的是这一章节中所涉及到的例子都是基于图1.1描述的表结构。
Authorsidnamephoneaddresszipsalarycontract图1.1 在test数据库中的authors表的结构●一个简单的SELECT语句:SELECT id,name,phone,zipFrom authors这个简单的查询的结果得出的内容为authors表中返回的选定列的数据。
在同样的检索情况下,如果你想缩小范围,比如只想知道住在福州鼓楼地区(邮编为350002)的作者的名字,你可以接着看后面的例子;●添加WHERE子句SELECT id,name,phone,zipFrom authorsWHERE zip = ‘350002’在检索表行时,WHERE子句可以使用多个列作为约束内容,当然在检索约束内容中还可以加入通过AND、OR以实现多个约束。
另外,在SELECT语句中我们还可以通过更改比较操作符来改变约束的条件,以达到我们需要的检索目的。
我们再看一个例子;●完整约束查询SELECT id,name,phone,zipFrom authorsWHERE zip <> ‘350002’AND phone = ‘1234567’这个例子查询结果返回的是住在福州鼓楼地区以外(邮编号不为350002)的且电话号码为1234567的作者的资料。
SQL语言的分类
SQL语言的四大组成部分DQL DML DDL DCL SQL语言共分为四大类: DQL(数据查询语言),DML(数据操纵语言),DDL(数据定义语言),DCL(数据控制语言)。
1 数据查询语言(DQL)❖查询语句的一般结构❖单表查询❖多表查询❖嵌套查询❖分组查询❖集合查询查询语句的一般结构➢SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]···➢FROM <表名或视图名>[,<表名或视图名>]···➢[WHERE <条件表达式>]➢[GROUP BY <列名1>[HAVING<条件表达式>]]➢[ORDER BY <列名2>[ASC|DESC]];单表查询:无条件、有条件、排序无条件:SELECT中的<目标表达式>可以是表中的列,也可以是表达式,包括算术表达式、字符串常数、函数等。
(字符串用单引号定界)1. 使用算术表达式(+、-、*、/)Select empno,sal*0.8 from emp;2. 使用字符常量Select empno,’Name is:’, ename from emp;3.使用函数Select empno,UPPER( ename) from emp;4. 改变列标题Select empno employeename,sal AS salary , job,dept from emp;5.使用连接字符串Select ename ||‘:’ ||‘1’ ||‘month salary=’|| sal as monthy from emp6.消除重复行➢SQL> select [ALL] ename from emp;➢SQL> select DISTINCT ename from emp;查询条件谓词比较大小=, >, <, >=, <=, < >确定围BETWEEN AND,NOT BETWEEN AND确定集合IN,NOT IN字符匹配LIKE,NOT LIKE空值IS NULL,IS NOT NULL多重条件AND,OR确定围:> select empno,ename,sal ,deptno from emp where deptno between 10 and 20;确定集合:> select empno,ename,sal,deptno from emp where deptno in (10,30);等于select empno,ename,sal,deptno from emp where deptno=10 or deptno=30;字符匹配:[NOT] LIKE ‘<匹配串>’1.<匹配串>可以是一个完整的字符串,也可以含有通配符的字符串。
sql 基本数据类型
sql 基本数据类型
SQL中的基本数据类型可以被用来定义不同类型的数据。
这些数据类型可以被用在表
格的列中来规定列中可以存放哪些类型的数据。
SQL可以支持多种基本数据类型来存储和
处理数据。
下面是SQL中的一些常见的基本数据类型及其用途和定义。
1. 数值型数据类型
SQL中常用的数值型数据类型包括整型和浮点型。
整型数据类型可以存储整数类型的
数据,而浮点型数据类型可以存储小数类型的数据。
这些数据类型可以用来存储各种计算
机上的数据。
字符型数据类型用来存储字符数据,如句子、短语等。
这些数据类型可以用来存储数
据库表格中的文字数据。
日期型数据类型可以被用来存储日期和时间数据。
这些数据类型可以用来存储各种时
间戳信息,如年、月、日、分和秒等。
5. 二进制数据类型
6. 自动编号类型
自动编号类型用来为表格的每一行自动分配一个唯一的编号。
这些数据类型可以用来
生成唯一的标识符,以便在表格中跟踪和管理记录。
SQL中的数据类型可以被用在表格的列中来指定列中可以存储的数据类型。
当在SQL
中定义表格的列时,需要指定列的名称、数据类型、长度、精度和可选的约束条件。
这些
约束条件可以包括主键、外键、唯一性约束、非空约束和默认值等。
在数据库管理系统中,对数据的处理和存储的方式受到基本数据类型的限制。
因此,了解SQL中的基本数据类型
是非常重要的。
sql学分的数据类型
sql学分的数据类型SQL学分的数据类型在数据库管理系统中,SQL(Structured Query Language)是一种用于管理和操作关系型数据库的语言。
SQL学分的数据类型是指在SQL语言中用于存储各种类型数据的类型。
在SQL中,不同的数据类型具有不同的特点和用途,正确选择合适的数据类型可以提高数据库的性能和数据的存储效率。
常见的SQL数据类型包括整型、浮点型、字符型、日期型等。
下面将分别介绍这些数据类型及其用途。
1. 整型(INT):整型是用于存储整数的数据类型。
在SQL中,整型可以根据存储需求选择不同的大小,如TINYINT、SMALLINT、INT和BIGINT。
例如,TINYINT可以存储范围在-128到127之间的整数,而BIGINT可以存储更大范围的整数。
整型适用于存储年龄、数量等整数类型的数据。
2. 浮点型(FLOAT):浮点型是用于存储小数的数据类型。
在SQL中,浮点型有单精度(FLOAT)和双精度(DOUBLE)两种类型。
浮点型适用于存储需要保留小数点的数据,如金额、比例等。
需要注意的是,浮点型存储的数据存在精度问题,可能会引起计算误差。
3. 字符型(CHAR、VARCHAR):字符型是用于存储文本数据的数据类型。
在SQL中,字符型有两种常见的类型:定长字符型(CHAR)和变长字符型(VARCHAR)。
定长字符型适用于存储长度固定的文本数据,如国家代码、性别等。
而变长字符型适用于存储长度可变的文本数据,如姓名、地址等。
根据实际需要选择合适的字符型可以节省存储空间。
4. 日期型(DATE、TIME、DATETIME):日期型是用于存储日期和时间的数据类型。
在SQL中,日期型有三种常见的类型:DATE、TIME 和DATETIME。
DATE用于存储日期,TIME用于存储时间,DATETIME 用于存储日期和时间。
日期型适用于存储与时间相关的数据,如出生日期、订单时间等。
在使用日期型时,需要注意日期格式的统一,以便正确地进行日期计算和比较。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL语言基础知识(分类汇总讲解)——李晓辉目录一.数据操作(DML) 部分 (1)二.数据定义(DDL) 部分 (3)三.查询语句(SELECT) 部分 (4)四.ORACLE里常用的数据对象(SCHEMA) (6)五.权限管理(DCL) 语句 (7)六.子查询使用方法 (7)1.DDL 中使用子查询 (7)(1)create table 语句中的子查询 (7)(2)create view 中使用子查询 (8)2.DML 中使用子查询 (8)(1)update 语句中使用子查询 (8)(2)delete 语句中使用子查询 (8)(3)insert 语句中使用子查询 (8)七.基础查询分类 (8)1.基本查询 (8)2.分组查询 (8)3.连接查询 (9)4.合并查询 (9)5.子查询 (9)八.查询语句规则 (9)九.基本的Sql编写注意事项(查询速度优化) (9)十.可能引起全表扫描的操作 (11)一.数据操作(DML) 部分1.INSERT (往数据表里插入记录的语句)INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);INSERT INTO 表名(字段名1, 字段名2, ……) SELECT 字段名1, 字段名2, ……FROM 另外的表名;字符串类型的字段值必须用单引号括起来, 例如: ’GOOD DAY’如果字段值里包含单引号’需要进行字符串转换, 我们把它替换成两个单引号''.字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.日期字段的字段值可以用当前数据库的系统时间SYSDATE, 精确到秒或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)TO_DATE()还有很多种日期格式, 可以参看ORACLE DOC.年-月-日小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SSINSERT时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包.INSERT时如果要用到从1开始自动增长的序列号, 应该先建立一个序列号CREATE SEQUENCE 序列号的名称(最好是表名+序列号标记) INCREMENT BY 1 START WITH 1MAXVALUE 99999 CYCLE NOCACHE;其中最大的值按字段的长度来定, 如果定义的自动增长的序列号NUMBER(6) , 最大值为999999INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL2.DELETE (删除数据表里记录的语句)DELETE FROM表名WHERE 条件;注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.如果确实要删除一个大表里的全部记录, 可以用TRUNCATE 命令, 它可以释放占用的数据块表空间TRUNCATE TABLE 表名;此操作不可回退.------------------------------------------------------------------3.UPDATE (修改数据表里记录的语句)UPDATE表名SET 字段名1=值1, 字段名2=值2, ……WHERE 条件;如果修改的值N没有赋值或定义时, 将把原来的记录内容清为NULL, 最好在修改前进行非空校验;值N超过定义的长度会出错, 最好在插入前进行长度校验..------------------------------------------------------------------注意事项:A. 以上SQL语句对表都加上了行级锁,确认完成后, 必须加上事物处理结束的命令COMMIT 才能正式生效,否则改变不一定写入数据库里.如果想撤回这些操作, 可以用命令ROLLBACK 复原.B. 在运行INSERT, DELETE 和UPDATE 语句前最好估算一下可能操作的记录范围,应该把它限定在较小(一万条记录) 范围内,. 否则ORACLE处理这个事物用到很大的回退段. 程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, 可以把这些SQL语句分段分次完成,其间加上COMMIT 确认事物处理.======================================二.数据定义(DDL) 部分======================================1.CREATE (创建表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)ORACLE常用的字段类型有CHAR 固定长度的字符串VARCHAR2 可变长度的字符串NUMBER(M,N) 数字型M是位数总长度, N是小数的长度DATE 日期类型创建表时要把较小的不为空的字段放在前面, 可能为空的字段放在后面创建表时可以用中文的字段名, 但最好还是用英文的字段名创建表时可以给字段加上默认值, 例如DEFAULT SYSDATE这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间创建表时可以给字段加上约束条件例如不允许重复UNIQUE, 关键字PRIMARY KEY------------------------------------------------------------------2.ALTER (改变表, 索引, 视图等)改变表的名称ALTER TABLE 表名1 TO 表名2;在表的后面增加一个字段ALTER TABLE表名ADD字段名字段名描述;修改表里字段的定义描述ALTER TABLE表名MODIFY字段名字段名描述;给表里的字段加上约束条件ALTER TABLE 表名ADD CONSTRAINT 约束名PRIMARY KEY (字段名);ALTER TABLE 表名ADD CONSTRAINT 约束名UNIQUE (字段名);把表放在或取出数据库的内存区ALTER TABLE 表名CACHE;ALTER TABLE 表名NOCACHE;------------------------------------------------------------------3.DROP (删除表, 索引, 视图, 同义词, 过程, 函数, 数据库链接等)删除表和它所有的约束条件DROP TABLE 表名CASCADE CONSTRAINTS;------------------------------------------------------------------4.TRUNCATE (清空表里的所有记录, 保留表的结构)TRUNCATE 表名;三.查询语句(SELECT) 部分SELECT字段名1, 字段名2, ……FROM 表名1, [表名2, ……] WHERE 条件;字段名可以带入函数例如: COUNT(*), MIN(字段名), MAX(字段名), AVG(字段名), DISTINCT(字段名), TO_CHAR(DATE字段名,'YYYY-MM-DD HH24:MI:SS')---------------------------------------------------------------NVL(EXPR1, EXPR2)函数解释:IF EXPR1=NULLRETURN EXPR2ELSERETURN EXPR1---------------------------------------------------------------DECODE(AA﹐V1﹐R1﹐V2﹐R2.)函数解释:IF AA=V1 THEN RETURN R1IF AA=V2 THEN RETURN R2..…ELSERETURN NULL---------------------------------------------------------------LPAD(char1,n,char2)函数解释:字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位---------------------------------------------------------------字段名之间可以进行算术运算例如: (字段名1*字段名1)/3---------------------------------------------------------------查询语句可以嵌套例如: SELECT ……FROM(SELECT ……FROM表名1, [表名2, ……] WHERE 条件) WHERE 条件2;---------------------------------------------------------------两个查询语句的结果可以做集合操作例如: 并集UNION (去掉重复记录),并集UNION ALL(不去掉重复记录),差集MINUS,交集INTERSECT----------------------------------------------------------------分组查询SELECT字段名1, 字段名2, ……FROM 表名1, [表名2, ……] GROUP BY字段名1 [HAVING 条件] ;两个以上表之间的连接查询SELECT 字段名1, 字段名2, ……FROM 表名1, [表名2, ……]WHERE 表名1.字段名= 表名2. 字段名[ AND ……] ;SELECT字段名1, 字段名2, ……FROM 表名1, [表名2, ……]WHERE 表名1.字段名= 表名2. 字段名(+)[ AND ……] ;有(+)号的字段位置自动补空值----------------------------------------------------------查询结果集的排序操作, 默认的排序是升序ASC, 降序是DESCSELECT字段名1, 字段名2, ……FROM 表名1, [表名2, ……]ORDER BY字段名1, 字段名2 DESC;----------------------------------------------------------字符串模糊比较的方法INSTR(字段名, ‘字符串’)>0字段名LIKE ‘字符串%’[‘%字符串%’]每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.四.ORACLE里常用的数据对象(SCHEMA)1.索引(INDEX)CREATE INDEX 索引名ON 表名( 字段1, [字段2, ……] );ALTER INDEX 索引名REBUILD;一个表的索引最好不要超过三个(特殊的大表除外), 最好用单字段索引, 结合SQL语句的分析执行情况,也可以建立多字段的组合索引和基于函数的索引ORACLE8.1.7字符串可以索引的最大长度为1578 单字节ORACLE8.0.6字符串可以索引的最大长度为758 单字节ORACLE DOC上说字符串最大可以建索引的长度约是:数据块的大小(db_block_size)*40%----------------------------------------------------------------2.视图(VIEW)CREATE VIEW 视图名AS SELECT …. FROM …..;ALTER VIEW视图名COMPILE;视图仅是一个SQL查询语句, 它可以把表之间复杂的关系简洁化.----------------------------------------------------------------3.同义词(SYNONMY)CREATE SYNONYM同义词名FOR 表名;CREATE SYNONYM同义词名FOR 表名@数据库链接名;----------------------------------------------------------------4.数据库链接(DATABASE LINK)CREATE DATABASE LINK数据库链接名CONNECT TO 用户名IDENTIFIED BY 密码USING ‘数据库连接字符串’;数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样数据库全局名称可以用以下命令查出SELECT * FROM GLOBAL_NAME;查询远端数据库里的表SELECT ……FROM 表名@数据库链接名;五.权限管理(DCL) 语句1.GRANT 赋于权限常用的系统权限集合有以下三个:CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)常用的数据对象权限有以下五个:ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名, DELETE ON 数据对象名, INSERT ON 数据对象名, ALTER ON 数据对象名GRANT CONNECT, RESOURCE TO 用户名;GRANT SELECT ON 表名TO 用户名;GRANT SELECT, INSERT, DELETE ON表名TO 用户名1, 用户名2;-------------------------------------------------------------------2.REVOKE 回收权限REVOKE CONNECT, RESOURCE FROM 用户名;REVOKE SELECT ON 表名FROM 用户名;REVOKE SELECT, INSERT, DELETE ON表名FROM 用户名1, 用户名2;六.子查询使用方法1.DDL 中使用子查询(1)create table 语句中的子查询--------------------------create table dept1 (deptno, dname, loc) asselectdeptno, dname, loc from dept;create table emp1 asselect * from emp;=======================================(2)create view 中使用子查询-----------------------create or replace view dept_20 asselect * from emp1 where deptno = 20 order by empno;2.DML 中使用子查询(1)update 语句中使用子查询update emp1 set (sal,comm) =( selectsal, comm from emp1 where ename = 'WARD' )where job = ( select job from emp1 where ename= 'WARD' )(2)delete 语句中使用子查询delete from emp1wheredeptno = (select deptno from dept1 where dname = 'ACCOUNTING' ) (3)insert 语句中使用子查询insert into emp1select * from empwheredeptno = (select deptno from where dname = 'ACCOUNTING')七.基础查询分类1.基本查询所有列、指定列、where子句、order by子句2.分组查询组处理函数、group by子句、having子句3.连接查询相等连接、不等连接、自我连接4.合并查询UNION,UNION ALL,INTERSECT,MINUS-----------------------------------------------------5.子查询单行、多行、相关、标量、多列、DDL中、DML中八.查询语句规则1.order by 子句必须放在最后。