MySQL的庫表詳細操作

来源:https://www.cnblogs.com/changxin7/archive/2019/09/19/11550121.html
-Advertisement-
Play Games

一 庫操作 1、創建資料庫 1.1 語法 CREATE DATABASE 資料庫名 charset utf8; 1.2 資料庫命名規則 可以由字母、數字、下劃線、@、#、$ 區分大小寫 唯一性 不能使用關鍵字如 create select 不能單獨使用數字 最長128位 基本上跟python或者js ...


一 庫操作

1、創建資料庫

    1.1 語法

      CREATE DATABASE 資料庫名 charset utf8;

    1.2 資料庫命名規則

      可以由字母、數字、下劃線、@、#、$

      區分大小寫

      唯一性

      不能使用關鍵字如 create select

      不能單獨使用數字

      最長128位

基本上跟python或者js的命名規則一樣

2、資料庫相關操作

    也是一些基本操作,和我們之前說的差不多。

1 查看資料庫
show databases;
show create database db1;
select database();

2 選擇資料庫
USE 資料庫名

3 刪除資料庫
DROP DATABASE 資料庫名;

4 修改資料庫
alter database db1 charset utf8;

  關於庫的內容,咱們就說這些吧,哈哈,有點少是吧,不是咱們的重點,來看下麵的表操作~~~

二 表操作

1、存儲引擎

    存儲引擎即表類型,mysql根據不同的表類型會有不同的處理機制,關於存儲引擎的介紹看我這篇博客:https://www.cnblogs.com/changxin7/p/11525457.html

2、表介紹

    表相當於文件,表中的一條記錄就相當於文件的一行內容,表中的一條記錄有對應的標題,稱為表的欄位

    img

    第一行的id、name2、age是欄位,,其餘的,一行內容稱為一條記錄。

3、創建表

    3.1 建表語法   

#語法:
create table 表名(
欄位名1 類型[(寬度) 約束條件],
欄位名2 類型[(寬度) 約束條件],
欄位名3 類型[(寬度) 約束條件]
);

#註意:
1. 在同一張表中,欄位名是不能相同
2. 寬度和約束條件可選、非必須,寬度指的就是欄位長度約束,例如:char(10)裡面的10
3. 欄位名和類型是必須的
mysql> create database db1 charset utf8;

mysql> use db1;

mysql> create table t1(  
    -> id int, 
    -> name varchar(50),
    -> sex enum('male','female'),
    -> age int(3)
    -> );

mysql> show tables; #查看db1庫下所有表名

mysql> desc t1;
+-------+-----------------------+------+-----+---------+-------+
| Field | Type                  | Null | Key | Default | Extra |
+-------+-----------------------+------+-----+---------+-------+
| id    | int(11)               | YES  |     | NULL    |       |
| name  | varchar(50)           | YES  |     | NULL    |       |
| sex   | enum('male','female') | YES  |     | NULL    |       |
| age   | int(3)                | YES  |     | NULL    |       |
+-------+-----------------------+------+-----+---------+-------+

mysql> select id,name,sex,age from t1;
Empty set (0.00 sec)

mysql> select * from t1;
Empty set (0.00 sec)

mysql> select id,name from t1;
Empty set (0.00 sec)
mysql> insert into t1 values
    -> (1,'chao',18,'male'),
    -> (2,'sb',81,'female')
    -> ;
mysql> select * from t1;
+------+------+------+--------+
| id   | name | age  | sex    |
+------+------+------+--------+
|    1 | chao |   18 | male   |
|    2 | sb |   81 | female |
+------+------+------+--------+



mysql> insert into t1(id) values 
    -> (3),
    -> (4);
mysql> select * from t1;
+------+------+------+--------+
| id   | name | age  | sex    |
+------+------+------+--------+
|    1 | chao |   18 | male   |
|    2 | sb |   81 | female |
|    3 | NULL | NULL | NULL   |
|    4 | NULL | NULL | NULL   |
+------+------+------+--------+

4、查看表結構

mysql> describe t1; #查看表結構,可簡寫為:desc 表名
+-------+-----------------------+------+-----+---------+-------+
| Field | Type                  | Null | Key | Default | Extra |
+-------+-----------------------+------+-----+---------+-------+
| id    | int(11)               | YES  |     | NULL    |       |
| name  | varchar(50)           | YES  |     | NULL    |       |
| sex   | enum('male','female') | YES  |     | NULL    |       |
| age   | int(3)                | YES  |     | NULL    |       |
+-------+-----------------------+------+-----+---------+-------+


mysql> show create table t1\G; #查看表詳細結構,可加\G

5、MySQL的基礎數據類型

    關於數據類型,看我這篇博客:https://www.cnblogs.com/changxin7/p/11528101.html

6、表的完整性約束

    關於表的完整性約束,看我這篇博客:https://www.cnblogs.com/changxin7/p/11535976.html

    

7、修改表 alter table

    下麵的內容就不帶著大家演示了,簡單帶大家看一下,都是固定的語法格式,按照這個寫就行了,毫無邏輯可言,所以不做太多的演示,大家自己回去練一下:

    

語法:
1. 修改表名
      ALTER TABLE 表名 
                          RENAME 新表名;

2. 增加欄位
      ALTER TABLE 表名
                          ADD 欄位名  數據類型 [完整性約束條件…], #註意這裡可以通過逗號來分割,一下添加多個約束條件
                          ADD 欄位名  數據類型 [完整性約束條件…];
      ALTER TABLE 表名
                          ADD 欄位名  數據類型 [完整性約束條件…]  FIRST; #添加這個欄位的時候,把它放到第一個欄位位置去。
      ALTER TABLE 表名
                          ADD 欄位名  數據類型 [完整性約束條件…]  AFTER 欄位名;#after是放到後的這個欄位的後面去了,我們通過一個first和一個after就可以將新添加的欄位放到表的任意欄位位置了。
                            
3. 刪除欄位
      ALTER TABLE 表名 
                          DROP 欄位名;

4. 修改欄位
      ALTER TABLE 表名 
                          MODIFY  欄位名 數據類型 [完整性約束條件…];
      ALTER TABLE 表名 
                          CHANGE 舊欄位名 新欄位名 舊數據類型 [完整性約束條件…];  #change比modify還多了個改名字的功能,這一句是只改了一個欄位名
      ALTER TABLE 表名 
                          CHANGE 舊欄位名 新欄位名 新數據類型 [完整性約束條件…];#這一句除了改了欄位名,還改了數據類型、完整性約束等等的內容

    給一個欄位添加外鍵屬性的語句:alter table 表2名 add foreign key(表2的一個欄位) references 表1名(表1的一個欄位);

    註意一點:在mysql裡面表名是不區分大小寫的,如果你將一個名為t1的(小寫的t1)改名為一個T1(大寫的T1),是完全沒用的,因為在資料庫裡面表名都是小寫的。

示例:
1. 修改存儲引擎
mysql> alter table service 
    -> engine=innodb;

2. 添加欄位
mysql> alter table student10
    -> add name varchar(20) not null,
    -> add age int(3) not null default 22;
    
mysql> alter table student10
    -> add stu_num varchar(10) not null after name;                //添加name欄位之後

mysql> alter table student10                        
    -> add sex enum('male','female') default 'male' first;          //添加到最前面

3. 刪除欄位
mysql> alter table student10
    -> drop sex;

mysql> alter table service
    -> drop mac;

4. 修改欄位類型modify
mysql> alter table student10
    -> modify age int(3);
mysql> alter table student10
    -> modify id int(11) not null primary key auto_increment;    //修改為主鍵

5. 增加約束(針對已有的主鍵增加auto_increment)
mysql> alter table student10 modify id int(11) not null primary key auto_increment;
ERROR 1068 (42000): Multiple primary key defined

mysql> alter table student10 modify id int(11) not null auto_increment;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

6. 對已經存在的表增加複合主鍵
mysql> alter table service2
    -> add primary key(host_ip,port);        

7. 增加主鍵
mysql> alter table student1
    -> modify name varchar(10) not null primary key;

8. 增加主鍵和自動增長
mysql> alter table student1
    -> modify id int not null primary key auto_increment;

9. 刪除主鍵
a. 刪除自增約束
mysql> alter table student10 modify id int(11) not null; 

b. 刪除主鍵
mysql> alter table student10                                 
    -> drop primary key;

    img

8、複製表

    

    我們通過select查詢出來的結果既有表結構又有表記錄(數據),我們在重新創建一個和它一樣的表的時候,之前用create還需要自己將表結構寫好,然後把那些數據插入到新建的表中,很麻煩,那麼我們就可以直接使用mysql提供的複製表的功能:(複製表用的很少昂,瞭解一下就行了)

    語法:複製表結構+記錄 (key不會複製: 主鍵、外鍵和索引)
    mysql> create table new_service select * from service;#這句話的意思是你從service表裡面查詢出來的數據不要在屏幕上列印了,你直接給我的新表new_service

    我們自己寫個例子:

      img

      雖然我們不能複製key,但是我們可以給他加回去啊:alter table xxx

      img

    只複製表結構,不要數據
    mysql> select * from service where 1=2; //條件為假,查不到任何記錄,所以我們可以通過它來只複製表結構,看下麵一句
    Empty set (0.00 sec)
    mysql> create table new1_service select * from service where 1=2; #篩選數據的條件為假,那麼只拿到了結構,並沒有查詢出任何的數據,所以做到了只複製表結構
    Query OK, 0 rows affected (0.00 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> create table t4 like employees; #獲取用like可以達到這個效果


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

-Advertisement-
Play Games
更多相關文章
  • 這三個不同的數據模型之間既相互獨立,又存在著關聯。從現實世界到概念 模型的轉換是由資料庫設計人員完成的;從概念模型到邏輯模型的轉換可以 由資料庫設計人員完成,也可以用資料庫設計工具協助設計人員完成;從邏 輯模型到物理模型的轉換主要是由資料庫管理系統完成的。 ...
  • [20190918]shrink space與ORA-08102錯誤.txt1.環境:SCOTT@test01p> @ ver1PORT_STRING VERSION BANNER CON_ID IBMPC/WIN_NT64-9.1.0 12.2.0.1.0 Oracle Database 12c ...
  • 1、將命令寫在文件中 數據量比較大的話,建議用程式去生成文件。例如: 生成的文件可能是這樣的: 接下來,命令行執行 這個例子比較簡單,可以這麼做,如果命令比較多的話可以寫成shell腳本 2、grep命令 ...
  • 記錄工作中遇到的問題,分享出來: 原博客地址:https://blog.csdn.net/weixin_40782680/article/details/85038281 今天遇到一個比較鬱悶的問題,如下圖: 點擊庫存或者點擊銷售,查詢數據很慢,有的將近幾十秒,查詢數據用的是存儲過程,在資料庫中執行 ...
  • sqlserver存儲過程入門 1. 輸入/輸出參數定義 @object_name varchar(50) //定義一個varchar類型的輸入參數 @object_index int @isUpdate int =0 output //定義一個輸出參數 2.游標使用步驟 1、定義游標 DECLAR ...
  • Windows下Redis安裝配置和使用註意事項 一:下載 下載地址: https://github.com/microsoftarchive/redis/releases 文件介紹: 本文以3.2.100為例 Redis-x64-3.2.100.msi是在windows下,最簡單的安裝文件,方便, ...
  • Redis 事務 == [toc] Redis操作時支持事務的。事務具有原子性atomic,包含在事務中的操作要麼都執行成功,要麼都執行失敗。但是redis不支持回滾,但是可以在測試開發環節避免錯誤操作。可以說原子性上是半支持的,看後面原因。 很多時候我們需要進行事務操作。 翻譯官檔:https:/ ...
  • 本來這一節想寫Hadoop的分散式高可用環境的搭建,寫到一半,發現還是有必要先介紹一下ZooKeeper這個東西。 ZooKeeper理念介紹 ZooKeeper是為分散式應用來提供協同服務的,而且ZooKeeper本身也是分散式的,由分佈在至少三台機器上,這幾台機器形成一個Quorum,就像一個劇 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...