SQL命令一:SQL 基礎操作與建表約束

目錄

引言

一、SQL 基礎命令

(一)數據庫相關操作

(二)表格相關操作

(三)MySQL 常用數據類型

二、增刪改查(CRUD)操作

(一)增加數據

(二)刪除數據

(三)修改數據

(四)查詢數據

三、建表約束

(一)非空約束(NK,not null)

(二)唯一約束(UK,unique)

(三)主鍵約束(PK,primary key)

(四)自動遞增

(五)聯合主鍵

(六)外鍵約束(FK,foreign key)

總結


引言

????????在當今數字化時代,數據處理和管理變得至關重要。SQL(Structured Query Language,結構化查詢語言)作為操作關系型數據庫的核心工具,掌握它的基本命令和建表約束是邁向數據處理領域的關鍵一步。

一、SQL 基礎命令

(一)數據庫相關操作

  1. 登錄 MySQL
    要與 MySQL 數據庫進行交互,首先得登錄到數據庫系統。使用命令?mysql -u root -p?登錄,其中?-u?后面跟著用戶名,這里是?root-p?表示需要輸入密碼。輸入密碼后回車,就能成功登錄。
  2. 查看所有數據庫
    登錄成功后,使用?show databases;?命令可以查看當前 MySQL 服務器上的所有數據庫。例如,執行該命令后,可能會看到?information_schemamysqlperformance_schema?等系統自帶數據庫,以及你自己創建的數據庫。
  3. 使用數據庫
    若要對某個特定數據庫進行操作,需先指定使用該數據庫。使用?use +數據庫名稱;?語句,比如?use testdb;,就可以切換到名為?testdb?的數據庫,后續操作都將在這個數據庫中進行。
  4. 刪除數據庫
    當某個數據庫不再需要時,可以使用?drop database +數據庫名稱;?命令將其刪除。例如,drop database olddb;?會永久刪除?olddb?數據庫及其所有數據,此操作需謹慎執行。
  5. 創建數據庫
    使用?create database +數據庫名稱;?命令創建新的數據庫。例如,create database newdb;?會在服務器上創建一個名為?newdb?的數據庫。還可以通過?show create database +數據庫名稱;?查看數據庫的詳細創建信息,包括編碼設置等。比如?show create database newdb;?可能會顯示如下結果:
+----------+----------------------------------------------------------------+
| Database | Create Database                                                |
+----------+----------------------------------------------------------------+
| newdb    | CREATE DATABASE `newdb` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+----------------------------------------------------------------+

(二)表格相關操作

  1. 查看所有表格
    在選定的數據庫中,使用?show tables;?命令可以查看該數據庫下的所有表格。假設在?testdb?數據庫中已經創建了?users?和?orders?表,執行該命令就會顯示這兩個表名。
  2. 創建表格
    創建表格使用?create table +表名+(字段1 類型(長度),字段2 類型(長度),字段3 類型(長度))?語法。例如,創建一個?users?表,包含姓名、年齡和地址信息:
create table users (name varchar(10),age int(3),address varchar(50)
);
  1. 刪除表格
    若要刪除某個表格,使用?drop table +表名?命令。例如,drop table users;?會刪除?users?表及其所有數據。
  2. 修改表結構
    • 刪除列:使用?alter table t_user drop column name;?可以刪除?t_user?表中的?name?列。
    • 添加列alter table t_user add column name varchar(10);?會在?t_user?表中添加一個名為?name?的?varchar(10)?類型的列。
    • 修改列alter table t_user change column name username varchar(15);?會將?t_user?表中的?name?列名改為?username,并將其數據類型修改為?varchar(15)
  3. 查看表格詳細信息
    使用?desc +表名?命令可以查看表格的詳細結構,包括字段名、數據類型、是否允許為空等信息。例如,desc users;?可能會顯示如下結果:
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name    | varchar(10) | YES  |     | NULL    |       |
| age     | int(3)      | YES  |     | NULL    |       |
| address | varchar(50) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+

(三)MySQL 常用數據類型

  • 整數(int):用于存儲整數數值,如年齡、數量等。例如,age int(3)?可以存儲三位整數的年齡信息。
  • 小數(double):適用于需要高精度小數的場景,如商品價格。例如,price double(10, 2)?可以存儲最多十位數字,其中小數部分占兩位的價格信息。
  • 字符串(varchar):可存儲可變長度的文本,如姓名、地址等。例如,name varchar(10)?可以存儲最長為 10 個字符的姓名。
  • 日期(datetime):用于記錄日期和時間信息,如訂單創建時間、用戶注冊時間等。例如,create_time datetime?可以存儲具體的日期和時間。

二、增刪改查(CRUD)操作

(一)增加數據

  1. 方式一:添加所有字段
    可以使用?insert into 表格名稱 values (字段1,字段2,字段3)?或?insert into 表格名稱(全部字段)values (字段1,字段2,字段3);?語句插入數據。例如,向?users?表插入數據:
insert into users values ('張三', 20, '北京市');
insert into users (name, age, address) values ('李四', 22, '上海市');
  1. 方式二:挑一部分字段添加
    使用?insert into t_user (age,address) value (12,"beijing")?這種方式,只插入部分字段的數據。例如:
insert into users (name, age) values ('王五', 25);

(二)刪除數據

  1. 物理刪除:使用?delete from 表格名稱 where 條件?語句。例如,刪除?users?表中地址為 “北京市” 的記錄:
delete from users where address = '北京市';

若要清空表格所有數據,去掉?where?條件,即?delete from users;
2.?邏輯刪除:通常通過?update?語句實現。例如,在?users?表中添加一個?is_deleted?字段,將其值設為 1 表示已刪除:

alter table users add column is_deleted tinyint(1) default 0;
update users set is_deleted = 1 where age = 22;

(三)修改數據

使用?update 表格名稱 set 字段=修改的值 where 條件?語句。例如,將?users?表中姓名為 “王五” 的年齡修改為 26:

update users set age = 26 where name = '王五';

若要修改所有記錄,去掉?where?條件,如?update users set age = age + 1;?會將所有用戶的年齡加 1。

(四)查詢數據

  • 查詢所有數據:使用?select * from +表名?語句,例如?select * from users;?會返回?users?表的所有記錄。
  • 查詢特定字段:使用?select 字段1, 字段2 from 表名?語句,如?select name, age from users;?只查詢姓名和年齡字段。
  • 使用別名:使用?select 字段1 別名, 字段2 別名 from 表名?語句,例如?select name 姓名, age 年齡 from users;?會將查詢結果的列名顯示為 “姓名” 和 “年齡”。
  • 去重查詢:使用?distinct?關鍵字,如?select distinct address from users;?會查詢出?users?表中不重復的地址。

三、建表約束

(一)非空約束(NK,not null)

非空約束用于確保字段不能為空值。創建表時,在字段定義后添加?not null。例如:

create table admins (id int(5),adminname varchar(10) not null,password varchar(20)
);

當嘗試向?adminname?字段插入空值時,會報錯?ERROR 1364(HY000):Field "adminname" doesn't have a default value。創建表后,也可以使用?alter table student1 change age age int( 3 ) not null;?來添加非空約束。

(二)唯一約束(UK,unique)

唯一約束保證字段值的唯一性。創建表時,可以將字段定義為?unique,例如:

create table persons (id int(5) unique,adminname varchar(10) not null,password varchar(20)
);

也可以通過指定名稱創建唯一約束:

create table cats (id int(5),name varchar(10),password varchar(20),constraint uk_name unique(name)
);

創建表后,使用?alter table student1 change age age int( 3 ) Unique;?可添加唯一約束。

(三)主鍵約束(PK,primary key)

主鍵約束兼具非空和唯一的特性,是表中記錄的唯一標識,一般將?id?編號設置為主鍵,且一張表至少有一個主鍵。例如:

create table cats (id int(5) primary key,name varchar(10),password varchar(20)
);

或者指定主鍵名稱:

create table cats (id int(5),name varchar(10),password varchar(20),constraint pk_name primary key(id)
);

(四)自動遞增

當主鍵為?int?類型時,常設置為自動遞增。在 MySQL 中,創表時追加?AUTO_INCREMENT?即可實現。例如:

create table persons (id int(5) primary key AUTO_INCREMENT,name varchar(10),password varchar(20)
);

插入數據時無需指定?id,它會自動遞增。如果刪除了?id?為 3 的記錄,再插入新記錄時,id?會自動遞增到 4。

(五)聯合主鍵

當需要兩個或兩個以上字段共同約束非空和唯一時,可使用聯合主鍵。例如:

create table cats (id int(5),name varchar(10),password varchar(20),constraint pk_name primary key(id, name)
);

只要?id?和?name?的組合不重復即可。

(六)外鍵約束(FK,foreign key)

外鍵約束用于建立表與表之間的關系,常見于一對多或多對多關系。例如,有?departments?表和?employees?表,員工屬于某個部門,通過外鍵建立關聯:

create table departments (department_id int(11) primary key,department_name varchar(50)
);create table employees (employee_id int(11) primary key,employee_name varchar(50),department_id int(11),constraint fk_department_id foreign key(department_id) references departments(department_id)
);

總結

????????通過本文,我們學習了 SQL 的基礎命令,包括數據庫和表格的操作,以及數據的增刪改查。同時,了解了建表約束的各種類型及其作用,這些約束能夠確保數據的完整性和一致性。掌握這些知識是進一步學習 SQL 高級應用的基礎。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80932.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80932.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80932.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows 桌面個性高效組件工具

軟件介紹 Widgets 這款基于 Vue3 構建的開源 Windows 桌面小部件工具超實用。 其多樣化組件庫涵蓋超 20 種,從倒計時、打工進度等實用工具,到抖音熱榜等實時資訊組件應有盡有,各組件獨立運行,滿足多場景需求。 高度自定義布局支持…

PCB入門指南:從電阻到常見電路的全解析

知識點1【電阻】 常見的是 色環電阻和貼片電阻 1、色環電阻 色環電阻,早期是碳膜電阻,精度不是很高,一般是4個色環,紅 橙 黃 綠 藍 紫 灰 白 黑,每個顏色代表一個阻值 后期是金屬膜電阻,5個色環&#x…

論文閱讀的三個步驟

論文閱讀的三個步驟 方法說明鏈接:https://www.academia.edu/4907403/How_to_Read_a_Paper 方法框架如下

Centos 7 ssh連接速度慢(耗時20秒+)

作系統:centos7.9 現象突然間通過 ssh、xshell等客戶端工具連接時,連接速度緩慢,需要耗時20秒左右才能連接上 排查思路: 1. 查看操作系統日志 從系統日志里看到較多的錯誤,這個可能是一個bug (現象類似&a…

通過腳本自動檢查項目中全局的中文

現在越來越多的公司在做出海項目,出海項目首先要解決的就是語言國際化的問題,有很多如l18n、l10n的工具可以用,這些工具可以提供解決方案,但是不能約束開發者的開發行為。開發者仍然可能在代碼中存留沒有做過國際化處理的部分&…

軟件分析師-第三遍-章節導圖-13/14

系統設計,按步驟分:概要設計、詳細設計。另一種分類方式:按設計內容和設計方法分。設計內容:處理流程、輸入/輸出原型、人機交互。設計方法:結構化、面向對象、設計模式。 軟件實現&測試,分為實現、測…

通過全局交叉注意力機制和距離感知訓練從多模態數據中識別橋本氏甲狀腺炎|文獻速遞-深度學習醫療AI最新文獻

Title 題目 Hashimoto’s thyroiditis recognition from multi-modal data via globalcross-attention and distance-aware training 通過全局交叉注意力機制和距離感知訓練從多模態數據中識別橋本氏甲狀腺炎 01 文獻速遞介紹 橋本氏甲狀腺炎(HT)&a…

刀客doc:小紅書商業技術負責人蒼響離職

根據大廠日爆的爆料,小紅書商業化再度迎來高層人事變動,原商業平臺技術負責人蒼響(薯名),職級L2,已于本月正式離職,其下屬團隊現由電商業務負責人接管。 根據刀客doc獲得的資料,蒼響…

Manus AI多語言手寫識別技術全解析:從模型架構到實戰部署

簡介 Manus AI作為當前多語言手寫識別領域的領軍技術,其核心創新在于融合三維卷積網絡、動態特征融合引擎和混合解碼系統,實現了對112種語言的98.7%識別準確率和8ms延遲的實時處理能力。本文將深入探討Manus AI的架構設計、特征提取方法、數據預處理策略…

華為云Astro大屏從iotda影子設備抽取數據做設備運行狀態的大屏實施步驟

目錄 背景與意義 1. 準備階段 2. IoTDA 開放影子查詢API 3. Astro輕應用創建連接器 4. Astro大屏設計界面 5. 數據綁定與交互邏輯 6. 發布與測試 小結(流程復盤) 背景與意義 隨著物聯網技術的快速發展,越來越多的設備接入云端&#x…

為什么要學習《易經》?

《易經》精華解讀:變易之道與人生智慧 《易經》(《周易》)是中國最古老的經典之一,被譽為“群經之首,大道之源”。它不僅是占卜之書,更是一部哲學經典,揭示了宇宙運行的規律和人生處世的智慧。…

逆傳播AIGEO營銷:破局生成式搜索時代,讓AI成為品牌代言人!

當GS(Generative Search生成式搜索)成為用戶的新“搜索入口”,你的品牌還在進行傳統軟文發布嗎? Gartner分析師預測"到2026年70%企業將把生成式AI整合進核心營銷系統",傳統SEO的正被AI搜索徹底重構。用戶的搜索行為發生史詩級轉變&#xff0…

WPF(Windows Presentation Foundation)的內容模型

WPF(Windows Presentation Foundation)的內容模型(Content Model)是其核心架構之一,定義了UI元素如何組織和呈現內容。以下是WPF內容模型的系統化解析: 1. 內容模型基礎概念 WPF通過邏輯樹和可視化樹管理內…

52.[前端開發-JS實戰框架應用]Day03-AJAX-插件開發-備課項目實戰-Lodash

常用JavaScript庫 1 認識前端工具庫 前端工具類庫 2 Lodash vs underscore underscore庫 VS Lodash庫 Lodash庫 的安裝 手寫精簡版的Lodash ;(function(g) {function Lodash() {}// 添加類方法Lodash.VERSION 1.0.0Lodash.join function(arr, separater) {// todo ......…

前端Ui設計工具

PS 稿、藍湖、Sketch 和 Figma 前端 UI 設計工具的對比分析 PS 稿(Adobe Photoshop) 提供精準設計細節:PS 稿能讓前端更精準地理解頁面布局、元素尺寸、顏色等,通過精確測量和查看信息面板,把握設計元素的空間關系、…

映射關系5

明白!🚀 你要我 繼續擴展,在這套 C98 代碼里加一個功能: 根據完整的5位ID,反查出對應的路徑。 OK,我直接接著上面那版來,給你補充 getPathFromId 方法,并且保持整體風格統一&#…

編譯原理:由淺入深從語法樹到文法類型

文法與語言基礎:從語法樹到文法類型 文法(Grammar)和語言(Language)是計算機科學和語言學中解析和理解語言結構的核心概念。無論是編程語言的編譯器設計,還是自然語言處理(NLP)中的…

第十三步:vue

Vue 1、上手 1、安裝 使用命令:npm create vuelatestvue文件后綴為.vueconst app createApp(App):初始化根組件app.mount("#app"):掛載根組件到頁面 2、文件 script標簽:編寫jstemplate標簽:編寫htmls…

Pytest-mark使用詳解(跳過、標記、參數 化)

1.前言 在工作中我們經常使用pytest.mark.XXXX進行裝飾器修飾,后面的XXX的不同,在pytest中有不同的作 用,其整體使用相對復雜,我們單獨將其抽取出來做詳細的講解。 2.pytest.mark.skip()/skipif()跳過用例 import pytest #無條…

基于 Spring Boot 的井字棋游戲開發與實現

目錄 引言 項目概述 項目搭建 1. 環境準備 2. 創建 Spring Boot 項目 3. 項目結構 代碼實現 1. DemoApplication.java 2. TicTacToeController.java 3. pom.xml 電腦落子策略 - Minimax 算法 findBestMove 方法 minimax 方法 運行游戲 總結 引言 在軟件開發領域&…