MySQL學習1--基礎

来源:https://www.cnblogs.com/y15136702274/archive/2023/06/28/17512576.html
-Advertisement-
Play Games

一、資料庫常規概念 1、什麼是資料庫 資料庫是“按照數據結構來組織、存儲和管理數據的倉庫”。 2、有哪些常見的資料庫管理系統 關係型資料庫:存儲的數據是表結構的數據 ​ MySQL Oracle SQLServer DB2 SQLite ​ 非關係型資料庫:存儲的是鍵值對形式的數據 ​ redis ...


一、資料庫常規概念

1、什麼是資料庫

  資料庫是“按照數據結構來組織、存儲和管理數據的倉庫”。

2、有哪些常見的資料庫管理系統 

  關係型資料庫:存儲的數據是表結構的數據

​   MySQL Oracle SQLServer DB2 SQLite

​   非關係型資料庫:存儲的是鍵值對形式的數據

​   redis mongodb memorycache

3、資料庫有哪些存儲單位

  資料庫(Database)保存有組織的數據的容器(通常是一個文件或一組文件)。

  數據表(Table)某種特定類型數據的結構化清單。

  列(Column)表中的一個欄位。所有表都是由一個或多個列組成的。

  行(Row)表中的一個記錄。

4、什麼是SQL語句

  SQL是Structured Query Language(結構化查詢語言)的縮寫,SQL是一種專門用來與資料庫溝通的語言,是一種從資料庫中讀寫數據的簡單有效的方法。

 

二、對資料庫及表的基礎操作

1、連接資料庫伺服器                       mysql -hlocalhost -uroot -p123456

2、2.退出伺服器                               exit

3、查看所有的資料庫                       show databases;

4、創建一個資料庫                          create database java;

5、刪除資料庫                                 drop database java;

6、選中進入資料庫                          use java;

7、查看資料庫java中所有的表        show tables;

8、在資料庫java中建person表      

  create table person(id int, name varchar(32), age int, info text);

  語法格式: create table  表名 (欄位1 數據類型, 欄位2 數據類型,...);

9、11.查看person表的結構               desc person;

10、刪除表                                        drop table person;

11、修改表              語法格式:    alter table 表名 +操作;

  a、刪除info欄位          語法格式:    alter table 表名 drop 欄位;  

                  alter table person drop info;  

  b、在當前表中添加欄位     語法格式:  alter table 表名 add 欄位 數據類型;

                  alter table person add sex boolean;

  c、修改某一個欄位的數據類型  alter table 表名 modify 欄位 新的數據類型;

                  alter table person modify name char(32);

  d、同時修改欄位名字和欄位數據類型   語法格式:  alter table 表名 change 老欄位 新欄位  新的數據類型;

                      alter table person change sex gender int; 

二、MySQL常用數據類型

1、tinyint(n) 用於存儲小整數值,括弧內的n為欄位的最大長度 。

例:tinyint(2)指定欄位類型為整數,長度最大為2。

2、int(n)用於存儲大整數值;括弧內的n為欄位的最大長度,可不寫,預設11位

3、decimal(M,D)用於存儲小數值,M為欄位最大位數,D為小數點後最大位數。

例:decimal(9,3)指定欄位最多9位,小數點後最多三位。

4、char(n) 用於存儲字元串的定長字元串,欄位長度固定占n位

5、varchar 用於存儲字元串的變長字元串,欄位最多n位

註:varchar與char的區別在於varchar的長度可變,欄位實際需要幾位便占幾位,更能節省記憶體。

6、text 用於存儲文本數據,varchar和char做大隻能存儲255個字元,超過255個字元的字元串只能以文本的形式存儲。

7、timestamp、時間戳,用於存儲混合日期和時間值。

alter table person add regTime timestamp default current_timestamp;

時間戳類型的一個欄位如果將預設值設為current_timestamp,在寫入一條數據時,這條數據的這個欄位的預設值為變為寫入數據的時間。

三、對錶中數據的增刪改操作

1、插入數據

語法:insert into 表名稱 values (值1, 值2,....),    必須安照表的欄位順序寫入全部對應類型數據

例:  insert into person values(1, "蓋倫", 12, 89272.78, 1,now());

或  insert into 表名稱 (列1, 列2,...) values (值1, 值2,....)  後面的值需與前面的的保存對應,但前面的列的順序可以隨意,且不要求寫出全部欄位名,未出現的欄位會符預設值。

例:  insert into person (id, name, age, salary) values (2, "亞索", 34, 27288.98);

可一次插入多條數據,數據之間用“,”分隔

例:  insert into person(id, name) values(4, "世齊"), (5, '永傑'),(6, "狗蛋");

2、刪除數據

語法:delete from 表名稱 where 列名稱 = 值

例1:delete from person where id = 4;

例2:delete from person where name = "蓋倫";

例3:delete from person where id in(2,3, 5);  #刪除id為2、3、5的數據

例4:delete from person;  #表名後沒有限制條件,刪除表中所有數據。

3、修改數據

語法: update 表名稱 set 列名稱1 = 新值1,列2=新值2,列3=新值3.... where 列名稱 = 某值

例:  update person set name="蓋倫", age = 89 where id = 1;

4、數據的約束

1、預設值  default

創建表時,如果一個欄位聲明瞭預設值(default),用戶在插入的數據時候,如果沒有給當前欄位賦值,會給當前欄位賦值一個預設值。例:

mysql> create table person2 (
    -> id int,
    -> name varchar(32),
    -> country varchar(32) default "CHINA"
    -> );
Query OK, 0 rows affected (0.02 sec)
mysql> desc person2;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id      | int(11)     | YES  |     | NULL    |       |
| name    | varchar(32) | YES  |     | NULL    |       |
| country | varchar(32) | YES  |     | CHINA     |       |
+---------+-------------+------+-----+---------+-------+
mysql> insert into person2(id, name) values(1, "蓋倫");
Query OK, 1 row affected (0.00 sec)

mysql> select * from person2;
+------+--------+---------+
| id   | name   | country |
+------+--------+---------+
|    1 | 蓋倫   | CHINA     |
+------+--------+---------+
1 row in set (0.00 sec)

2、非空  not null

如果給欄位設置了非空,在添加數據的時候,必須給當前欄位設置值。如果不設置會報錯。例:

mysql> create table person3(
    -> id int,
    -> name varchar(32) not null
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> desc person3;
    
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | YES  |     | NULL    |       |
| name  | varchar(32) | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
mysql> insert into person3 (id, name) values(1, "sahj");
Query OK, 1 row affected (0.00 sec)

mysql> insert into person3 ( name) values( "ss");
Query OK, 1 row affected (0.00 sec)

mysql> insert into person3 (id) values(3);
ERROR 1364 (HY000): Field 'name' doesn't have a default value
mysql> select * from person3;
+------+------+
| id   | name |
+------+------+
|    1 | sahj |
| NULL | ss   |

3、唯一  unique

設置欄位的值是唯一的,如果添加數據的時候重覆數據的話會報錯。例:

mysql> create table person4 (
    -> id int,
    -> name varchar(32) unique
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> insert into person4(id, name) values(1, "嘻嘻");
Query OK, 1 row affected (0.01 sec)

mysql> insert into person4(id, name) values(2, "嘻嘻");
ERROR 1062 (23000): Duplicate entry '嘻嘻' for key 'name'
mysql>

4、主鍵  primary key

是唯一和非空的組合,

主鍵必須包含唯一的值。

主鍵列不能包含 NULL 值。

每個表都應該有一個主鍵,並且每個表只能有一個主鍵。例:

#在設計資料庫的時候,一定要有一個欄位是主鍵,而且主鍵的欄位一般和業務邏輯無關。name和age等容易重覆不能設置為主鍵,開發中一般將id設置為主鍵
mysql> create table person5(
    -> id int primary key,
    -> name varchar(32)
    -> );
Query OK, 0 rows affected (0.01 sec)
mysql
> insert into person5(name) values("嘻嘻"); ERROR 1364 (HY000): Field 'id' doesnot have a default value mysql> insert into person5(id, name) values(1,"嘻嘻"); Query OK, 1 row affected (0.00 sec) mysql> insert into person5(id, name) values(1,"嘻嘻"); ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY' mysql>

5、自增長  auto_increment

auto_increment 一般在開發中 主鍵設置為自增長,主鍵一旦設置為自增上,新增數據時不用填充主鍵欄位,主鍵會自動在上一次插入數據時主鍵的值加1,填入這次的主鍵。例:

mysql> create table person7(
    -> id int primary key auto_increment,
    -> name varchar(20)
    -> );
Query OK, 0 rows affected (0.11 sec)

#在插入數據的時候,如果主鍵設置自增長,就可以不對主鍵進行賦值了,會從1開始一直往下加1
mysql> insert into person5 (name) values("狗蛋");
Query OK, 1 row affected (0.05 sec)

mysql> select * from person5;
+----+--------+
| id | name   |
+----+--------+
|  1 | 狗蛋   |
+----+--------+
1 row in set (0.00 sec)

mysql> insert into person5 (name) values("hanran");
Query OK, 1 row affected (0.06 sec)

mysql> insert into person5 (name) values("nanhang");
Query OK, 1 row affected (0.04 sec)

mysql> select * from person5;
+----+---------+
| id | name    |
+----+---------+
|  1 | 狗蛋    |
|  2 | hanran  |
|  3 | nanhang |
+----+---------+
mysql> delete from person5 where id = 3;
Query OK, 1 row affected (0.09 sec)

6、外鍵約束

表中的一個欄位 作為一個外鍵,去關聯另外一張部門表的主鍵,將兩張表關聯起來。

mysql> create table dept (
    -> id int primary key auto_increment,
    -> deptName varchar(32) not null
    -> );
mysql> create table employee (
    -> id int primary key auto_increment,
    -> empName varchar(32) not null,
    -> deptId int not null,
    -> regTime timestamp default current_timestamp,
    #constraint  :  約束
    #fk_emp_dep:  給外鍵起的名字 隨便起名字
    # foreign key(deptId):  外鍵  對哪個欄位設置外鍵   當前表的
    #references:  關聯
    #dept(id):  另外一張表中的主鍵 dept(id)
    -> constraint fk_emp_dep foreign key(deptId) references dept(id)
    #on delete cascade  級聯刪除
    -> on delete cascade
    #on update cascade  級聯修改
    -> on update cascade
    -> );

 

5、事務的操作(入門)

使用事務的目的是保證數據的安全。

事務內的全部操作要麼全部成功,要麼全部失敗。

例如:張三要轉給李四100元,在資料庫的具體操作分為兩步

1、使張三賬戶減少100元;

2、使李四賬戶增加100元;

未使用事務時,在操作1完成後,如果有意外情況(如伺服器宕機)導致轉賬操作不能繼續進行第2步

就會出現轉出了100元,李四卻未收到的情況。

開啟事務後,操作1完成後,操作結果不會直接提交,要等到後續操作全部成功後,所有結果一同提交,

若後續有某個操作因意外情況失敗,則會對操作進行回滾,將一切回覆到未開始操作的狀態。

開啟事務(即關閉自動提交)

set autocommit=0; #autocommit為0時自動提交關閉,為1時自動提交開啟。

增刪改sql  不會自動提交

會有兩種狀態:
  回滾: roolbakc; 增刪改sql語句沒有執行
  提交: commit; 增刪改sql語句執行

 

 


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

-Advertisement-
Play Games
更多相關文章
  • hive的高級分組聚合是指在聚合時使用GROUPING SETS、CUBE和ROLLUP的分組聚合。 高級分組聚合在很多資料庫類SQL中都有出現,並非hive獨有,這裡只說明hive中的情況。 使用高級分組聚合不僅可以簡化SQL語句,而且通常情況下會提升SQL語句的性能。 ## 1.Grouping ...
  • 摘要:業務應用對資料庫的數據請求分寫請求(增刪改)和讀請求(查)。當存在大量讀請求時,為避免讀請求阻塞寫請求,資料庫會提供只讀實例方案。通過主實例+N只讀實例的方式,實現讀寫分離,滿足大量的資料庫讀取需求,增加應用的吞吐量。 業務應用對資料庫的數據請求分寫請求(增刪改)和讀請求(查)。當存在大量讀請 ...
  • 摘要:本期結合示例,詳細介紹華為雲數字工廠平臺的數據分析模型和數據圖表視圖模型的配置用法。 本文分享自華為雲社區《數字工廠深入淺出系列(六):數據分析與圖表視圖模型的配置用法》,作者:雲起MAE 。 華為雲數字工廠平臺基於“數據與業務一體化”理念,提供統一的製造全域數據平臺底座,內置輕量級製造數據分 ...
  • 時下,眾多金融機構在積極推行數字化改革,以適應時代高速革新。為回應市場對信息即時生效的迫切需求,各家[券商機構](https://www.dtstack.com/solution/securities?src=szsm)都需要更具競爭力的信息服務。 本次方案結合券商場景與業務實踐,圍繞客戶實際面臨的 ...
  • 衛健行業是關乎國家和民生安全的關鍵行業。近年來,雲計算、大數據、人工智慧等技術不斷發展,並與醫療行業深入融合。同時,相關部門相繼頒發一系列政策,進一步推動醫療行業數字化、智慧化轉型,促進探索健康中國高質量發展道路。 ...
  • #其他預設調整值#MySQL Server實例配置文件# #由MySQL Server實例配置嚮導生成###安裝說明# ##在Linux上,您可以將此文件複製到/etc/my.cnf以設置全局選項,#mysql-data-dir/my.cnf設置伺服器特定選項(用於此安裝的@localstatedi ...
  • ## 索引失效 ### 準備數據: ```sql CREATE TABLE `dept` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30) DEFAULT NULL, `address` VARCHAR(40) DEFAUL ...
  • 博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...