Mysql - 資料庫操作

来源:http://www.cnblogs.com/elvinle/archive/2016/12/26/6222514.html
-Advertisement-
Play Games

之前介紹了資料庫的增刪改查, 發現忘記了資料庫的一些基本操作, 比如建庫, 建表, 改表等等. 那這裡就來小結一下資料庫sql形式的基本操作. 一、庫操作 1. 建庫 在建庫之前, 可能需要看一下, 資料庫裡面, 已經存在哪些庫, 這樣可以去處理重覆的問題. 這裡之所以會出現newdb, 是因為我已 ...


之前介紹了資料庫的增刪改查, 發現忘記了資料庫的一些基本操作, 比如建庫, 建表, 改表等等. 那這裡就來小結一下資料庫sql形式的基本操作.

一、庫操作

1. 建庫

在建庫之前, 可能需要看一下, 資料庫裡面, 已經存在哪些庫, 這樣可以去處理重覆的問題.

show databases;

這裡之所以會出現newdb, 是因為我已經執行過下麵的創建庫的腳本了.

然後, 就可以創建庫了.

create DATABASE newdb;

執行這句話, 就會按照預設編碼的方式去創建資料庫newdb. 那預設編碼是什麼呢, 來看一下: 

show create database newdb;

如果想要在創建庫的時候, 就指定好編碼格式的話, 那麼只需要按照上面這種模式去加就好了

create database newdb2 default character set utf8

 其實編碼不用管, 使用預設的方式就好.

 

2. 刪庫 -- 慎用

drop database newdb;

 

3. 引用庫

如果你在1號庫中, 想查詢2號庫的表, 那麼就需要使用到這個

use test;

 

二、表操作

1. 建表

同樣的, 建表之前, 要查詢表中是否已存在我們想見的表.

show tables;

如果沒有, 則可以開始新建表了, 如果庫裡面已經有了表模板, 並且你想在新建的時候, 導入部分數據, 那麼應該使用下麵這種方法:

create table tch_contact2 select * from tch_contact;

這樣的話, tch_contact2能獲取tch_contact的結構和數據, 但是並不能獲取別的, 例如:索引, 外鍵, 觸發器.

另外一種建表, 則稍微有點複雜

CREATE TABLE `contact` (
  `Id` int(11) NOT NULL AUTO_INCREMENT, -- 不為空, 自動增長
  `TId` int(11) DEFAULT NULL,
  `QQ` varchar(15) DEFAULT NULL,
  `Weixin` varchar(50) DEFAULT NULL,
  `Phone` varchar(15) DEFAULT NULL,
  PRIMARY KEY (`Id`), -- 設置主鍵
  KEY `Index_TId` (`TId`) USING BTREE, -- 索引
  CONSTRAINT `key_tid` FOREIGN KEY (`TId`) REFERENCES `tch_teacher` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION -- 設置外鍵
) COMMENT='就是這個表' -- 表註釋

有時候需要用到臨時表, 方法也很簡單, 只需要在create table 中間加上一句 TEMPORARY 就可以了, 其他的, 都是和一般建表一樣:

create temporary table '表名'()

1.1 設置主鍵

設置主鍵的語句, 可以分開寫, 也可以合在一起寫. 

`Id` int(11) NOT NULL  PRIMARY key AUTO_INCREMENT,
-- 或者
`Id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`Id`),

1.2 設置索引 -- 索引這裡有單個索引和複合索引, 但是設置方法都是一樣的

mysql裡面, 索引有三種類型, Normal, Unique, FullText. 索引方法由兩種: Btree, Hash

-- 單個索引
KEY `Index_Weixin` (`Weixin`) USING BTREE,
UNIQUE KEY `Index_TId` (`TId`) USING HASH,
FULLTEXT KEY `Index_QQ` (`QQ`),
-- 複合索引
KEY `Index_fuhe` ('QQ', `Weixin`) USING BTREE,

我一般都只用Normal, Btree兩個, 單個的和符合的都用.

1.3 外鍵

CONSTRAINT `key_tid` FOREIGN KEY (`TId`) REFERENCES `tch_teacher` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION

著句話, 看著可能有點費解, 但是看一下軟體中的界面, 就非常清楚了

別的不需要解釋了, 但是這裡有個刪除時, 更新時, 還是需要嘮叨兩句.

mysql這裡, 有四個值可供選擇.

RESTRICT -- 限制, 此限制是在更新之前.

在刪除tch_teacher數據時, 如果tch_contact還有與之對應的值, 則刪除失敗

NO ACTION -- 限制, 此限制是在更新之後. 與Restrict觸發的時間不同, 但是功能是一樣的.

CASCADE -- 級聯, 不限制刪除, 但是會同步修改或刪除.

如果tch_teacher刪除一條數據, 那麼tch_contact會同步刪除, 與他關聯的數據.

修改也是一樣, 會同步修改.

SET NULL -- 設置為空, 如果tch_teacher刪除一條數據, 那麼tch_contact會將與之關聯的那個欄位設置為null, 不是把整條數據, 只是那個欄位.

這裡, 我覺得比較實用的就是 cascade了, 同步刪除功能, 省下我不少工作呢.

 

2. 表操作

表操作又分為表結構修改和表名稱修改. 先看表結構.

建好表之後, 發現其中的列, 並不完全是我想要的, 那咋搞呢?

2.1 查詢列

show COLUMNS from tch_contact;

2.2  加列

alter table tch_contact add createby int comment '創建人';

2.3 修改列

alter table tch_contact MODIFY createby varchar(1);

2.4 減列 

alter table tch_contact drop  createby;

2.5 索引

-- 新增一個索引
create index index_tid on tch_contact2(tid) using BTREE;

alter table tch_contact2 add index index_weixin(weixin);

-- 如果要修改一個索引, mysql裡面, 只有先刪除然後重建

-- 刪除一個索引
drop index index_tid on tch_contact2;

2.6 外鍵

-- 新增一個外鍵
alter table tch_contact2 add CONSTRAINT 
`key_tid` FOREIGN KEY (`TId`) REFERENCES `tch_teacher` (`Id`) ON DELETE CASCADE ON UPDATE NO ACTION;

-- 刪除一個外鍵
alter table tch_contact2  DROP FOREIGN KEY key_tid ;

2.7 表名稱修改

rename table tch_contact to tch_contact1;

ALTER TABLE tch_contact1 RENAME tch_contact;
這兩句都是表名稱修改的語句.

3. 表刪除 -- 慎用

drop table tch_contactt;

項目中最常用的, 其實也就是上面這些了. 

 


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

-Advertisement-
Play Games
更多相關文章
  • 本文章已收錄於: AngularJS知識庫 AngularJS知識庫 分類: javascript(55) 分類: javascript(55) http://www.cnblogs.com/xiaoxie53/p/5058198.html 前面的文章介紹了很多angular自帶的指令,下麵我們看看 ...
  • Memcached 簡介、安裝、使用 Python 操作 Memcached 天生支持集群 redis 簡介、安裝、使用、實例 Python 操作 Redis String、Hash、List、Set、Sort Set 操作 管道 發佈訂閱 簡介、安裝、使用 Python 操作 Memcached ...
  • 按照規範的設計方法,一個完整的資料庫設計一般分為以下六個階段:⑴需求分析:分析用戶的需求,包括數據、功能和性能需求;⑵概念結構設計:主要採用E-R模型進行設計,包括畫E-R圖;⑶邏輯結構設計:通過將E-R圖轉換成表,實現從E-R模型到關係模型的轉換;⑷資料庫物理設計:主要是為所設計的資料庫選擇合適的 ...
  • 比如有一個表,我們需要些一個語句像SELECT OtherID, SplitData WHERE SomeID = 'abcdef-.......' , 然後就能返回分割成單獨的行。 原表: | SomeID | OtherID | Data + + + | abcdef-..... | cdef1 ...
  • MySQL 系列(三)你不知道的 視圖、觸發器、存儲過程、函數、事務、索引、語句 第一篇:MySQL 系列(一) 生產標準線上環境安裝配置案例及棘手問題解決 第二篇:MySQL 系列(二) 你不知道的資料庫操作 第三篇:MySQL 系列(三)你不知道的 視圖、觸發器、存儲過程、函數、事務、索引、語句 ...
  • MySQL 系列(一) 生產標準線上環境安裝配置案例及棘手問題解決 一、簡介 MySQL是最流行的開放源碼SQL資料庫管理系統,它是由MySQL AB公司開發、發佈並支持的。有以下特點: MySQL是一種資料庫管理系統。 MySQL是一種關聯資料庫管理系統。 MySQL軟體是一種開放源碼軟體。 My ...
  • 開篇小故事 下麵的故事都是真實的,猶如雷同純屬同類,請仔細反思。 故事1:升級硬體 客戶後臺資料庫存在性能問題,查詢特別慢,長時間語句很多。客戶因此而苦惱,咨詢了軟體廠商我該怎麼辦?軟體廠商給出的答案:升級硬體吧,現在的資源不能滿足了! 那麼客戶是什麼硬體配置呢?資料庫什麼體量呢? 答:128的CP ...
  • 隨著技術的發展,IT逐漸面臨越來越多的挑戰,尤其是數據治理方面。而九州通醫葯集團在IT建設方面不畏艱險,自主研發ERP系統、物流系統,在解決企業自身問題的同時還創新投入商業化,為同行業提供服務,樹立標桿形象。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...