資料庫增刪改查基本操作

来源:https://www.cnblogs.com/cyxy31521/archive/2018/07/27/9378204.html
-Advertisement-
Play Games

一、增加(create add insert )1,create操作庫 create database 庫名 新建庫 create database 庫名 character set 編碼表 2,create 操作表結構 新建表: create table 表名( id int primary ke ...



一、增加(create add insert )
1,create操作庫
create database 庫名 新建庫
create database 庫名 character set 編碼表


2,create 操作表結構
新建表:
create table 表名(
id int primary key auto_increment,
name varchar(20),
………….
);
primary key 主鍵約束(該列唯一值)
auto_increment 主鍵表自動增長
add 添加欄位 alter table 表名 add 列名 數據類型 約束

3,insert 操作表數據內容
insert into 表名(列名1,列名2,列名3)values(值1,值2,值3)
insert into 表名 (列名) values (值)
insert into 表名 values (全列值)
insert into 表名 (列名1,列名,列名) values (值1,值2,值3),(值1,值2,值3)


二、刪除(drop delete truncate)
1,操作庫
drop database 資料庫名

2,操作表結構
drop table 表名 (刪除的是整個表)
alter table 表名 drop 列名 刪除列
3,操作表數據
delete from 表名 where 條件
delete from 表名 (沒有where條件,刪的是表中所有記錄,逐行刪除)
truncate table 表名 (先刪除表,再創建表,等於刪除整個表)

start transaction 開啟事務 執行delete刪除,rollback 事務回滾可找回
start transaction 開啟事務 執行truncate刪除,rollback 事務回滾不可找回

三、修改 (alter modify change rename update)
1,操作庫
use 庫名:更改庫

2,alter 修改表的結構
modify 修改約束類型 alter table 表名 modify tel varchar(50)
change 修改列名 alter table 表名 change 舊列名 新列名 數據類型 約束
rename 修改表名 alter table 舊表名 to 新表名
alter database 資料庫名稱 character set 編碼表

3,update 操作表格數據
update 表名 set 列1 = 值1, 列2 = 值2 where 條件
where 條件:
id=6
id<>6 id 不等於6
id<=6
&& || ! and、or、not
id in(1,3,4,5)
is null為空,is not null 不為空
ifnull(值1,0);若為空,設置值為0;

四、查詢(select show )
1,操作庫
show databases
show create database 庫名: 查看庫編碼表
select database(); 查看正在使用的庫

2,操作表結構
show tables; 查詢表
desc 表名; 查看表結構
show create table 表名; 查看表的編碼

3,操作表數據
select 列名1,列名2 from 表名 查詢指定列的數據
select * from 表名 查詢所有列的數據

關鍵字:
as:重命名
like: 模糊查詢 like%、%like%、like__

格式:
select 列名 as 別名 ,列名 as 別名… from 表名 where 條件1 group by 列名 having 條件2 order by 排序
說明: 條件1 會先執行過濾 -> 進行分組 -> 條件2 進行過濾

順序說明:select …要顯示的內容.. from …表名.. where 條件…. group by …分組的列 …having …分組後的條件… order by …排序?
select …5… from …1.. where …2.. group by ..3…having ..4… order by ...6.

查詢排重:
select distinct 列名 from 表名 where 條件

 

五、聚合函數:
count 統計個數、sum 求和、 avg 平均值、max、 min

分組處理:group by

排序: order by 列名 asc|desc

六、多表設計
1、一對多
比如 一個部門有多個人,一個人只有一個部門
外鍵約束格式:
alter table 從表名稱 add foreign key (外鍵列的名稱) references 主表名稱(主鍵)
創建表時候,直接創建主鍵約束
dept_id int,
foreign key (dept_id) references dept(id)
2、多對多
比如:一個項目被多個程式員寫,一個程式員寫多個項目
3、一對一
比如 一個人只有一份個人檔案,一個檔案對應一個人

七、數據備份及恢復:
1,備份
mysqldump -u 用戶名 -p 資料庫名 > 磁碟SQL文件路徑
mysqldump uroot -p zhangwu> G:\mybases2.sql
Enter password:123

2,恢復
方式一:創建資料庫,導入數據
create database db1:
use db1;
source G://mybases2.sql

方式二:創建資料庫,命令行中輸入
create database db2:
退出資料庫,在dos下輸入
mysql -uroot -p db2 < G://mybases2.sql
Enter password:123


八、範式:
第一範式:1NF:資料庫表的每一列都是不可分割的原子數據項
第一範式每一列不可再拆分,稱為原子性。

第二範式:2NF:第二範式就是在第一範式的基礎上所有列完全依賴於主鍵列
第二範式的特點:
1) 一張表只描述一件事情。
2) 表中的每一列都完全依賴於主鍵

第三範式:3NF:所有列不依賴於其它非主鍵列,也就是在滿足2NF的基礎上,任何非主鍵列不得傳遞依賴於主鍵。
所謂傳遞依賴,指的是如果存在"A → B → C"的決定關係,則C傳遞依賴於A。因此,滿足第三範式的資料庫表應該不存在如下依賴關係:主鍵列 → 非主鍵列x → 非主鍵列y。

示例:學生信息表
學號 姓名 年齡 所在學院 學院地點

滿足第二範式,不滿足第三範式
存在傳遞的決定關係:
學號?所在學院 ? 學院地點

拆分成兩張表
學號 姓名 年齡 所在學院的編號(外鍵)
學院編號 所在學院 學院地點


三大範式小結:
範式 特點
1NF 原子性:表中每列不可再拆分。
2NF 不產生局部依賴,一張表只描述一件事情。白哦中的每一列是完全依賴於主鍵的。
3NF 不產生傳遞依賴,表中每一列都直接依賴於主鍵。而不是通過其它列間接依賴於主鍵。




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

-Advertisement-
Play Games
更多相關文章
  • 先寫一鍵部署腳本,肯定是先要知道如何手動安裝Apache,Mysql,php,phpmyadmin 一 Apache2的安裝 安裝好之後,手動看一下apache的版本 輸入ip(本地的話直接打localhost),瀏覽器打開: ok 安裝完成(或者你把你想展示的網頁放在 var/www裡面就好) 另 ...
  • 需要註意的是: 1.需要在當前目錄下創建hosts.txt文件,文件內容格式為: https://www.baidu.com,百度首頁 https://www.trc.com,泰然城首頁 https://www.jd.com,京東商城 2.ding_url換成自己的釘釘機器人webhook鏈接,也可 ...
  • 昨天已實現一個模擬器的原型. 模擬器的基本原理是, 用另外一種方式實現所有腳本會訪問到的API , 然後把腳本操作的數據, 在網頁上展現出來. 模擬器可以覆蓋大部分開發的情況, 在不使用硬體前就把代碼調試好. 開發速度會更上一個臺階. 下一個階段是完善各種硬體介面, TCP/HTTP/WebSock ...
  • 系列目錄 一、安裝MySql 二、安裝並破解Navicat 三、沒有my.in配置文件怎麼辦 四、設置MySql的大小寫敏感 五、重置MySql登陸密碼 之前說過,Windows操作系統中,我們安裝Mysql有兩個選擇:一是下載MSI點擊運行,利用windows系統安裝程式的方法按部就班的來安裝;二 ...
  • 過程,函數,觸發器是PL/SQL編寫的,存儲在oracle中的.PL/SQL是非常強大的資料庫過程語言. PL/SQL優點:性能,模塊化,網路傳輸量,安全性缺點:移植性不好 簡單分類:塊:過程,函數,觸發器,包 Demo:create or replace procedure sp01 isbegi ...
  • 占座 ...
  • 轉自:http://www.maomao365.com/?p=6965 摘要: 下文將分享兩種將欄位中null值替換為指定值的方法分享,如下所示: 實驗環境:sqlserver 2008 R2 例: ...
  • 一、 約束的含義和分類 1.1約束的含義:是一種限制,用於限製表中的數據,保證數據的完整性和一致性。 1.2約束的分類: ①not null:非空,保證欄位不能為空。違反約束不會報錯,但是會有警告,適用於說有的類型。 ②default:預設約束,當數據插入的時候,指定的欄位如果沒有數據插入,即插入默 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...