Java入門 資料庫第一天

来源:https://www.cnblogs.com/kjs-1998/archive/2019/07/25/11246960.html
-Advertisement-
Play Games

資料庫概述 本菜鳥使用的資料庫軟體為Mariadb,以下內容都是以Mariadb資料庫軟體來寫的學習總結。 資料庫 所謂的資料庫就是用於存儲、管理數據的倉庫,資料庫根據底層存儲數據結構的不同可以分為很多類,但現在流行的是關係型資料庫和非關係型資料庫。 關係型資料庫 關係型資料庫底層是以二維表的形式保 ...


資料庫概述

  本菜鳥使用的資料庫軟體為Mariadb,以下內容都是以Mariadb資料庫軟體來寫的學習總結。

資料庫

  所謂的資料庫就是用於存儲、管理數據的倉庫,資料庫根據底層存儲數據結構的不同可以分為很多類,但現在流行的是關係型資料庫和非關係型資料庫。

關係型資料庫

  關係型資料庫底層是以二維表的形式保存數據的資料庫。(模型就是我們常使用的表格)

  常用的關係型資料庫有SQL server 、Oracle、Mysql、Mariadb 以及DB2。

非關係型資料庫

  非關係型資料庫底層是key-value結構。

資料庫名詞解釋

資料庫伺服器

  安裝的mysql伺服器軟體,將資料庫伺服器軟體安裝在電腦上才可以對外提供服務。

資料庫

  一個資料庫伺服器可以有很多個資料庫,但是一般情況下一個網站的所有數據會存放在一個資料庫當中。

表(數據表)

  一個資料庫中可以有多個表,一般情況下,一類型的數據會存放在一張表中,比如跟用戶相關的數據可以存放在用戶表中。

  在Java中一個類封裝一類型信息,因此就像Java中一個類對應一張表。

表記錄

  一張表中可以有多個記錄(可以將一行稱為一條記錄信息)。

  在Java中一個類可以創建多個實例,就像Java中的一個實例對應一條表記錄。

資料庫中的數據類型

數值類型

  資料庫中的數值類型跟Java中整型數據類型一一對應,而這提到的資料庫常用數值類型有:int和double,名字不一定一樣,但資料庫中的int 和double類型跟Java中一樣。

  int占用4個位元組

  double 占用8個位元組

字元串類型

  mysql中包含的字元串類型並不是Java中的String,而是char和varchar兩種。

char和varchar的區別

  char(n) 為定義字元串長度,數據的長度可以小於等於n個字元,但是當數據的字元數小於定義的字元串長度時,char會在數據後面補齊數據長度,也就是說不管你存儲的數據是否達到了定義長度,最後的字元串長度始終為定義的長度。

  varchar(n)也為定義字元串長度,數據長度同樣可以小於等於n個字元,與char不同的是當你存儲的數據不足定義的長度時,varchar會把多出來的空間讓出來,數據字元個數是多少,字元串長度就是多少。

  說了區別再說一下優缺點:char存儲數據的速度會比varchar快,但是可能會有空間浪費;varchar存儲數據比char慢,但是不會有空間浪費。

大文本類型

  Text 0-65535個位元組長度

  bigtext 4GB位元組長度

日期類型

date

  date類型格式為:年月日

time

  time類型格式為:時分秒

datetime

  datetime類型格式為:年月日 時分秒

timestamp

  時間戳(存的是1970-1-1到指定日期的毫秒值,但是看著還是日期時間格式

timestamp類型的類可以設置自動更新為當前時間,而datetime不行。

Mariadb內的資料庫里表的增刪查改操作語法

在操作語句中只有少部分語句可以結尾不加分號,為了便捷操作,將所有語句結束都加上分號

通過cmd連接mysql

  在cmd命令中輸入:mysql -uroot -proot(根據安裝時的設置來連接)

查看mysql伺服器中的資料庫

  show databases;

進去某一資料庫(進入資料庫後才能操作庫中的表和表記錄)

  use 資料庫名;

  查看進入的資料庫名:select database();

查看當前資料庫中的所有表

  show tables;

刪除某一資料庫

  drop database 庫名;

  判斷是否存在這個庫,若不存在什麼都不做
  drop database if exists 庫名;

創建資料庫,指定編碼為utf8

  create database 庫名 charset utf8;

查看建庫時的語句(並驗證資料庫使用的編碼)

  show create database 庫名;

刪除資料庫中的表

  drop table 表名;

資料庫中創建表

  create table 表名(

    列名 數據類型,

    列名 數據類型,

    ......

  );

查看表結構

  desc 表名;

  查詢建表語句
   show create table 表名;

在表中插入數據

  insert into 表名(列1,列2,列3...) values(值1,值2,值3...);列跟值要一一對應

查詢表中所有信息

  select * from 表名;

  查詢指定列

  select 列名,列名 from 表名;

修改表中的數據

  update 表名 set 列=值;

刪除表中所有表記錄

  delete from 表名;

  將表摧毀再重新創建
  truncate table stu;

 

有一張表,表中的id列為整值類型,email列,gender列

思考1如果id是編號,編號應該是唯一的且不能為空,如何保證這一點?

1.主鍵約束

如果為一個列添加了主鍵約束,該列就是這張表的主鍵,主鍵要求唯一且不能為空。添加主鍵約束的語法是:

create table stu(

    id int primary key,

    ...

);

2.唯一約束

如果為一個列添加了唯一約束,該列的值就不能重覆(但是可以為null), 添加唯一約束的語法是:

create table user(

    email varchar(50) unique,

    ...

);

3.非空約束

如果為一個列添加了非空約束,該列的值就不能為空(但是可以重覆), 添加非空約束的語法是:

create table stu(

    gender varchar(2) not null,

    ...

);

 

思考2在插入數據時,如何保證插入的id不會因為重覆而報錯?

如果id(主鍵)是數值類型, 可以設置主鍵自增機制, 讓資料庫幫我們維護id的值, 即我們在插入記錄時, 可以不用給id賦值, 只需要給一個null, 資料庫會通過自身保存的變數給id賦值!

create table stu(

    id int primary key auto_increment,

    ...

);

 

思考3如果id主鍵設置了自增後,在插入數據時,是否可以設置id的值?

即使id設置了自增, 也可以在插入數據時為id賦值。

如果賦的id的值比自增變數的值要大,結果是將賦的id值加1後賦值給自增變數

 


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

-Advertisement-
Play Games
更多相關文章
  • 持續集成 gitlab+jenkins(pipeline)實現代碼自動上線 環境準備:Centos7.6版本ip:192.168.0.13 主機名:gitip:192.168.0.23 主機名:jenkinsip:192.168.0.15 主機名:web01關閉防火牆關閉selinux分發公鑰使兩兩 ...
  • 因為近期需要做畢業設計,需要用到Linux系統,在此分享一下在Linux-Ubuntu系統下安裝PHP環境的一小點知識,如有偏差錯誤的,請各位學友多多指教哈! sudo apt-get install software-properties-common python-software-proper ...
  • sed 是一種線上編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩衝區中, 稱為“模式空間”(pattern space),接著用 sed 命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕。接著處理下一行,這樣不斷重覆,直到文件末尾。文件內容並沒有 改變,除非你使用重定向存儲 ...
  • grep (global search regular expression(RE) and print out the line,全面搜索正則表達式 並把行列印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行列印出來。Unix 的 grep 家族包括 grep、egrep ...
  • ubuntu nginx tomcat 虛擬目錄 反向代理 動靜分離 ...
  • 現在.net core已經跨平臺了,大家也都用上了linux用上了docker。跟.net經常配套使用的SQL SERVER以前一直是windows only,但是從SQL Server 2017開始已經支持運行在docker上,也就說現在SQL Serer已經可以運行在linux下了。 下麵在Ub ...
  • 創建和操縱表 創建表 輸入 分析 表名緊跟在CREATE TABLE 關鍵字後面 ,實際的表定義括在圓括弧中。各列之間用逗號分隔。這個表由9列組成。每列的定義以列名開始,後跟列的數據類型。表的主鍵可以在創建表時用PRIMARY KEY關鍵字指定,這裡,列cust_id指定作為主鍵列。整條語句由右圓括 ...
  • 第一篇隨筆,暫水平有限,僅作學習記錄。如果能幫助到你那就更好了! 登陸Mysql服務mysql -u root -p ... 一、基礎命令 (命令以' ; '號結束)資料庫列表show databases; 切換/使用某個庫use 庫名; 查看數據表列表 (需切換至某個庫使用,否則會報錯ERROR ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...