标签:ace efi 修改查询 man tables trunc 基础sql cal 模糊匹配
SQL(Structured Query Language) 语言是目前主流的关系型数据库上执行数据操作、数据检索以及数据库维护所需要的标准语言,是用户与数据库之间进行交流的接口,许多关系型数据库管理系统都支持SQL语言,但不同的数据库管理系统之间的SQL语言不能完全通用,Oracle数据库使用的SQL语言是Procedural Language/SQL(简称PL/SQL)。
通常将SQL语言分为以下4类。
(1)数据定义语言(Data Definition Language, DDL)
用于定义数据库对象,对数据库、数据库中的表、视图等数据库对象进行建立和删除,DDL包括CREATE、ALTER、DROP等语句。
(2)数据操纵语言(Data Manipulation Language, DML)
用于对数据库中的数据进行插入、修改、删除等操作,DML包括INSERT、UPDATE、DELETE等语句。
(3)数据查询语言(Data Query Language, DQL)
用于对数据库中的数据进行查询操作,例如用 SELECT语句进行查询操作。
(4)数据控制语言(Data Control Language, DCL)
用于控制用户对数据库的操作权限,DCL包括GRANT、REVOKE等语句。
SQL语言具有高度非过程化、应用于数据库的语言、面向集合的操作方式、既是自含式语言又是嵌入式语言、综合统一、语言简洁和易学易用等特点。
(1)高度非过程化
SQL语言是非过程化语言,进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无需说明具体处理过程和存取路径,处理过程和存取路径由系统自动完成。
(2)应用于数据库的语言
SQL语言本身不能独立于数据库而存在,它是应用于数据库和表的语言,使用SQL语言,应熟悉数据库中的表结构和样本数据。
(3)面向集合的操作方式
SQL语言采用集合操作方式,不仅操作对象、查找结果可以是记录的集合,而且一次插入、删除、更新操作的对象也可以是记录的集合。
(4)既是自含式语言、又是嵌入式语言
SQL语言作为自含式语言,它能够用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C,C++,Java)程序中,供程序员设计程序时使用。在两种不同的使用方式下,SQL语言的语法结构基本上是一致的,提供了极大的灵活性与方便性。
(5)综合统一
SQL语言集数据查询(Data Query)、数据操纵(Data Manipulation)、数据定义(Data Definition)和数据控制(Data Control)功能于一体。
略
语法:
CREATE TABLESPACE <表空间名>
DATAFILE '<文件路径>/<文件名>' [SIZE <文件大小> [ K∣M ]] [ REUSE ]
[ AUTOEXTEND [ OFF∣ON [ NEXT <磁盘空间大小> [ K∣M ]]
[ MAXSIZE [ UMLIMITED∣<最大磁盘空间大小> [ K∣M ] ] ] ]
[ MINMUM EXTENT <数字值>[ K | M ] ]
[ DEFAULT <存储参数>]
[ ONLINE∣OFFLINE ]
[ LOGGING∣NOLOGGING ]
[ PERMANENT∣TEMPORARY ]
[ EXTENT MANAGEMENT [ DICTIONARY∣LOCAL [ AUTOALLOCATE∣UNIFORM [ SIZE <数字值>[ K∣M ] ] ] ] ]
创建临时表空间
CREATE TEMPORARY TABLESPACE
...
用作数据库运算过程中的数据存储,或临时表数据存储等。用完之后系统会自动清理。若不创建则使用系统默认的临时表空间TEMP。
示例:
创建表空间newspace,允许自动扩展数据文件。
CREATE TABLESPACE newspace
LOGGING
DATAFILE 'D:\app\DELL\oradata\stsys\ newspace01.DBF’ SIZE 40M
REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 300M
EXTENT MANAGEMENT LOCAL;
使用ALTER TABLESPACE命令可以修改表空间或它的一个或多个数据文件、或为数据库中每一个数据文件指定各自的存储扩展参数值,其语法格式如下。
ALTER TABLESPACE <表空间名>
[ ADD DATAFILE∣TEMPFILE '<路径>/<文件名>' [ SIZE <文件大小> [ K∣M ] ]
[ REUSE ]
[ AUTOEXTEND [ OFF∣ON [ NEXT <磁盘空间大小> [ K∣M ] ] ] ]
[MAXSIZE [ UNLIMITED∣<最大磁盘空间大小> [ K∣M ] ] ]
[ RENAME DATAFILE '<路径>/<文件名>',…n TO '<路径>/<新文件名>'',…n ]
[ DEFAULT STORAGE <存储参数>]
[ ONLINE∣OFFLINE [ NORMAL∣TEMPORARY∣IMMEDIATE ] ]
[ LOGGING∣NOLOGGING ]
[ READ ONLY∣WRITE ]
[ PERMANENT ]
[ TEMPORARY ]
示例:
通过ALTER TABLESPACE命令把一个新的数据文件添加到newspace表空间,并指定了AUTOEXTEND ON和 MAXSIZE 300M。
ALTER TABLESPACE newspace
ADD DATAFILE 'D:\app\DELL\oradata\stsys\DATA02.DBF' SIZE 40M
REUSE AUTOEXTEND ON NEXT 50M MAXSIZE 300M;
语法:
DROP TABLESPACE <表空间名>
[ INCLUDING CONTENTS [ {AND | KEEP} DATAFILES ]
[ CASCADE CONSTRAINTS ]
] ;
示例:
删除表空间newspace和及其对应的数据文件。
DROP TABLESPACE newspace
INCLUDING CONTENTS AND DATAFILES;
语法:
CREATE TABLE [<用户方案名>.] <表名>
(
<列名1> <数据类型> [DEFAULT <默认值>] [<列约束>]
<列名2> <数据类型> [DEFAULT <默认值>] [<列约束>]
[,…n]
<表约束>[,…n]
)
[PCTFREE <数字值>]
[PCTUSED <数字值> ]
[INITRANS <数字值>]
[MAXTRANS <最大并发事务数>]
[TABLESPACE <表空间名>]
[STORGE <参数>]
[AS <子查询>]
示例:
CREATE TABLE student
(
sno char(6) NOT NULL PRIMARY KEY,
sname char(8) NOT NULL,
ssex char(2) NOT NULL,
sbirthday date NOT NULL,
speciality char(12) NULL,
sclass char(6) NULL,
tc number NULL
);
表中添加注释:
comment on table student is '学生信息';
comment on column student.sno is '学号';
comment on column student.sname is '姓名';
comment on column student.ssex is '性别';
comment on column student.sbirthday is '出生日期';
comment on column student.speciality is '专业';
comment on column student.sclass is '班号';
comment on column student.tc is '总学分';
语法:
ALTER TABLE [<用户方案名>.] <表名>
[ ADD(<新列名> <数据类型> [DEFAULT <默认值>][列约束],…n) ]/*增加新列*/
[ MODIFY([ <列名> [<数据类型>] [DEFAULT <默认值>][列约束],…n) ] /*修改已有列的属性*/
[ STORAGE <存储参数> ] /*修改存储特征*/
[<DROP子句> ] /*删除列或约束条件*/
其中,
语法:
DROP
{
COLUMN <列名>
∣PRIMARY [KEY]
∣UNIQUE (<列名>,…n)
∣CONSTRAINT <约束名>
∣[ CASCADE ]
}
示例:
使用ALTER TABLE语句修改student表
(1)在student表中增加一列remarks(备注)
ALTER TABLE student
ADD remarks varchar(100);
(2)在student表中删除列remarks。
ALTER TABLE student
DROP COLUMN remarks;
语法:
DROP TABLE table_name
示例:
删除student表
DROP TABLE student;
语法:
INSERT INTO <表名>[(<列名1>,<列名2>,…n)]
VALUES(<列值1>,<列值2>,…n)
示例:
向employee表插入一行:1001, 刘松涛, 男, 1972-10-07, 公司集体宿舍。
INSERT INTO student
VALUES('121001','刘鹏翔','男',TO_DATE('19920825','YYYYMMDD'),'计算机','201205',52);
(1)DELETE
语法:
DELETE FROM <表名>
[WHERE <条件表达式>]
示例:
在employee表中,删除员工号为1021的行。
DELETE FROM employee
WHERE eid='1021';
(2)TRANCATE TABLE语句
当需要删除一个表里的全部记录,使用TRUNCATE TABLE语句,它可以释放表的存储空间,但此操作不可回退,其语法格式如下:
TRUNCATE TABLE <表名>
语法:
UPDATE <表名>
SET <列名>={<新值>|<表达式>} [,…n]
[WHERE <条件表达式>]
示例:
(1)在employee表中将刘松涛的员工号改为1021,员工地址改为东大街34号。
UPDATE employee
SET eid='1021', address='东大街34号'
WHERE ename='刘松涛';
(2)在student表中,将所有学生的学分增加2分。
UPDATE student
SET tc=tc+2;
语法:
SELECT <列> /*SELECT子句,指定列*/
FROM <表或视图> /*FROM子句,指定表或视图*/
[ WHERE <条件表达式> ] /*WHERE子句,指定行*/
[ GROUP BY <分组表达式> ] /*GROUP BY子句,指定分组表达式*/
[ HAVING <分组条件表达式> ] /*HAVING子句,指定分组统计条件*/
[ ORDER BY <排序表达式> [ ASC | DESC ]] /*ORDER子句,指定排序表达式和顺序*/
投影查询用于选择列
语法:
SELECT [ ALL | DISTINCT ] <列名列表>
其中,<列名列表>指出了查询结果的形式,其格式为:
{ * /*选择当前表或视图的所有列*/
|<表名>|<视图>|.* /*选择指定的表或视图的所有列*/
|{|<列名>|<表达式>}
[[ AS ] <列别名>] /*选择指定的列,为列指定别名*/
| <列标题> = <列名表达式> /*选择指定的列并更改列标题,为列指定别名*/
}[,… n ]
(1)投影指定的列
使用SELECT语句可选择表中的一个列或多个列,如果是多个列,各列名中间要用逗号分开。
语法:
SELECT <列名1> [ , <列名2> [,…n] ]
FROM <表名>
[WHERE <条件表达式>]
示例:
查询student表中所有学生的学号、姓名和班号。
SELECT sno, sname, sclass
FROM student;
(2)投影全部列
示例:
查询student表中所有列
SELECT *
FROM student;
(3)修改查询列标题
为了改变查询结果中显示的列标题,可以在列名后使用AS <列别名>。
示例:
查询student表中所有学生的学生的sno、sname、speciality,并将结果中各列的标题分别修改为学号, 姓名, 专业。
SELECT sno AS 学号, sname AS 姓名, speciality AS 专业
FROM student;
(4)计算列值
介绍:
使用SELECT子句对列进行查询时,可以对数字类型的列进行计算,可以使用加(+)、减(-)、乘(*)、除(/)等算术运送符
语法:
SELECT <表达式> [ , <表达式> ]
示例:
列出goods表的商品号、商品名称和商品总值
SELECT gid AS 商品号, gname AS 商品名称, price*stockqt AS 商品总值
语法:
SELECT DISTINCT <列名> [ , <列名>…]
示例:
查询student表中sclass列,消除结果中的重复行
select distinct sclass from student;
语法:
WHERE <条件表达式>
其中,<条件表达式>为查询条件,格式为:
<条件表达式>::=
{ [ NOT ] <判定运算> | (<条件表达式> ) }
[ { AND | OR } [ NOT ] { <判定运算> | (<条件表达式>) } ]
[ ,…n ]
说明:
(1)表达式比较
语法:
<表达式1> { = | < | <= | > | >= | <> | != } <表达式2>
示例:
查询student表中班号为201205或性别为女的学生
SELECT *
FROM student
WHERE sclass='201205' or ssex='女';
查询goods表中价格为3000元以上的商品
SELECT *
FROM goods
WHERE price>3000;
(2)指定范围
介绍:
BETWEEN、NOT BETWEEN、IN是用于指定范围的三个关键字,用于查找字段值在(或不在)指定范围的行。
当要查询的条件是某个值的范围时,可以使用BETWEEN关键字。BETWEEN关键字指出查询范围。
语法:
<表达式> [ NOT ] BETWEEN <表达式1> AND <表达式2>
示例:
查询score表成绩为86、92、95的记录
SELECT *
FROM score
WHERE grade in (86,92,95);
示例:
查询goods表中价格在1500元到4000元之间的商品。
SELECT *
FROM goods
WHERE price BETWEEN 1500 AND 4000;
示例:
查询student表中不在1992年出生的学生情况。
SELECT *
FROM student
WHERE sbirthday NOT BETWEEN TO_DATE('19920101','YYYYMMDD') AND
TO_DATE('19921231','YYYYMMDD');
(3)模糊匹配
介绍:
模式匹配使用LIKE谓词,LIKE谓词用于指出一个字符串是否与指定的字符串相匹配,其运算对象可以是char、varchar2和date类型的数据,返回逻辑值TRUE或FALSE。
语法:
<字符串表达式1> [ NOT ] LIKE <字符串表达式2> [ ESCAPE '<转义字符>' ]
在使用LIKE谓词时,<字符串表达式2>可以含有通配符,通配符有以下两种:
%:代表0或多个字符。
_: 代表一个字符。
示例:
查询student表中姓林的学生情况
SELECT *
FROM student
WHERE sname LIKE '林%';
示例:
查询goods表中商品名称含有Inspiron的商品
SELECT *
FROM goods
WHERE gname LIKE '%Inspiron%';
示例:
查询student表中姓名第二字为“国”的学生情况
SELECT *
FROM student
WHERE sname LIKE '_林%';
(4)NULL值判断
语法:
<表达式> IS [ NOT ] NULL
示例:
查询已选课但未参加考试的学生情况
SELECT *
FROM score
WHERE grade IS null;
标签:ace efi 修改查询 man tables trunc 基础sql cal 模糊匹配
原文地址:https://www.cnblogs.com/gj-blog/p/10667096.html