Oracle視圖詳解

来源:https://www.cnblogs.com/cxdanger/archive/2018/11/06/9914307.html
-Advertisement-
Play Games

Oracle視圖詳解 一. 視圖的定義 視圖(view),也稱虛表, 不占用物理空間,這個也是相對概念,因為視圖本身的定義語句還是要存儲在數據字典里的。視圖只有邏輯定義。每次使用的時候,只是重新執行SQL。 視圖是從一個或多個實際表中獲得的,這些表的數據存放在資料庫中。那些用於產生視圖的表叫做該視圖 ...


Oracle視圖詳解

 

一. 視圖的定義

視圖(view),也稱虛表, 不占用物理空間,這個也是相對概念,因為視圖本身的定義語句還是要存儲在數據字典里的。視圖只有邏輯定義。每次使用的時候,只是重新執行SQL。

  視圖是從一個或多個實際表中獲得的,這些表的數據存放在資料庫中。那些用於產生視圖的表叫做該視圖的基表。一個視圖也可以從另一個視圖中產生。

  視圖的定義存在資料庫中,與此定義相關的數據並沒有再存一份於資料庫中。通過視圖看到的數據存放在基表中。

  視圖看上去非常象資料庫的物理表,對它的操作同任何其它的表一樣。當通過視圖修改數據時,實際上是在改變基表中的數據;相反地,基表數據的改變也會自動反映在由基表產生的視圖中。由於邏輯上的原因,有些Oracle視圖可以修改對應的基表,有些則不能(僅僅能查詢)。

  還有一種視圖:物化視圖(MATERIALIZED VIEW ),也稱實體化視圖,快照 (8i 以前的說法) ,它是含有數據的,占用存儲空間。

tips: 查詢視圖沒有什麼限制, 插入/更新/刪除視圖的操作會受到一定的限制; 所有針對視圖的操作都會影響到視圖的基表; 為了防止用戶通過視圖間接修改基表的數據, 可以將視圖創建為只讀視圖(帶上with read only選項)

 

二. 視圖的作用

 

1)提供各種數據表現形式, 可以使用各種不同的方式將基表的數據展現在用戶面前, 以便符合用戶的使用習慣(主要手段: 使用別名);

2)隱藏數據的邏輯複雜性並簡化查詢語句, 多表查詢語句一般是比較複雜的, 而且用戶需要瞭解表之間的關係, 否則容易寫錯; 如果基於這樣的查詢語句創建一個視圖, 用戶就可以直接對這個視圖進行"簡單查詢"而獲得結果. 這樣就隱藏了數據的複雜性並簡化了查詢語句.這也是oracle提供各種"數據字典視圖"的原因之一,all_constraints就是一個含有2個子查詢並連接了9個表的視圖(在catalog.sql中定義);

3)執行某些必須使用視圖的查詢. 某些查詢必須藉助視圖的幫助才能完成. 比如, 有些查詢需要連接一個分組統計後的表和另一表, 這時就可以先基於分組統計的結果創建一個視圖, 然後在查詢中連接這個視圖和另一個表就可以了;

4)提供某些安全性保證. 視圖提供了一種可以控制的方式, 即可以讓不同的用戶看見不同的列, 而不允許訪問那些敏感的列, 這樣就可以保證敏感數據不被用戶看見;

5)簡化用戶許可權的管理. 可以將視圖的許可權授予用戶, 而不必將基表中某些列的許可權授予用戶, 這樣就簡化了用戶許可權的定義。

 

三 創建視圖

1許可權: 要在當前方案中創建視圖, 用戶必須具有create view系統許可權; 要在其他方案中創建視圖, 用戶必須具有create any view系統許可權. 視圖的功能取決於視圖擁有者的許可權.

語法: create [ or replace ] [ force ] view [schema.]view_name
                      [ (column1,column2,...) ]
                      as 
                      select ...
                      [ with check option ]                      [ constraint constraint_name ]
                      [ with read only ];

tips:
 1 or replace: 如果存在同名的視圖, 則使用新視圖"替代"已有的視圖
 2 force: "強制"創建視圖,不考慮基表是否存在,也不考慮是否具有使用基表的許可權
 3 column1,column2,...視圖的列名, 列名的個數必須與select查詢中列的個數相同; 如果select查詢包含函數或表達式, 則必須為其定義列名.此時, 既可以用column1, column2指定列名, 也可以在select查詢中指定列名.
 4 with check option: 指定對視圖執行的dml操作必須滿足“視圖子查詢”的條件即,對通過視圖進行的增刪改操作進行"檢查",要求增刪改操作的數據, 必須是select查詢所能查詢到的數據,否則不允許操作並返回錯誤提示. 預設情況下, 在增刪改之前"並不會檢查"這些行是否能被select查詢檢索到. 
 5 with read only創建的視圖只能用於查詢數據, 而不能用於更改數據.

3.1 創建簡單視圖

簡單視圖定義:是指基於單個表建立的,不包含任何函數、表達式和分組數據的視圖。

SQL> conn /as sysdba

Connected.

SQL> grant create view to scott;

SQL> conn scott/tiger

Connected.

SQL> create view vw_emp as select empno,ename,job,hiredate,deptno from emp;

SQL> desc vw_emp

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 EMPNO                                     NOT NULL NUMBER(4)

 ENAME                                              VARCHAR2(10)

 JOB                                                VARCHAR2(9)

 HIREDATE                                           DATE

 DEPTNO                                             NUMBER(2)

 

SQL> select * from vw_emp where deptno=10;

 

     EMPNO ENAME      JOB       HIREDATE      DEPTNO

----------  ----------     ---------    ---------      

      7782 CLARK      MANAGER    09-JUN-81          10

      7839 KING       PRESIDENT   17-NOV-81         10

      7934 MILLER     CLERK       23-JAN-82          10

 

對簡單視圖進行DML操作

SQL> insert into vw_emp values(1,'a','aa','05-JUN-88',10);

SQL> update vw_emp set ename='cc' where ename='KING';

SQL> delete vw_emp where ename='cc';

SQL> select * from vw_emp where deptno=10;

 

     EMPNO ENAME      JOB       HIREDATE      DEPTNO

---------- ---------- --------- --------- ----------

      7782 CLARK      MANAGER   09-JUN-81         10

      7934 MILLER     CLERK     23-JAN-82         10

         1 a          aa        05-JUN-88         10

 

基表也發生了相應的更改

SQL> select empno,ename,job,hiredate,deptno from emp where deptno=10;

 

     EMPNO ENAME      JOB       HIREDATE      DEPTNO

---------- ---------- --------- --------- ----------

      7782 CLARK      MANAGER   09-JUN-81         10

      7934 MILLER     CLERK     23-JAN-82         10

         1 a          aa        05-JUN-88         10

 

SQL> select object_name,object_type from user_objects;

OBJECT_NAME                    OBJECT_TYPE

------------------------------ -------------------

VW_EMP                         VIEW

SALGRADE                       TABLE

BONUS                          TABLE

PK_EMP                         INDEX

EMP                            TABLE

DEPT                           TABLE

PK_DEPT                        INDEX

 

7 rows selected.

 

創建只讀視圖

SQL> create view vw_emp_readonly as select empno,ename,job,hiredate,deptno from emp with read only;

 

SQL> select * from vw_emp_readonly where deptno=10;

 

     EMPNO ENAME      JOB       HIREDATE      DEPTNO

---------- ---------- --------- --------- ----------

      7782 CLARK      MANAGER   09-JUN-81         10

      7934 MILLER     CLERK     23-JAN-82         10

         1 a          aa        05-JUN-88         10

 

只能查詢,無法進行更改

SQL> delete vw_emp_readonly where empno=1;

delete vw_emp_readonly where empno=1

       *

ERROR at line 1:

ORA-42399: cannot perform a DML operation on a read-only view

 

更新基表,只讀視圖也發生了相應的更改

SQL> update emp set empno=2 where ename='a';

SQL> select * from vw_emp_readonly where deptno=10;

 

     EMPNO ENAME      JOB       HIREDATE      DEPTNO

---------- ---------- --------- --------- ----------

      7782 CLARK      MANAGER   09-JUN-81         10

      7934 MILLER     CLERK     23-JAN-82         10

         2 a          aa        05-JUN-88         10

 

創建檢查約束視圖with check option

Sql>create view vw_emp_check as select empno,ename,job,hiredate,deptno from emp where deptno=10 with check option;

 

SQL> insert into vw_emp_check values('2','c','cc','02-JAN-55',10);

 

SQL> insert into vw_emp_check values('3','d','dd','02-JAN-65',20);

insert into vw_emp_check values('3','d','dd','02-JAN-65',20)

            *

ERROR at line 1:

ORA-01402: view WITH CHECK OPTION where-clause violation

創建檢查視圖:對通過視圖進行的增刪改操作進行檢查,要求增刪改操作的數據必須是select查詢所能查詢到的數據

20號部門不在查詢範圍內,違反檢查約束,所以無法插入;

 

SQL> delete vw_emp_check where empno=2;

 

1 row deleted.

--------所刪除的數據在查詢範圍內,不違反檢查約束 

 

 

3.2 連接視圖

 

3.2.1 連接視圖定義:是指基於多個表所創建的視圖,即,定義視圖的查詢是一個連接查詢。 主要目的是為了簡化連接查詢;

 

3.2.2 創建連接視圖

示例1: 查詢部門編號為10和30的部門及雇員信息

SQL> create view vw_dept_emp

  2  as select a.deptno,a.dname,a.loc,b.empno,b.ename,b.sal from dept a,emp b where a.deptno=b.deptno and a.deptno in(10,30);

 

View created.

 

SQL> select * from vw_dept_emp;

 

    DEPTNO DNAME          LOC             EMPNO ENAME             SAL

---------- -------------- ------------- ---------- ---------- ----------

        30 SALES          CHICAGO             7499 ALLEN            1600

        30 SALES          CHICAGO             7521 WARD             1250

        30 SALES          CHICAGO             7654 MARTIN           1250

        30 SALES          CHICAGO             7698 BLAKE            2850

        10 ACCOUNTING    NEW YORK           7782 CLARK            2450

        30 SALES          CHICAGO             7844 TURNER           1500

        30 SALES          CHICAGO             7900 JAMES             950

        10 ACCOUNTING    NEW YORK           7934 MILLER           1300

        10 ACCOUNTING     NEW YORK               1 a

 

9 rows selected.

 

3.2.3 連接視圖上的DML操作

SQL> insert into vw_dept_emp values(10,'aaa','aaaa',22,'a',5000);

insert into vw_dept_emp values(10,'aaa','aaaa',22,'a',5000)

*

ERROR at line 1:

ORA-01779: cannot modify a column which maps to a non key-preserved table

在視圖上進行的所有DML操作,最終都會在基表上完成;
select 視圖沒有什麼限制,但insert/delete/update有一些限制;

3.2.4鍵值保存表

如果連接視圖中的一個“基表的鍵”(主鍵、唯一鍵)在它的視圖中仍然存在,並且“基表的鍵”仍然是“連接視圖中的鍵”(主鍵、唯一鍵);即,某列在基表中是主鍵|唯一鍵,在視圖中仍然是主鍵|唯一鍵,則稱這個基表為“鍵值保存表”。   
  一般地,由主外鍵關係的2個表組成的連接視圖,外鍵表就是鍵值保存表,而主鍵表不是。  

3.2.5 連接視圖的更新準則

 一:一般準則——(講)
     1任何DML操作,只能對視圖中的鍵值保存表進行更新, 即,“不能通過連接視圖修    改多個基表”;
    2在DML操作中,“只能使用連接視圖定義過的列”;
     3“自連接視圖”的所有列都是可更新(增刪改)的
 二:insert準則
    1 在insert語句中不能使用“非鍵值保存表”中的列(包括“連接列”);
   2 執行insert操作的視圖,至少應該“包含”鍵值保存表中所有設置了約束的列;
   3 如果在定義連接視圖時使用了WITH CHECK OPTION 選項,則“不能”針對連接視 圖執行insert操作 
 三:update準則
   1鍵值保存表中的列是可以更新的;
   2如果在定義連接視圖時使用了WITH CHECK OPTION 選項,則連接視圖中的連接列(一般就是“共有列”)和基表中的“其他共有列”是“不可”更新的,連接列和共有列之外的 其他列是“可以”更新的
 四:delete準則
   1如果在定義連接視圖時使用了WITH CHECK OPTION 選項,依然“可以”針對連接視圖執行delete操作 

3.2.6 可更新連接視圖

如果創建連接視圖的select查詢“不包含”如下結構,並且遵守連接視圖的“更新準則”,則這樣的連接視圖是“可更新”的:
  一:集合運算符(union,intersect,minus)
  二:DISTINCT關鍵字
  三:GROUP BY,ORDER BY,CONNECT BY或START WITH子句
  四:子查詢
  五:分組函數
  六:需要更新的列不是由“列表達式”定義的
  七:基表中所有NOT NULL列均屬於該視圖 

3.3 創建複雜視圖

複雜視圖定義:是指包含函數、表達式、或分組數據的視圖。主要目的是為了簡化查詢。主要用於執行查詢操作,並不用於執行DML操作。
  註意:當視圖的select查詢中包含函數或表達式時,必須為其定義列別名。

 

 示例1:查詢目前每個崗位的平均工資、工資總和、最高工資和最低工資。

SQL> create view vw_emp_job_sal(job,avgsal,sumsal,maxsal,minsal)

  2  as select job,avg(sal),sum(sal),max(sal),min(sal) from emp group by job;

 

View created.

 

SQL> select * from vw_emp_job_sal;

 

JOB           AVGSAL     SUMSAL     MAXSAL     MINSAL

--------- ---------- ---------- ---------- ----------

CLERK         1037.5       4150       1300        800

SALESMAN        1400       5600       1600       1250

aa

MANAGER   2758.33333       8275       2975       2450

ANALYST         3000       6000       3000       3000

 

 

3.4 強制創建視圖

強制視圖定義:正常情況下,如果基表不存在,創建視圖就會失敗。但是可以使用force選項強制創建視圖(前提:創建視圖的語句沒有語法錯誤!),此時該視圖處於失效狀態。

 

SQL> create force view vw_test_tab

  2  as select c1,c2 from test_tab;

 

Warning: View created with compilation errors. 警告: 創建的視圖帶有編譯錯誤。

 

SQL> select * from vw_test_tab;

select * from vw_test_tab

              *

ERROR at line 1:

ORA-04063: view "SCOTT.VW_TEST_TAB" has errors

 

SQL> select object_name,status from user_objects where object_name='VW_TEST_TAB';

 

OBJECT_NAME                    STATUS

------------------------------ -------

VW_TEST_TAB                    INVALID ---------視圖狀態為不可用

 

SQL> create table test_tab(c1 number(9) primary key,c2 varchar2(20),c3 varchar2(30));

 

Table created.

 

SQL> select * from vw_test_tab;

 

no rows selected

 

SQL> select object_name,status from user_objects where object_name='VW_TEST_TAB';

 

OBJECT_NAME                    STATUS

------------------------------ -------

VW_TEST_TAB                    VALID  --------------視圖狀態為可用

 

 

四 更改視圖

在對視圖進行更改(或重定義)之前,需要考慮如下幾個問題:
1由於視圖只是一個虛表,其中沒有數據,所以更改視圖只是改變數據字典中對該視圖的
 定義信息,視圖的所有基礎對象都不會受到任何影響
2更改視圖之後,依賴於該視圖的所有視圖和PL/SQL程式都將變為INVALID(失效)狀態
3如果以前的視圖中具有with check option選項,但是重定義時沒有使用該選項,則以前                 

的此選項將自動刪除。 

 

4.1更改視圖的定義
          方法——執行create or replace view語句。這種方法代替了先刪除(“許可權也將隨之刪除”)後創建的方法,會保留視圖上的許可權,但與該視圖相關的存儲過程和視圖會失效。

示例1:

將視圖改為改為只讀

SQL> create or replace view vw_emp

  2  as

  3  select empno,ename,job,hiredate,deptno from emp with read only;

 

View created.

 

4.2視圖的重新編譯
   語法:alter view 視圖名 compile;
  作用:當視圖依賴的基表改變後,視圖會“失效”。為了確保這種改變“不影響”視圖和依賴於該視圖的其他對象,應該使用 alter view 語句“明確的重新編譯”該視圖,從而在運行視圖前發現重新編譯的錯誤。視圖被重新編譯後,若發現錯誤,則依賴該視圖的對象也會失效;若沒有錯誤,視圖會變為“有效”。
  許可權:為了重新編譯其他模式中的視圖,必須擁有alter any table系統許可權。
  註意:當訪問基表改變後的視圖時,oracle會“自動重新編譯”這些視圖。

 

 示例1:

SQL> select last_ddl_time,object_name,status from user_objects where object_name='VW_TEST_TAB';

 

LAST_DDL_ OBJECT_NAME                    STATUS

--------- ------------------------------ -------

23-AUG-14 VW_TEST_TAB                    VALID     -----視圖的狀態:有效 

 

SQL> alter table test_tab modify(c2 varchar2(30)); ——修改基表,c2列的長度


SQL> select last_ddl_time,object_name,status from user_objects where object_name='VW_TEST_TAB';

 

LAST_DDL_ OBJECT_NAME                    STATUS

--------- ------------------------------ -------

23-AUG-14 VW_TEST_TAB                    INVALID     ——視圖的狀態:失效 

 

SQL> alter view vw_test_tab compile;                 ---重新編譯

 

SQL> select last_ddl_time,object_name,status from user_objects where object_name='VW_TEST_TAB';

 

LAST_DDL_ OBJECT_NAME                    STATUS

--------- ------------------------------ -------

23-AUG-14 VW_TEST_TAB                    VALID         ---視圖有效

                          
思考:若上述代碼修改的不是列長,而是表名,結果又會如何?
   <警告:更改的視圖帶有編譯錯誤;視圖狀態:失效>

五 刪除視圖

可以刪除當前模式中的任何視圖;
   如果要刪除其他模式中的視圖,必須擁有DROP ANY VIEW系統許可權;
   視圖被刪除後,該視圖的定義會從詞典中被刪除,並且在該視圖上授予的“許可權”也將被刪除。
  視圖被刪除後,其他引用該視圖的視圖及存儲過程等都會失效。
       示例1:drop view vw_test_tab; 


六 查看視圖

使用數據字典視圖
1 dba_views——DBA視圖描述資料庫中的所有視圖
2 all_views——ALL視圖描述用戶“可訪問的”視圖
3 user_views——USER視圖描述“用戶擁有的”視圖 
4 dba_tab_columns——DBA視圖描述資料庫中的所有視圖的列(或表的列)
5 all_tab_columns——ALL視圖描述用戶“可訪問的”視圖的列(或表的列)
6 user_tab_columns——USER視圖描述“用戶擁有的”視圖的列(或表的列) 
示例1:查詢當前方案中所有視圖的信息

SQL> select view_name,text from user_views;

VIEW_NAME          TEXT

------------------ -------------------------------------------------------

VW_DEPT_EMP        select a.deptno,a.dname,a.loc,b.empno,b.ename,b.sal fro

                     m dept a,emp b where a.de

 

VW_EMP              select empno,ename,job,hiredate,deptno from emp

VW_EMP_CHECK       select empno,ename,job,hiredate,deptno from emp where d

                     eptno=10 with check optio

 

VW_EMP_JOB_SAL     select job,avg(sal),sum(sal),max(sal),min(sal) from emp

                    group by job

 

VW_EMP_READONLY    select empno,ename,job,hiredate,deptno from emp with re

                      ad only

 

VW_TEST_TAB        select c1,c2 from test_tab

 

6 rows selected.


     
 示例2:查詢當前方案中指定視圖(或表)的列名信息
  select * from user_tab_columns where table_name='VW_DEPT'; 

 

 

七 在視圖上執行DML操作的步驟和原理

第一步:將針對視圖的SQL語句與視圖的定義語句(保存在數據字典中)“合併”成一條SQL語句

第二步:在記憶體結構的共用SQL區中“解析”(並優化)合併後的SQL語

第三步:“執行”SQL語句
示例:假設視圖v_emp的定義語句如下:
create view v_emp 
as
select empno,ename,loc from employees emp,departments dept
where

 emp.deptno=dept.deptno and dept.deptno=10; 
當用戶執行如下查詢語句時:
select ename from v_emp where empno=9876; 
oracle將把這條SQL語句與視圖定義語句“合併”成如下查詢語句:
select ename from employees emp,departments dept
where

 emp.deptno=dept.deptno and dept.deptno=10 and empno=9876; 
然後,解析(並優化)合併後的查詢語句,並執行查詢語句; 

7.1查詢視圖“可更新”(包括“增刪改”)的列

使用數據字典視圖

dba_updatable_columns——顯示資料庫所有視圖中的所有列的可更新狀態

all_updatable_columns——顯示用戶可訪問的視圖中的所有列的可更新狀態                                  

   user_updatable_columns——顯示用戶擁有的視圖中的所有列的可更新狀態
        示例1:

SQL> select table_name,column_name,insertable,updatable,deletable from user_updatable_columns;

 

TABLE_NAME                     COLUMN_NAME                    INS UPD DEL

------------------------------ ------------------------------ --- --- ---

VW_EMP_READONLY                EMPNO                          NO  NO  NO

VW_EMP_READONLY                ENAME                          NO  NO  NO

VW_EMP_READONLY                JOB                            NO  NO  NO

VW_EMP_READONLY                HIREDATE                       NO  NO  NO

VW_EMP_READONLY                DEPTNO                         NO  NO  NO

VW_EMP_CHECK                   EMPNO                          YES YES YES

VW_EMP_CHECK                   ENAME                          YES YES YES

VW_EMP_CHECK                   JOB                            YES YES YES

VW_EMP_CHECK                   HIREDATE                       YES YES YES

VW_EMP_CHECK                   DEPTNO                         YES YES YES

VW_DEPT_EMP                    DEPTNO                         NO  NO  NO

VW_DEPT_EMP                    DNAME                          NO  NO  NO

VW_DEPT_EMP                    LOC                            NO  NO  NO

VW_DEPT_EMP                    EMPNO                          YES YES YES

VW_DEPT_EMP                    ENAME                          YES YES YES

VW_DEPT_EMP                    SAL                            YES YES YES

VW_EMP_JOB_SAL                 JOB                            NO  NO  NO

VW_EMP_JOB_SAL                 AVGSAL                         NO  NO  NO

VW_EMP_JOB_SAL                 SUMSAL                         NO  NO  NO

VW_EMP_JOB_SAL                 MAXSAL                         NO  NO  NO

VW_EMP_JOB_SAL                 MINSAL                         NO  NO  NO

VW_TEST_TAB                    C1                             YES YES YES

VW_TEST_TAB                    C2                             YES YES YES

VW_EMP                         EMPNO                          YES YES YES

VW_EMP                         ENAME                          YES YES YES

VW_EMP                         JOB                            YES YES YES

VW_EMP                         HIREDATE                       YES YES YES

VW_EMP                         DEPTNO                         YES YES YES

SALGRADE                       GRADE                          YES YES YES

SALGRADE                       LOSAL                          YES YES YES

SALGRADE                       HISAL                          YES YES YES

EMP                            EMPNO                          YES YES YES

EMP                            ENAME                          YES YES YES

EMP                            JOB                            YES YES YES

EMP                            MGR                            YES YES YES

EMP                            HIREDATE                       YES YES YES

EMP                            SAL                            YES YES YES

EMP                            COMM                           YES YES YES

EMP                            DEPTNO                         YES YES YES

TEST_TAB                       C1                             YES YES YES

TEST_TAB                       C2                             YES YES YES

TEST_TAB                       C3                             YES YES YES

BONUS                          ENAME                          YES YES YES

BONUS                          JOB                            YES YES YES

BONUS                          SAL                            YES YES YES

BONUS                          COMM                           YES YES YES

DEPT                           DEPTNO                         YES YES YES

DEPT                           DNAME                          YES YES YES

DEPT                           LOC                            YES YES YES

 

49 rows selected.

 

 

轉自:https://www.cnblogs.com/jinloooong/p/7687632.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 手機先說明,此語句會將你的表中數據全部刪除。 很簡單,運行如下sql語句: ...
  • 前言 Lepus(天兔)資料庫企業監控系統是一套由專業DBA針對互聯網企業開發的一款專業、強大的企業資料庫監控管理系統,企業通過Lepus可以對資料庫的實時健康和各種性能指標進行全方位的監控。目前已經支持MySQL、Oracle、MongoDB、Redis資料庫的全面監控。 Lepus可以在資料庫出 ...
  • 第一次寫博客,各位湊合著看吧(假裝有人看)。 我這裡使用的是centos7。 1、首先打開終端,查看有沒有安裝過MySQL: 若為空則說明沒有安裝過,若要刪除可用yum remove mysql命令。 2、下載mysql的repo源: 安裝mysql-community-release-el7-5. ...
  • 作者:天山老妖S 鏈接:http://blog.51cto.com/9291927 一、存儲過程簡介 1、存儲過程簡介 存儲過程是一組具有特定功能的SQl語句集組成的可編程的函數,經編譯創建並保存在資料庫中,用戶可通過指定存儲過程的名字並給定參數來調用執行。 存儲過程是資料庫管理中常用的技術之一,可 ...
  • 事務定義 事務是單個的工作單元。事務是在資料庫上按照一定的邏輯順序執行的任務序列,既可以由用戶手動執行,也可以由某種資料庫程式自動執行。 事務分類 自動提交事務 每條單獨的語句都是一個事務。 顯式事務 每個事務均以 BEGIN TRANSACTION 語句顯式開始,以 COMMIT 或 ROLLBA ...
  • 如果我們用成語來形容近幾年的大數據產業,也許最合適的就是:如火如荼! 從大量融資、大數據從業者薪資上漲、從研發到商業應用的技術,到2017年的大數據產業可以說已經贏得了全世界的關註。然而,當涉及到大數據時,很多人認為普通人根本無法進去。真的是這樣嗎?普通人只看招聘人員的巨額薪水嗎? 事實上,只要找到 ...
  • 歡迎大家前往 "騰訊雲+社區" ,獲取更多騰訊海量技術實踐乾貨哦~ 本文由 "騰訊雲資料庫 TencentDB" 發表於 "雲+社區專欄" 鄒鵬 ,騰訊高級工程師,騰訊雲資料庫Redis負責人,多年資料庫、網路安全研發經驗。在網路、計算、存儲、安全等領域有深入的研究和豐富的產品化經驗。 在Redis ...
  • 本文系列文章: ​ 使用Shell 操作 MongoDB的技巧 ​ MongoTemplate的使用技巧及其註意事項 敬請期待。 前言 最近公司想要做一個用戶行為數據的收集,最開始想用mysql來存儲後來發現這種方式對於不固定數據格式的保存存在局限性,也不利於查詢統計操作。所以衍生了使用mongod ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...