最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL表和列、增刪改查語句及數(shù)據(jù)類型約束示例詳解

 更新時(shí)間:2026年02月11日 08:28:06   作者:咩咩不吃草  
MySQL數(shù)據(jù)庫(kù)的增刪改查操作,這可是每個(gè)軟件測(cè)試工程師的必備技能,下面這篇文章主要介紹了MySQL表和列、增刪改查語句及數(shù)據(jù)類型約束的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、數(shù)據(jù)庫(kù)、表和列的基本概念

1.1 數(shù)據(jù)庫(kù)的概念與用途

數(shù)據(jù)庫(kù)是存儲(chǔ)在計(jì)算機(jī)上的有組織的數(shù)據(jù)集合,核心目的是實(shí)現(xiàn)數(shù)據(jù)的高效存儲(chǔ)、管理、訪問與更新,其主要用途體現(xiàn)在:

  • 數(shù)據(jù)存儲(chǔ)和管理:可存儲(chǔ)結(jié)構(gòu)化(表格)與非結(jié)構(gòu)化(文本、圖片、視頻)等多種類型的海量數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的有序組織;

  • 數(shù)據(jù)訪問:支持查詢、過濾、排序等高效操作,讓用戶快速檢索所需數(shù)據(jù);

  • 數(shù)據(jù)共享:允許多個(gè)用戶同時(shí)訪問,實(shí)現(xiàn)團(tuán)隊(duì)間的數(shù)據(jù)協(xié)作與共享;

  • 數(shù)據(jù)分析和挖掘:提供統(tǒng)計(jì)分析、數(shù)據(jù)挖掘等能力,助力用戶從數(shù)據(jù)中提取價(jià)值,為決策提供支撐。

1.2 MySQL的層級(jí)關(guān)系與使用步驟

MySQL中存在清晰的層級(jí)關(guān)系:MySQL數(shù)據(jù)庫(kù)服務(wù)器 → 數(shù)據(jù)庫(kù)(DB) → 表 → 列,且層級(jí)間均為一對(duì)多關(guān)系,一個(gè)服務(wù)器可創(chuàng)建多個(gè)數(shù)據(jù)庫(kù),一個(gè)數(shù)據(jù)庫(kù)可包含多張表,一張表由多個(gè)列(字段)組成。

使用MySQL的標(biāo)準(zhǔn)步驟為:登錄MySQL → 創(chuàng)建數(shù)據(jù)庫(kù) → 切換到指定數(shù)據(jù)庫(kù) → 創(chuàng)建表 → 使用表,所有表的操作都需先確定所屬的數(shù)據(jù)庫(kù),這是MySQL操作的基礎(chǔ)原則。

二、數(shù)據(jù)庫(kù)與表的基礎(chǔ)操作

2.1 數(shù)據(jù)庫(kù)的創(chuàng)建、查看與刪除

(1)創(chuàng)建數(shù)據(jù)庫(kù)

-- 基礎(chǔ)創(chuàng)建
CREATE DATABASE [IF NOT EXISTS] 數(shù)據(jù)庫(kù)名;
-- 指定字符集(推薦)
CREATE DATABASE [IF NOT EXISTS] 數(shù)據(jù)庫(kù)名 DEFAULT CHARSET utf8;

(2)查看數(shù)據(jù)庫(kù)

-- 查看所有數(shù)據(jù)庫(kù)
SHOW DATABASES;
-- 查看指定數(shù)據(jù)庫(kù)的創(chuàng)建語句(含字符集等配置)
SHOW CREATE DATABASE 數(shù)據(jù)庫(kù)名;

(3)刪除數(shù)據(jù)庫(kù)

-- IF EXISTS避免刪除不存在的數(shù)據(jù)庫(kù)時(shí)報(bào)錯(cuò)
DROP DATABASE [IF EXISTS] 數(shù)據(jù)庫(kù)名;

2.2 數(shù)據(jù)庫(kù)的切換與當(dāng)前庫(kù)查看

-- 切換到指定數(shù)據(jù)庫(kù)(后續(xù)表操作均基于此庫(kù))
USE 數(shù)據(jù)庫(kù)名;
-- 查看當(dāng)前正在使用的數(shù)據(jù)庫(kù)
SELECT database();

2.3 表的創(chuàng)建、修改與刪除

(1)表的創(chuàng)建

創(chuàng)建表使用CREATE TABLE語句,需指定表名、列名、數(shù)據(jù)類型及約束,IF NOT EXISTS可選,用于避免重復(fù)創(chuàng)建。核心語法及示例:

CREATE TABLE [IF NOT EXISTS] 表名(
  列名1 數(shù)據(jù)類型 [約束],
  列名2 數(shù)據(jù)類型 [約束],
  ...
);

-- 學(xué)生表創(chuàng)建示例
CREATE TABLE [IF NOT EXISTS]  students(
  id VARCHAR(255) PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  age INT,
  gender VARCHAR(255),
  clazz VARCHAR(255)
);

補(bǔ)充:可通過LOAD DATA加載本地?cái)?shù)據(jù)到表中,示例:

LOAD DATA local INFILE 'students.txt' INTO TABLE students FIELDS TERMINATED BY ',' ;

(2)表的修改

表的修改通過ALTER TABLE語句實(shí)現(xiàn),支持追加列、修改列屬性、重命名列/表、修改字符集、刪除列等操作,核心用法:

-- 增加列
alter table students add length float;
-- 修改列類型/屬性
alter table students modify length int not null;
-- 修改表名
rename table students to student;
-- 修改列名
alter table  student change id sid varchar(255);
-- 修改表的字符集
alter table student character set utf8;
-- 刪除列
alter table students drop length;

(3)表的刪除

-- IF NOT EXISTS避免刪除不存在的表時(shí)報(bào)錯(cuò)
DROP TABLE [IF NOT EXISTS ] students;

三、數(shù)據(jù)類型和約束

3.1 常見數(shù)據(jù)類型

MySQL的數(shù)據(jù)類型豐富,可滿足不同業(yè)務(wù)的數(shù)據(jù)存儲(chǔ)需求,核心分為數(shù)值類型、字符串類型、日期時(shí)間類型、二進(jìn)制類型、枚舉類型、集合類型六大類,重點(diǎn)常用類型如下:

(1)數(shù)值類型

適用于存儲(chǔ)數(shù)字類數(shù)據(jù),包含整數(shù)和浮點(diǎn)數(shù),不同類型的存儲(chǔ)大小、取值范圍不同,需根據(jù)業(yè)務(wù)場(chǎng)景選擇:

類型

大小

范圍(有符號(hào))

范圍(無符號(hào))

用途

TINYINT

1 Bytes

(-128,127)

(0,255)

小整數(shù)值

SMALLINT

2 Bytes

(-32768,32767)

(0,65535)

大整數(shù)值

MEDIUMINT

3 Bytes

(-8388608,8388607)

(0,16777215)

大整數(shù)值

INT/INTEGER

4 Bytes

(-2147483648,2147483647)

(0,4294967295)

常用整數(shù)值(ID、年齡等)

BIGINT

8 Bytes

(-9223372036854775808,9223372036854775807)

(0,18446744073709551615)

極大整數(shù)值

FLOAT

4 Bytes

(-3.402823466E+38,-1.175494351E-38)、0、(1.175494351E-38,3.402823466351E+38)

0、(1.175494351E-38,3.402823466E+38)

單精度浮點(diǎn)數(shù)值

DOUBLE

8 Bytes

(-1.7976931348623157E+308,-2.2250738585072014E-308)、0、(2.2250738585072014E-308,1.7976931348623157E+308)

0、(2.2250738585072014E-308,1.7976931348623157E+308)

雙精度浮點(diǎn)數(shù)值

DECIMAL(M,D)

M+2/D+2

依賴M和D的值

依賴M和D的值

高精度小數(shù)值(價(jià)格、金額等)

(2)字符串類型

適用于存儲(chǔ)文本類數(shù)據(jù),TEXT系列適用于長(zhǎng)文本存儲(chǔ):

類型

大小

用途

CHAR

0-255 bytes

定長(zhǎng)字符串(性別、狀態(tài)等短固定長(zhǎng)度數(shù)據(jù))

VARCHAR

0-65535 bytes

變長(zhǎng)字符串(姓名、郵箱等長(zhǎng)度不固定數(shù)據(jù))

TINYTEXT

0-255 bytes

短文本字符串

TEXT

0-65535 bytes

長(zhǎng)文本數(shù)據(jù)(備注、詳情等)

MEDIUMTEXT

0-16777215 bytes

中等長(zhǎng)度文本數(shù)據(jù)

LONGTEXT

0-4294967295 bytes

極大文本數(shù)據(jù)

補(bǔ)充:UTF-8編碼下一個(gè)漢字占3個(gè)字節(jié),GBK編碼下一個(gè)漢字占2個(gè)字節(jié),定義字符串長(zhǎng)度時(shí)需考慮編碼規(guī)則。

(3)日期和時(shí)間類型

適用于存儲(chǔ)時(shí)間相關(guān)數(shù)據(jù),不同類型對(duì)應(yīng)不同的時(shí)間存儲(chǔ)粒度:

類型

大小

范圍

格式

用途

DATE

3 bytes

1000-01-01/9999-12-31

YYYY-MM-DD

僅存儲(chǔ)日期(生日、創(chuàng)建日期等)

TIME

3 bytes

-838:59:59/838:59:59

HH:MM:SS

時(shí)間值或持續(xù)時(shí)間

YEAR

1 byte

1901/2155

YYYY

年份值

DATETIME

8 bytes

1000-01-01 00:00:00/9999-12-31 23:59:59

YYYY-MM-DD hh:mm:ss

混合日期和時(shí)間值

TIMESTAMP

4 bytes

1970-01-01 00:00:01 UTC/2038-01-19 03:14:07 UTC

YYYY-MM-DD hh:mm:ss

時(shí)間戳(自動(dòng)更新時(shí)間優(yōu)選)

3.2 常用約束規(guī)則

約束是對(duì)表中列數(shù)據(jù)的強(qiáng)制校驗(yàn)規(guī)則,用于保證數(shù)據(jù)的規(guī)范性、完整性和唯一性,核心約束類型及作用如下:

  • 主鍵約束(PRIMARY KEY):唯一標(biāo)識(shí)表中的每一行數(shù)據(jù),主鍵列默認(rèn)非空且唯一,可使用單列或多列組合作為一個(gè)主鍵;

  • 唯一約束(UNIQUE):保證列中的所有值唯一,允許包含空值,一個(gè)表可定義多個(gè)唯一約束;

  • 外鍵約束(FOREIGN KEY):相同的屬性列,定義表與表之間的關(guān)聯(lián)關(guān)系,保證引用完整性(如訂單表的產(chǎn)品ID關(guān)聯(lián)產(chǎn)品表的產(chǎn)品ID);

  • 非空約束(NOT NULL):確保列中不包含空值,插入/修改數(shù)據(jù)時(shí)必須為該列賦值;

  • 默認(rèn)值約束(DEFAULT):插入新行時(shí),若未指定該列值,則自動(dòng)使用默認(rèn)值;

  • 檢查約束(CHECK):確保列中的值滿足特定條件(如年齡≥18)。

3.3 特殊屬性:AUTO_INCREMENT

這是MySQL特有的屬性,僅適用于INT、BIGINT等整型列,通常與主鍵約束配合使用,實(shí)現(xiàn)列值的自動(dòng)遞增,每次插入新行時(shí),該列會(huì)自動(dòng)生成唯一值,無需手動(dòng)賦值,是創(chuàng)建自增ID的核心屬性,示例:

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT
);

3.4 數(shù)據(jù)類型+約束綜合建表示例

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  email VARCHAR(100) UNIQUE,
  password VARCHAR(100) NOT NULL,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  age INT CHECK(age >= 18),
  address TEXT,
  role ENUM('admin', 'user') DEFAULT 'user'
);

枚舉類型(ENUM)

  • 語法格式字段名 ENUM('值1', '值2', ..., '值n')
  • 作用:限制該字段只能存儲(chǔ)枚舉列表中指定的值(多選一),無法插入列表外的任何內(nèi)容,強(qiáng)制數(shù)據(jù)規(guī)范性。

四、SQL語言基礎(chǔ)

4.1 SQL語言簡(jiǎn)介

SQL的核心功能分為四大類:查詢、操縱、定義、控制關(guān)系型數(shù)據(jù)庫(kù),對(duì)應(yīng)的語言分類為DQL、DML、DDL、DCL,是MySQL操作的核心語法體系。

4.2 SQL語言四大分類

SQL按功能可分為四大類,各類別的核心作用、關(guān)鍵字及典型操作不同,是掌握SQL的基礎(chǔ)框架,具體如下:

分類

核心作用

核心關(guān)鍵字

典型操作

DDL(數(shù)據(jù)定義語言)

定義/修改/刪除數(shù)據(jù)庫(kù)對(duì)象(表、索引、視圖等)的結(jié)構(gòu)

CREATE、ALTER、DROP、RENAME、TRUNCATE

建庫(kù)、建表、修改表結(jié)構(gòu)、刪表

DML(數(shù)據(jù)操作語言)

增/刪/改數(shù)據(jù)庫(kù)表中的數(shù)據(jù)內(nèi)容(不改變表結(jié)構(gòu))

INSERT、UPDATE、DELETE、MERGE

新增記錄、修改數(shù)據(jù)、刪除記錄

DCL(數(shù)據(jù)控制語言)

管理數(shù)據(jù)庫(kù)權(quán)限、控制事務(wù)

GRANT、REVOKE、COMMIT、ROLLBACK

授權(quán)、撤銷權(quán)限、提交/回滾事務(wù)

DQL(數(shù)據(jù)查詢語言)

從數(shù)據(jù)庫(kù)中查詢/檢索數(shù)據(jù)(僅讀取,不修改數(shù)據(jù))

SELECT、FROM、WHERE、GROUP BY、ORDER BY

單表查詢、多表查詢、數(shù)據(jù)統(tǒng)計(jì)

  • TRUNCATE 操作不可回滾,drop可回滾

4.3 核心SQL語句詳解

4.3.1 DQL:數(shù)據(jù)查詢語言(SELECT)

SELECT是最常用的SQL語句,用于從表中檢索數(shù)據(jù),核心語法為:

SELECT column1, column2, ... FROM table_name WHERE condition;
  • column1, column2:指定要查詢的列,*代表查詢所有列;

  • FROM table_name:指定要查詢的表;

  • WHERE condition:指定查詢的篩選條件。

基礎(chǔ)示例

-- 查詢學(xué)生表中所有男生的記錄
select * from student where  sex='男';

高級(jí)查詢擴(kuò)展

  • 模糊查詢(LIKE)%代表任意字符,_代表單個(gè)字符

-- 查詢班級(jí)以“文科”開頭的學(xué)生
SELECT * FROM students WHERE clazz LIKE '文科%';

2.范圍查詢(IN/BETWEEN AND)

-- 查詢文科一班、二班、三班的學(xué)生
select * from students where clazz in ('文科一班','文科二班','文科三班');
-- 查詢年齡在22到24之間的學(xué)生
select * from students where age BETWEEN 22 AND 24;

3.排序(ORDER BY)ASC升序(默認(rèn)),DESC降序

-- 按年齡降序查詢學(xué)生
SELECT * FROM students ORDER BY age DESC;

4. 分組(GROUP BY)+ 聚合函數(shù):聚合函數(shù)包括COUNT(計(jì)數(shù))、SUM(求和)、AVG(平均值)等,用于分組統(tǒng)計(jì)

-- 按性別分組,統(tǒng)計(jì)每組學(xué)生數(shù)量
SELECT gender, COUNT(*) FROM students GROUP BY gender;

5.分組篩選(HAVING):對(duì)GROUP BY的統(tǒng)計(jì)結(jié)果進(jìn)行篩選(區(qū)別于WHERE:WHERE篩選原始數(shù)據(jù),HAVING篩選分組結(jié)果)

-- 按班級(jí)分組,統(tǒng)計(jì)學(xué)生數(shù)大于20的班級(jí)
SELECT clazz, COUNT(*) FROM students GROUP BY clazz HAVING COUNT(*) > 20;

6.分頁(yè)查詢(LIMIT/OFFSET):限制查詢結(jié)果的行數(shù),實(shí)現(xiàn)分頁(yè)

-- 查詢前10條記錄
SELECT * FROM students LIMIT 10;
-- 從第5條開始,查詢10條記錄(OFFSET為偏移量,從0開始)
SELECT * FROM students LIMIT 10 OFFSET 4;

4.3.2 DML:數(shù)據(jù)操作語言

(1)INSERT(新增數(shù)據(jù))

用于向表中插入新的記錄,核心語法:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

注意:列名與值的數(shù)量、類型必須一一對(duì)應(yīng),非空約束的列必須賦值。

(2)UPDATE(修改數(shù)據(jù))

用于修改表中已有的記錄,核心語法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE some_column = some_value;

關(guān)鍵注意WHERE some_column = some_value:指定修改數(shù)據(jù)的篩選條件,僅修改滿足條件的記錄。條件支持多種寫法(如>、<、!=、AND、OR等)

(3)DELETE(刪除數(shù)據(jù))

用于刪除表中的記錄,核心語法:

DELETE FROM table_name
WHERE some_column = some_value;

關(guān)鍵注意:① 必須加WHERE子句,否則刪除表中所有數(shù)據(jù);② DELETE是DML操作,刪除的數(shù)據(jù)可通過事務(wù)回滾恢復(fù),與TRUNCATE(DDL操作,不可回滾)不同。

4.3.3 DCL:數(shù)據(jù)控制語言

  • 權(quán)限管理

-- 授予用戶test對(duì)users表的查詢和插入權(quán)限
GRANT SELECT, INSERT ON users TO 'test'@'localhost';
-- 撤銷test用戶的插入權(quán)限
REVOKE INSERT ON users FROM 'test'@'localhost';

      2.事務(wù)控制

-- 開啟事務(wù)(部分?jǐn)?shù)據(jù)庫(kù)需顯式聲明)
START TRANSACTION;
-- 設(shè)置保存點(diǎn)
SAVEPOINT sp1;
-- 回滾到保存點(diǎn)(僅撤銷刪除操作,修改操作保留)
ROLLBACK TO sp1;
-- 提交最終修改
COMMIT;

總結(jié) 

到此這篇關(guān)于MySQL表和列、增刪改查語句及數(shù)據(jù)類型約束的文章就介紹到這了,更多相關(guān)MySQL表和列、增刪改查及數(shù)據(jù)類型約束內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Mysql5.7修改root密碼教程

    Mysql5.7修改root密碼教程

    本文給大家分享的是個(gè)人在使用mysql5.7修改root密碼的時(shí)候遇到的問題,以及解決方法,推薦給有相同需求的小伙伴參考下。
    2016-02-02
  • MySQL?優(yōu)化?index?merge引起的死鎖分析

    MySQL?優(yōu)化?index?merge引起的死鎖分析

    這篇文章主要介紹了MySQL?優(yōu)化?index?merge引起的死鎖分析,MySQL通過優(yōu)化索引合并是遇到的死鎖問題,下面具體分析需要的小伙伴可以參考一下
    2022-04-04
  • 詳細(xì)深入聊一聊Mysql中的int(1)和int(11)

    詳細(xì)深入聊一聊Mysql中的int(1)和int(11)

    mysql數(shù)據(jù)庫(kù)作為當(dāng)前常用的關(guān)系型數(shù)據(jù)庫(kù),肯定會(huì)遇到設(shè)計(jì)表的需求,下面對(duì)設(shè)計(jì)表時(shí)int類型的設(shè)置進(jìn)行分析,下面這篇文章主要給大家介紹了關(guān)于Mysql中int(1)和int(11)的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • MySQL性能優(yōu)化神器Explain的基本使用分析

    MySQL性能優(yōu)化神器Explain的基本使用分析

    這篇文章主要給大家介紹了關(guān)于MySQL性能優(yōu)化神器Explain的基本使用分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • MySQL索引長(zhǎng)度限制原理解析

    MySQL索引長(zhǎng)度限制原理解析

    這篇文章主要介紹了MySQL索引長(zhǎng)度限制原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • sql語句 update字段null不能用is null問題

    sql語句 update字段null不能用is null問題

    這篇文章主要介紹了sql語句 update字段null不能用is null問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • mysql中modify ,change ,rename to的作用和使用場(chǎng)景

    mysql中modify ,change ,rename to的作用和使用場(chǎng)景

    在MySQL中,MODIFY、CHANGE 和 RENAME TO都是 ALTER TABLE 語句的一部分,用于修改表的結(jié)構(gòu),但它們的作用和使用場(chǎng)景有所不同,下面給大家介紹mysql中modify ,change ,rename to的作用和使用場(chǎng)景,感興趣的朋友一起看看吧
    2025-08-08
  • MySQL中START REPLICA語句的具體使用

    MySQL中START REPLICA語句的具體使用

    MySQL從8.0.22版本開始引入了START REPLICA語句,替代了原來的START SLAVE語句,本文主要介紹了MySQL中START REPLICA語句的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • mysql 8.0.15 下載安裝詳細(xì)教程 新手必備!

    mysql 8.0.15 下載安裝詳細(xì)教程 新手必備!

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.15 下載安裝詳細(xì)教程,純新手教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • mysql 5.7.21 winx64免安裝版配置方法圖文教程

    mysql 5.7.21 winx64免安裝版配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.21 winx64免安裝版配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02

最新評(píng)論

天等县| 嵩明县| 松潘县| 静安区| 泸水县| 楚雄市| 岚皋县| 大足县| 罗定市| 涟水县| 尚志市| 棋牌| 衡水市| 靖远县| 石河子市| 伽师县| 水富县| 昭觉县| 利辛县| 天镇县| 普定县| 灵石县| 康定县| 台安县| 横山县| 漳州市| 连南| 江门市| 清涧县| 额尔古纳市| 荣昌县| 太原市| 上虞市| 五指山市| 林西县| 乐至县| 萨嘎县| 台南市| 招远市| 喀什市| 安徽省|