SQL基础概念,数据库5

1,MySQL:(structured query
 language)用于访问和拍卖数据库的正儿8经语言     

SQL基础概念-指令,sql基础概念

1,MySQL:(structured query
 language)用于访问和拍卖数据库的正统语言      二,什么是 SQL?
     SQL 指结构化查询语言      SQL
使大家有力量访问数据库(数据库是安分守己数据结构来组织,存取和保管数据的饭店)
     SQL 是一种 ANSI 的行业内部Computer语言 三,SQL 能做怎么着?      SQL
面向数据库实行查询      SQL 可从数据库取回数据      SQL
可在数据库中插入新的记录      SQL 可更新数据库中的数据      SQL
可从数据库删除记录      SQL 可创设新数据库      SQL 可在数据库中开立异表
     SQL 可在数据库中创建存款和储蓄进度      SQL 可在数据库中开创视图      SQL
可以设置表、存款和储蓄进度和视图的权力  
4,在极端上常用的指令(基于桌面包车型的士文件管理)      touch +
文件名.文件类型    //创立三个文件      open + 文件名                
//展开 对应的文本恐怕是文本夹       ls                                  
//列出全部的文件      clear                              //清屏记录
     mkdir + 目录的名字           //创制目录(文件)      cp + 参数 +
源文件 + 目的文件  + 拷贝  //移动文件      rm+ 参数 +文件             
//删除文件      cd ../                            //再次来到上拔尖目录
     ping                              //给当下的网络主机发送2个回应请求      mail                              //阅读和发送电子邮件
     uname                          //呈现操作系统的关于消息      who  
                           //列出脚下报到全体的用户      whoami        
                //突显当前正在操作的用户名      df                      
          //显示文件的系统的总空间和可用空间           w                
                //显示当前的那些调控台      history                    
     //列出以来实施过的 几条命令及数码  

一, MySQL
:(structured query language)用于访问和管理数据库的正儿八经语言 2 ,什么是
SQL? SQL 指结构化查询语言SQ…

SQL语言管理

本章,我们将会主要钻探SQL语言基础,学习用SQL举办数据库的数目增加、删除和修改等操作。别的请留心本章的SQL语法基于Oracle数据库的PL/SQL语法。

2,什么是 SQL?

表的多寡操作

DML 能够在下列原则下推行:

  • 向表中插入数据
  • 修改现成数量
  • 去除现成数量

     SQL 指结构化查询语言

新增

使用 INSERT997755.com澳门葡京, 语句向表中插入数据。

拍卖语法

INSERT INTO table [(column [, column...])]
VALUES      (value [, value...]);
--使用这种语法一次只能向表中插入一条数据。
  • 为每一列增添1个新值。
  • 按列的默许顺种类出各种列的值。
  • 在 INSERT 子句中随机列出列名和他们的值。
  • 字符和日期型数据应涵盖在单引号中。

     SQL
使大家有力量访问数据库(数据库是根据数据结构来社团,存取和管制数据的库房)

插入空值

隐式格局: 在列名表中省略该列的值。

INSERT INTO HR.DEPARTMENTS
  (DEPARTMENT_ID, DEPARTMENT_NAME)
VALUES
  (330, 'Purchasing');
--1 row created.

SQL基础概念,数据库5。展现格局: 在VALUES 子句中钦定空值。

INSERT INTO HR.DEPARTMENTS VALUES (400, 'Finance', NULL, NULL);
--1 row created.

     SQL 是1种 ANSI 的标准Computer语言

布置系统时间

SYSDATE 记录当前系统的日期和时间。

INSERT INTO HR.EMPLOYEES
  (EMPLOYEE_ID,
   FIRST_NAME,
   LAST_NAME,
   EMAIL,
   PHONE_NUMBER,
   HIRE_DATE,
   JOB_ID,
   SALARY,
   COMMISSION_PCT,
   MANAGER_ID,
   DEPARTMENT_ID)
VALUES
  (113,
   'Louis',
   'Popp',
   'LPOPP',
   '515.124.4567',
   SYSDATE,
   'AC_ACCOUNT',
   6900,
   NULL,
   205,
   100);
--1 row created.

INSERT INTO HR.EMPLOYEES
VALUES
  (114,
   'Den',
   'Raphealy',
   'DRAPHEAL',
   '515.127.4561',
   TO_DATE('FEB 3, 1999', 'MON DD, YYYY'),
   'AC_ACCOUNT',
   11000,
   NULL,
   100,
   30);
--1 row created.

3,SQL 能做哪些?

插入其余表的数额

INSERT INTO SALES_REPS
  (ID, NAME, SALARY, COMMISSION_PCT)
  SELECT EMPLOYEE_ID, LAST_NAME, SALARY, COMMISSION_PCT
    FROM EMPLOYEES
   WHERE JOB_ID LIKE '%REP%';
--4 rows created.

     SQL 面向数据库实行查询

更新

运用 UPDATE 语句更新数据。

语法示例

UPDATE      table
SET     column = value [, column = value, ...]
[WHERE      condition];
--可以一次更新多条数据

使用 WHERE 子句钦定需求更新的多寡。

UPDATE HR.EMPLOYEES 
SET DEPARTMENT_ID = 70 
WHERE EMPLOYEE_ID = 113;
--1 row updated.
--如果省略WHERE子句,则表中的所有数据都将被更新。

在UPDATE语句中使用子查询

UPDATE HR.EMPLOYEES
   SET JOB_ID =
       (SELECT JOB_ID FROM HR.EMPLOYEES WHERE EMPLOYEE_ID = 205),
       SALARY =
       (SELECT SALARY FROM HR.EMPLOYEES WHERE EMPLOYEE_ID = 205)
 WHERE EMPLOYEE_ID = 114;
--1 row updated.
--更新 114号员工的工作和工资使其与 205号员工相同

UPDATE COPY_EMP
   SET DEPARTMENT_ID =
       (SELECT DEPARTMENT_ID FROM HR.EMPLOYEES WHERE EMPLOYEE_ID = 100)
 WHERE JOB_ID = (SELECT JOB_ID FROM HR.EMPLOYEES WHERE EMPLOYEE_ID = 200);
--1 row updated.
--在 UPDATE 中使用子查询,使更新基于另一个表中的数据。

     SQL 可从数据库取回数据

删除

选拔 DELETE 语句从表中删除数据。

语法示例

DELETE [FROM]     table
[WHERE    condition];

利用WHERE 子句钦命删除的笔录。

 DELETE FROM HR.departments
 WHERE  department_name = 'Finance';
--1 row deleted.
--如果省略WHERE子句,则表中的全部数据将被删除。

在 DELETE 中使用子查询

DELETE FROM HR.employees
WHERE  department_id =
                       (SELECT department_id
                        FROM   HR.departments
                        WHERE  department_name LIKE '%Public%');
--1 row deleted.
--在 DELETE 中使用子查询,使删除基于另一个表中的数据。 

     SQL 可在数据库中插入新的笔录

高档函数管理

     SQL 可更新数据库中的数据

NVL & NVL2

NVL

将空值调换到3个已知的值:可以选取的数据类型有日期、字符、数字。

函数的形似情势:

  • NVL(commission_pct, 0)
  • NVL(hire_date, SYSDATE)
  • NVL(job_id, 'No Job Yet')

选择示例

SELECT last_name, salary, NVL(commission_pct, 0),
   (salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL
FROM hr.employees;
--NVL(commission_pct, 0):若commission_pct是NULL,那么取0作为它的值

NVL2

SELECT last_name,  salary, commission_pct,
       NVL2(commission_pct, 'SAL+COMM', 'SAL') income
FROM   hr.employees WHERE department_id IN (50, 80);
--NVL2(commission_pct, 'SAL+COMM', 'SAL'):若commission_pct不是NULL,就取SAL+COMM,否则取SAL

     SQL 可从数据库删除记录

COALESCE

COALESCE 与 NVL 比较的长处在于 COALESCE 能够而且管理交替的三个值。

SELECT   last_name,
         COALESCE(commission_pct, salary, 10) comm
FROM     employees
ORDER BY commission_pct;
-- COALESCE(commission_pct, salary, 10)是返回第一个非空的值,若commission_pct为NULL就返回salary,若salary也为NULL,就返回10

在 SQL 语句中选用IF-THEN-ELSE 逻辑。

行使二种办法:CASE 表达式DECODE 函数

     SQL 可创制新数据库

DECODE

应用语法

DECODE(col|expression, search1, result1 
                   [, search2, result2,...,]
                   [, default])

接纳示例

SELECT last_name, job_id, salary,
       DECODE(job_id, 'IT_PROG',  1.10*salary,
                      'ST_CLERK', 1.15*salary,
                      'SA_REP',   1.20*salary,
              salary)
       REVISED_SALARY
FROM   employees;

     SQL 可在数据库中创建新表

CASE表达式

选拔语法

CASE expr WHEN comparison_expr1 THEN return_expr1
         [WHEN comparison_expr2 THEN return_expr2
          WHEN comparison_exprn THEN return_exprn
          ELSE else_expr]
END

使用示例

SELECT last_name, job_id, salary,
       CASE job_id WHEN 'IT_PROG'  THEN  1.10*salary
                   WHEN 'ST_CLERK' THEN  1.15*salary
                   WHEN 'SA_REP'   THEN  1.20*salary
       ELSE      salary END     "REVISED_SALARY"
FROM   hr.employees;
--根据JOB_ID的值,对工资做相应的处理

     SQL 可在数据库中开创存款和储蓄进度

事务

  • 以率先个 DML 语句的实践作为开首
  • 以上边包车型客车内部之壹作为落成:
    • COMMIT 或 ROLLBACK 语句
    • DDL 或 DCL 语句(自动提交)
    • 用户会话符合规律停止系统格外终了

使用COMMITROLLBACK言辞,我们得以:

  1. 确定保障数据完整性。
  2. 数据变动被交付在此之前预览。
  3. 将逻辑上有关的操作分组。

     SQL 可在数据库中开创视图

视图

  • 调节数据访问
  • 简化查询
  • 数量独立性
  • 制止重复访问同1的数据

     SQL 能够设置表、存款和储蓄过程和视图的权限

视图创造

语法示例

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
  [(alias[, alias]...)]
 AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];

始建视图

CREATE VIEW     empvu80
 AS SELECT  employee_id, last_name, salary
    FROM    hr.employees
    WHERE   department_id = 80;
--View created.

开创视图时在子查询中给列定义别称

CREATE VIEW     salvu50
 AS SELECT  employee_id ID_NUMBER, last_name NAME,
            salary*12 ANN_SALARY
    FROM    hr.employees
    WHERE   department_id = 50;
--View created.
--在选择视图中的列时应使用别名

 

视图修改

运用CREATE ORAV4 REPLACE VIEW 子句修改视图

CREATE OR REPLACE VIEW empvu80
  (id_number, name, sal, department_id)
AS SELECT  employee_id, first_name || ' ' || last_name, 
           salary, department_id
   FROM    hr.employees
   WHERE   department_id = 80;
--View created.
--CREATE VIEW 子句中各列的别名应和子查询中各列相对应

四,在顶峰上常用的指令(基于桌面包车型客车文书管理)

除去视图

删除视图只是去除视图的定义,并不会删除基表的数目

除去语法

DROP VIEW view;
--删除视图view

     touch + 文件名.文件类型    //创制3个文本

积累进度

存款和储蓄进程,Procedure,是一组为了达成一定效用的SQL语句群集,经编写翻译后存款和储蓄在数据库中,用户通过点名存款和储蓄进程的名目并交付参数来推行。

仓库储存进度中得以涵盖逻辑调节语句和多少操纵语句,它还行参数、输出参数、重回单个或五个结实集以及重临值。

出于存款和储蓄进程在创登时即在数据库服务器上进行了编写翻译并蕴藏在数据库中,所以存款和储蓄进程运维要比单个的SQL语句块要快。同时由于在调用时只需用提供仓库储存进程名和必备的参数音信,所以在早晚水准上也得以减小互连网流量、轻松互连网担当。

骨干语法

CREATE OR REPLACE PROCEDURE 存储过程名字
(
    参数1 IN NUMBER,
    参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
[执行语句]
END 

选拔示例

开创1个表Student,并插入一百万条记下,在奇数的时候插入汤姆记录,偶数的时候插入Lucy记录。使用存款和储蓄过程来促成。

Create Table student (
s_id Number(8),
s_name Varchar2(20),
s_sex Char(2)
);
--创建表student

Create Or Replace Procedure p_insert_data
AS
Begin
  For i In 1..1000000 Loop
  If i Mod 2 = 1 Then
    Insert into student Values(i, 'Tom', '男');
  Else
    Insert into student Values(i, 'Lucy', '女');
  End If;

  End Loop;
  Commit;
  dbms_output.put_line('插入数据完成!');
End;
--创建存储过程

调用存款和储蓄进度

CALL p_insert_data();

     open + 文件名                 //张开 对应的文书也许是文本夹 

     ls                                   //列出具备的文书

     clear                              //清屏记录

     mkdir + 目录的名字           //创立目录(文件)

     cp + 参数 + 源文件 + 目的文件  + 拷贝  //移动文件

     rm+ 参数 +文件              //删除文件

     cd ../                            //再次来到上超级目录

     ping                              //给当下的网络主机发送1个回应请求

     mail                              //阅读和出殡和埋葬电子邮件

     uname                          //突显操作系统的关于新闻

     who                              //列出脚下登入全体的用户

     whoami                         //展现当前正值操作的用户名

     df                                
//展现文件的系统的总空间和可用空间     

     w                                 //展现当前的那些调节台

     history                          //列出多年来施行过的 几条命令及数码

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website