SQL&SQLite

来源:http://www.cnblogs.com/waiwaisanqian/archive/2017/10/29/7748572.html
-Advertisement-
Play Games

註冊博客園有一年多了,每次都是來找點資料,從來沒有寫過點什麼,促使我開始寫博客的原因主要有兩點 一是在查找資料的過程中,經常需要重覆的查找某個知識點,一個知識點時間長了之後總是忘記,這樣重覆的過程卻是浪費了大量的時間,把東西記下來一方面是方便自己的查詢,一方面加深自己的理解。 二是提高自己的寫作能力 ...


  註冊博客園有一年多了,每次都是來找點資料,從來沒有寫過點什麼,促使我開始寫博客的原因主要有兩點

  一是在查找資料的過程中,經常需要重覆的查找某個知識點,一個知識點時間長了之後總是忘記,這樣重覆的過程卻是浪費了大量的時間,把東西記下來一方面是方便自己的查詢,一方面加深自己的理解。

  二是提高自己的寫作能力,工作中經常遇到材料的編寫,而自己的文字編寫能力又很一般,有必要做這方面的鍛煉。

  沒什麼好說的,進入主題。

 

1、什麼是SQL和SQLite

  SQL(Structured Query Language)是“結構化查詢語言”,它是對關係型資料庫的操作語言。它可以應用到所有關係型資料庫中,例如:MySQL、Oracle、SQL Server等。

  SQLite是一個軟體庫,實現了自給自足的、無伺服器的、零配置的、事務性的 SQL 資料庫引擎。SQLite是一個增長最快的資料庫引擎,這是在普及方面的增長,與它的尺寸大小無關。SQLite 源代碼不受版許可權制。

2、SQL和SQLite的語法要求

  SQL語句可以單行或多行書寫,以分號結尾;可以用空格和縮進來來增強語句的可讀性;關鍵字不區別大小寫,建議使用小寫;

  所有的 SQLite 語句可以以任何關鍵字開始,如 SELECT、INSERT、UPDATE、DELETE、ALTER、DROP 等,所有的語句以分號(;)結束。有個重要的點值得註意,SQLite 是不區分大小的,但也有一些命令是大小寫敏感的,比如 GLOB 和 glob 在 SQLite 的語句中有不同的含義

3、SQL語言可以分為四類

  DDL(Data Definition Language):數據定義語言,用來定義資料庫對象:庫、表、列等;

  DML(Data Manipulation Language):數據操作語言,用來定義資料庫記錄(數據);

  DCL(Data Control Language):數據控制語言,用來定義訪問許可權和安全級別;

  DQL(Data Query Language):數據查詢語言,用來查詢記錄(數據)。

4、SQL和SQLite數據類型

SQL

  int:整型

  double:浮點型,例如double(5,2)表示最多5位,其中必須有2位小數,即最大值為999.99;

  decimal:泛型型,在表單錢方面使用該類型,因為不會出現精度缺失問題;

  char:固定長度字元串類型;

  varchar:可變長度字元串類型;255

  text:字元串類型;

  blob:位元組類型;

  date:日期類型,格式為:yyyy-MM-dd;

  time:時間類型,格式為:hh:mm:ss

  timestamp:時間戳類型;yyyy-MM-dd  hh:mm:ss

SQLite

  NULL:null值

  INTEGER:帶符號的整數,根據值得大小存儲在1、2、3、4、6、8個位元組中

  REAL:浮點值,存儲為8位元組的IEEE浮點數

  TEXT:文本字元串,使用資料庫編碼(UTF-8、UTF-16BE或UTF-16LE)存儲

  BLOB:blob數據,完全根據它的輸入存儲

5、下麵詳細介紹SQLite的各種命令

  SQLite 命令類似於 SQL。命令包括 CREATE、SELECT、INSERT、UPDATE、DELETE 和 DROP。

創建資料庫:

$sqlite3 DatabaseName.db

創建表:(NOT NULL是一種約束,表示在表中創建紀錄時這些欄位不能為 NULL)

sqlite> CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

刪除表(先確定表是否存在,否則會報錯):

sqlite>.tables
COMPANY       test.COMPANY

sqlite>DROP TABLE COMPANY;
sqlite>

sqlite>.tables
sqlite>

插入數據:

向下麵這個表中插入數據有兩種方式

sqlite> CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

方式一:

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 );

方式二:

INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );

刪除數據:

假設 COMPANY 表有以下記錄

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

刪除ID為7的客戶

sqlite> DELETE FROM COMPANY WHERE ID = 7;

刪除所有數據

sqlite> DELETE FROM COMPANY;

更新數據:

假設 COMPANY 表有以下記錄

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

下麵是一個實例,它會更新 ID 為 6 的客戶地址:

sqlite> UPDATE COMPANY SET ADDRESS = 'Texas' WHERE ID = 6;

如果您想修改 COMPANY 表中 ADDRESS 和 SALARY 列的所有值,則不需要使用 WHERE 子句,如下:

sqlite> UPDATE COMPANY SET ADDRESS = 'Texas', SALARY = 20000.00;

查詢數據:

假設 COMPANY 表有以下記錄

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

下麵是一個實例,使用 SELECT 語句獲取並顯示所有這些記錄。在這裡,前三個命令被用來設置正確格式化的輸出。

sqlite>.header on
sqlite>.mode column
sqlite> SELECT * FROM COMPANY;

最後,將得到以下的結果:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

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

-Advertisement-
Play Games
更多相關文章
  • $('#resourceTabs').tabs('unselect', 0);$('#resourceTabs').tabs('select', 0); ...
  • 前言 前不久抽空對目前比較火的視頻直播,做了下研究與探索,瞭解其整體實現流程,以及探討移動端HTML5直播可行性方案。 發現目前 WEB 上主流的視頻直播方案有 HLS 和 RTMP,移動 WEB 端目前以 HLS 為主(HLS存在延遲性問題,也可以藉助 video.js 採用RTMP),PC端則以 ...
  • 這裡是記錄一些本人在學習過程中覺得重要的知識點,記錄下來以供日後查看,如有不對歡迎指正,望在前端的路上共勉! 當然,這裡也不僅僅局限於點擊事件,也可以換成setTimeout等也有相同的問題,可以用這兩種方法來解決; ...
  • 為什麼整個互聯網行業都缺前端工程師? 為什麼整個互聯網行業都缺前端工程師? 為什麼整個互聯網行業都缺前端工程師? 前端工程師的缺乏問題幾乎蔓延到整個互聯網行業,從剛起步的創業公司,到上市公司乃至巨頭,這個問題都存在著。沒錯,優秀的前端工程師簡直比大熊貓還稀少。 每天,100offer 的 HR 群都 ...
  • 實現效果: 實現代碼: myScroll.js ...
  • tab面板 ... ...
  • 一:通過margin負值 相容性好,但是必須要定寬高 二:通過margin:auto 以上兩種方法都可以把absolute換成fixed,註意,fixed在ie下不支持 三:行內元素居中 這種方法只能居中行內元素。常用於文字對其居中 四:transform居中 存在css3瀏覽器相容問題 五:fle ...
  • <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...