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

KingbaseES金倉(cāng)數(shù)據(jù)庫(kù):ksql?命令行從建表到刪表實(shí)戰(zhàn)(含增刪改查)

 更新時(shí)間:2026年01月31日 14:22:05   作者:xcLeigh  
本文詳細(xì)介紹了KingbaseES數(shù)據(jù)庫(kù)中使用ksql命令行進(jìn)行表的創(chuàng)建、查看、數(shù)據(jù)操作(增刪改查)、結(jié)構(gòu)修改以及刪除的全生命周期管理,涵蓋了表的創(chuàng)建語(yǔ)法、常用數(shù)據(jù)類型、約束、表結(jié)構(gòu)查看方法、數(shù)據(jù)操作命令、表結(jié)構(gòu)修改命令以及刪除表的操作,還列舉了常見(jiàn)問(wèn)題的解決方案

前言

    中電科金倉(cāng)(北京)科技股份有限公司(以下簡(jiǎn)稱“電科金倉(cāng)”)成立于1999年,是成立最早的擁有自主知識(shí)產(chǎn)權(quán)的國(guó)產(chǎn)數(shù)據(jù)庫(kù)企業(yè),也是中國(guó)電子科技集團(tuán)(CETC)成員企業(yè)。電科金倉(cāng)以“提供卓越的數(shù)據(jù)庫(kù)產(chǎn)品助力企業(yè)級(jí)應(yīng)用高質(zhì)量發(fā)展”為使命,致力于“成為世界卓越的數(shù)據(jù)庫(kù)產(chǎn)品與服務(wù)提供商”。

    電科金倉(cāng)自成立起始終堅(jiān)持自主創(chuàng)新,專注數(shù)據(jù)庫(kù)領(lǐng)域二十余載,具備出色的數(shù)據(jù)庫(kù)產(chǎn)品研發(fā)及服務(wù)能力,核心產(chǎn)品金倉(cāng)數(shù)據(jù)庫(kù)管理系統(tǒng)KingbaseES(簡(jiǎn)稱“KES”)是面向全行業(yè)、全客戶關(guān)鍵應(yīng)用的企業(yè)級(jí)大型通用數(shù)據(jù)庫(kù)。KES產(chǎn)品V9版本已通過(guò)國(guó)家權(quán)威機(jī)構(gòu)認(rèn)證,產(chǎn)品核心源代碼自主率達(dá)到100%。2018年,電科金倉(cāng)申報(bào)的“數(shù)據(jù)庫(kù)管理系統(tǒng)核心技術(shù)的創(chuàng)新與金倉(cāng)數(shù)據(jù)庫(kù)產(chǎn)業(yè)化”項(xiàng)目榮獲國(guó)家科學(xué)技術(shù)進(jìn)步二等獎(jiǎng)。金倉(cāng)數(shù)據(jù)庫(kù)管理系統(tǒng)KES于2022年入選國(guó)務(wù)院國(guó)資委發(fā)布的十項(xiàng)國(guó)有企業(yè)數(shù)字技術(shù)典型成果,彰顯數(shù)據(jù)庫(kù)領(lǐng)域國(guó)家隊(duì)硬實(shí)力。繼2023年金倉(cāng)數(shù)據(jù)庫(kù)管理系統(tǒng)V8通過(guò)第一批《安全可靠測(cè)評(píng)》后,2024年金倉(cāng)數(shù)據(jù)庫(kù)管理系統(tǒng)V9、金倉(cāng)分布式HTAP數(shù)據(jù)庫(kù)軟件集群V3再度入圍,至此電科金倉(cāng)共計(jì)2款產(chǎn)品3個(gè)版本通過(guò)《安全可靠測(cè)評(píng)》*。

聚焦金倉(cāng)數(shù)據(jù)庫(kù)(KingbaseES)這一國(guó)產(chǎn)企業(yè)級(jí)融合數(shù)據(jù)庫(kù),為開(kāi)發(fā)者及技術(shù)決策者提供從基礎(chǔ)操作到架構(gòu)設(shè)計(jì)的系統(tǒng)化學(xué)習(xí)路徑。從多語(yǔ)法兼容(Oracle/MySQL/PostgreSQL)、多模數(shù)據(jù)存儲(chǔ)(關(guān)系 / 文檔 / 時(shí)序 / GIS)等功能展開(kāi)講解!

表在 KingbaseES 里就是數(shù)據(jù)的“專屬公寓”,所有業(yè)務(wù)數(shù)據(jù)都得乖乖住進(jìn)這公寓里。今天咱就嘮嘮“用 ksql 命令行折騰表”的事兒,從“建表→看表結(jié)構(gòu)→增刪改查數(shù)據(jù)→改表結(jié)構(gòu)→刪表”這一整套流程,把每個(gè)步驟的實(shí)操方法、語(yǔ)法例子,還有怎么避開(kāi)那些讓人頭大的坑,都給你講明白。就算是剛摸 KingbaseES 的新手,看完也能輕松拿捏表的操作。

一、前置準(zhǔn)備:確認(rèn)操作環(huán)境(銜接前文,避免踩坑)

在跟表較勁之前,有兩件基礎(chǔ)準(zhǔn)備工作得先搞定(大家可以翻回第三篇“模式與表空間”的內(nèi)容看看,這樣操作能更順),不然后面操作表的時(shí)候,指不定就卡殼了。

1.1 1. 連接本地?cái)?shù)據(jù)庫(kù)并切換目標(biāo)模式

先用 ksql 跟本地的 KingbaseES 數(shù)據(jù)庫(kù)搭上線(咱就假設(shè)連的是 kingbase 庫(kù)),再切到之前建好的 test_schema 模式。為啥要這么干?還不是為了防止表默認(rèn)跑到 public 模式里,后續(xù)想給表分分類管理,可就麻煩了。

-- 1. 連接數(shù)據(jù)庫(kù)(要是還沒(méi)連上的話)
ksql -d kingbase -U system
-- 2. 切換到 test_schema 模式(沒(méi)切換的話就執(zhí)行這條)
SET search_path TO test_schema, public;
-- 驗(yàn)證:看看當(dāng)前搜索路徑,確認(rèn) test_schema 在里面
SHOW search_path;

執(zhí)行完之后,要是顯示 search_path = test_schema, public,那就說(shuō)明模式切對(duì)了,后面新建的表,默認(rèn)就會(huì)待在 test_schema 模式里,省得你后續(xù)到處找表。

1.2 2. 確認(rèn)表空間(可選,優(yōu)化存儲(chǔ))

要是你想把表放到之前建好的 test_ts 表空間(不是默認(rèn)的 pg_default),第一步得先確認(rèn)這表空間真的存在(用 \db 命令就能查看),之后建表的時(shí)候,直接把表空間名寫(xiě)上就行,不用搞其他花里胡哨的設(shè)置。

二、創(chuàng)建表:用 CREATE TABLE 定義數(shù)據(jù)結(jié)構(gòu)

建表就像是給數(shù)據(jù)“搭公寓框架”,關(guān)鍵是把“表的列、數(shù)據(jù)類型還有約束”都定好。咱先聊聊“常用的數(shù)據(jù)類型”和“核心約束”,每個(gè)點(diǎn)都給你配個(gè)例子,好理解。

2.1 1. 先懂基礎(chǔ):常用數(shù)據(jù)類型與約束

新手建表前,得先搞明白 KingbaseES 常用的數(shù)據(jù)類型和約束,不然選錯(cuò)類型或者漏了約束,后面數(shù)據(jù)出問(wèn)題,哭都來(lái)不及。

2.2 2. 基礎(chǔ)示例:創(chuàng)建簡(jiǎn)單表(含常用約束)

咱就以建個(gè)“用戶表 user_info”為例,里面包含 id(主鍵,用來(lái)唯一標(biāo)識(shí)用戶)、name(非空,用戶姓名不能空著)、age(有 CHECK 約束,得在合理范圍)、phone(唯一,手機(jī)號(hào)不能重復(fù))、create_time(默認(rèn)當(dāng)前時(shí)間,不用手動(dòng)填),命令長(zhǎng)這樣:

CREATE TABLE user_info (
    -- 主鍵:唯一標(biāo)識(shí)用戶,自增(SERIAL 會(huì)自動(dòng)建個(gè)序列,不用你手動(dòng)指定ID,省事兒)
    id SERIAL PRIMARY KEY,
    -- 姓名:非空,最長(zhǎng)50個(gè)字符
    name VARCHAR(50) NOT NULL,
    -- 年齡:得在1到150之間(這就是CHECK約束,防止填個(gè)幾百歲的年齡)
    age INT CHECK (age > 0 AND age <= 150),
    -- 手機(jī)號(hào):唯一,11位固定長(zhǎng)度(用CHAR比VARCHAR合適,畢竟手機(jī)號(hào)都是11位)
    phone CHAR(11) UNIQUE,
    -- 創(chuàng)建時(shí)間:默認(rèn)當(dāng)前時(shí)間(TIMESTAMP DEFAULT CURRENT_TIMESTAMP,不用手動(dòng)錄時(shí)間)
    create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) 
-- 可選:指定表空間(用之前建的 test_ts)
TABLESPACE test_ts;

關(guān)鍵細(xì)節(jié)得拎清:

  • SERIAL 是 KingbaseES 特有的自增類型,本質(zhì)就是 INT 加個(gè)序列。往表里插數(shù)據(jù)的時(shí)候,不用手動(dòng)填 id,數(shù)據(jù)庫(kù)會(huì)自己生成一個(gè)唯一的數(shù),多省心。
  • DEFAULT CURRENT_TIMESTAMP 意思是,插數(shù)據(jù)的時(shí)候要是沒(méi)填 create_time,數(shù)據(jù)庫(kù)會(huì)自動(dòng)把當(dāng)前時(shí)間填進(jìn)去,不用你記著錄時(shí)間。
  • TABLESPACE test_ts 就是說(shuō)這表放 test_ts 表空間里,要是沒(méi)指定,就默認(rèn)待 pg_default 里。
    成功沒(méi)?看這就行:
    執(zhí)行完之后,要是提示 CREATE TABLE,那就是表建好啦。后面用“查看表結(jié)構(gòu)”的命令,就能確認(rèn)這表是不是跟你想的一樣。

2.3 3. 進(jìn)階示例:創(chuàng)建復(fù)合主鍵表(多字段唯一)

有時(shí)候業(yè)務(wù)要求“好幾個(gè)字段放一起得唯一”(比如“訂單明細(xì)表 order_detail”,就得 order_id + product_id 唯一),這時(shí)候就得建復(fù)合主鍵,命令是這樣的:

CREATE TABLE order_detail (
    order_id INT NOT NULL,
    product_id INT NOT NULL,
    product_name VARCHAR(100) NOT NULL,
    quantity INT NOT NULL CHECK (quantity >= 1),
    price NUMERIC(10,2) NOT NULL CHECK (price >= 0),
    -- 復(fù)合主鍵:order_id + product_id 放一起唯一
    PRIMARY KEY (order_id, product_id)
) TABLESPACE test_ts;

這兒的主鍵是 order_idproduct_id 一起構(gòu)成的,這樣就能保證同一個(gè)訂單里,不會(huì)出現(xiàn)重復(fù)的商品記錄,避免后續(xù)算訂單金額的時(shí)候出亂子。

三、查看表結(jié)構(gòu):確認(rèn)表定義是否正確

表建好之后,得用 ksql 命令看看表的“基本結(jié)構(gòu)”“詳細(xì)信息”還有“表列表”,確保表的列、約束、表空間這些都跟你預(yù)期的一樣。這里面有 \dt、\d\d+ 三個(gè)核心命令,咱一個(gè)一個(gè)說(shuō)。

3.1 1. 查看當(dāng)前模式下的表列表(\dt)

執(zhí)行 \dt 命令,就能列出當(dāng)前模式(也就是 test_schema)下所有的表,一眼就能看出你建的表在不在里面。

\dt

執(zhí)行結(jié)果大概長(zhǎng)這樣:
會(huì)顯示出當(dāng)前模式下的表名、表類型、所有者、表空間這些信息,比如能看到 user_infoorder_detail 這兩個(gè)剛建的表都在列表里。

3.2 2. 查看表的基本結(jié)構(gòu)(\d 表名)

執(zhí)行 \d 表名 這個(gè)命令,能看到表的“列名、數(shù)據(jù)類型、約束”這些關(guān)鍵信息,平時(shí)看表結(jié)構(gòu),用這個(gè)命令最多。

\d user_info

執(zhí)行結(jié)果大概長(zhǎng)這樣:
會(huì)清晰列出 user_info 表每一列的列名、數(shù)據(jù)類型,還有主鍵、非空、CHECK、唯一這些約束,比如能看到 id 是 SERIAL 類型且為主鍵,name 是 VARCHAR(50) 且非空。

3.3 3. 查看表的詳細(xì)信息(\d+ 表名)

要是想知道表的“存儲(chǔ)大小、注釋、所有者”這些更細(xì)的信息,那就執(zhí)行 \d+ 表名 命令。

\d+ user_info

執(zhí)行結(jié)果大概長(zhǎng)這樣:
除了基本結(jié)構(gòu)里的信息,還會(huì)多出存儲(chǔ)方式(比如 plain 適合小數(shù)據(jù),extended 適合大數(shù)據(jù)壓縮)、表空間(能明確看到表在 test_ts 里)、表的大小、創(chuàng)建時(shí)間這些信息,想全面了解表,就看這個(gè)。

四、表數(shù)據(jù)操作:增刪改查(CRUD)實(shí)戰(zhàn)

表建好之后,核心就是對(duì)數(shù)據(jù)進(jìn)行“插入(Create)、查詢(Read)、更新(Update)、刪除(Delete)”操作,這可是平時(shí)業(yè)務(wù)里最常干的活。每個(gè)步驟咱都配語(yǔ)法例子,再說(shuō)說(shuō)要注意的風(fēng)險(xiǎn)點(diǎn),別踩坑。

4.1 1. 插入數(shù)據(jù)(INSERT):向表中添加記錄

4.1.1 基礎(chǔ)示例:?jiǎn)螚l數(shù)據(jù)插入

user_info 表里插一條用戶數(shù)據(jù)(id 是自增的,不用填;create_time 有默認(rèn)值,也能省了),命令這么寫(xiě):

INSERT INTO user_info (name, age, phone)
VALUES ('張三', 25, '13800138000');

執(zhí)行完之后,要是沒(méi)報(bào)錯(cuò),那這條數(shù)據(jù)就插進(jìn)去啦。

4.1.2 進(jìn)階示例:多條數(shù)據(jù)批量插入

批量插數(shù)據(jù)比一條一條插快多了,只要在 VALUES 后面用逗號(hào)把多條記錄分開(kāi)就行:

INSERT INTO user_info (name, age, phone)
VALUES 
('李四', 30, '13900139000'),
('王五', 28, '13700137000'),
('趙六', 35, '13600136000');

成功沒(méi)?看提示:
執(zhí)行完要是提示 INSERT 0 3(后面的數(shù)字就是插進(jìn)去的行數(shù)),那就說(shuō)明三條數(shù)據(jù)都插成功了,效率是不是比一條一條插高多了?

4.2 2. 查詢數(shù)據(jù)(SELECT):獲取表中記錄

SELECT 這命令可靈活了,能“查所有列、查指定列、按條件篩數(shù)據(jù)、給數(shù)據(jù)排序、限制查出來(lái)的條數(shù)”,咱舉幾個(gè)常用的例子。

4.2.1 基礎(chǔ):查詢所有記錄(慎用!大表會(huì)卡死)
-- 查詢 user_info 表所有列的所有記錄
SELECT * FROM user_info;

提醒一句,要是表特別大,數(shù)據(jù)成千上萬(wàn)條,用這個(gè)命令查,數(shù)據(jù)刷起來(lái)沒(méi)完,還可能把數(shù)據(jù)庫(kù)搞卡,所以非必要?jiǎng)e用。

4.2.2 常用:查詢指定列 + 條件過(guò)濾

比如你想“查年齡大于 28 的用戶,只看 name、age、phone 這三列”,命令這么寫(xiě):

SELECT name, age, phone 
FROM user_info 
WHERE age > 28;

執(zhí)行完之后,就只會(huì)顯示符合“年齡大于28”條件的用戶,而且只顯示你指定的三列,不用看一堆沒(méi)用的信息。

4.2.3 進(jìn)階:排序 + 限制條數(shù)

再比如“查年齡大于 25 的用戶,按年齡從大到小排序,只看前 2 條”,命令是這樣的:

SELECT name, age, phone 
FROM user_info 
WHERE age > 25 
ORDER BY age DESC 
LIMIT 2;

執(zhí)行結(jié)果大概長(zhǎng)這樣:
會(huì)顯示出年齡大于25的用戶,按年齡從大到小排好序,而且只顯示前兩條,比如可能會(huì)先顯示趙六(35歲),再顯示李四(30歲)。

4.3 3. 更新數(shù)據(jù)(UPDATE):修改已有記錄

更新數(shù)據(jù)的時(shí)候,一定要加 WHERE 條件! 不然沒(méi)條件限制,會(huì)把表里所有記錄都改了,那麻煩可就大了,哭都來(lái)不及。
例子:把“張三”的年齡改成 26

UPDATE user_info 
SET age = 26 
WHERE name = '張三'; -- 條件:只改姓名是“張三”的記錄

成功沒(méi)?這么驗(yàn)證:
執(zhí)行完要是提示 UPDATE 1(意思是改了1行數(shù)據(jù)),那就改成功了。再用 SELECT 命令查查:

SELECT name, age FROM user_info WHERE name = '張三';

就能看到張三的年齡已經(jīng)變成26了,沒(méi)改錯(cuò)人。

4.4 4. 刪除數(shù)據(jù)(DELETE):移除表中記錄

跟更新數(shù)據(jù)一樣,刪除數(shù)據(jù)也必須加 WHERE 條件,不然會(huì)把表里所有數(shù)據(jù)都刪了,而且刪了之后還找不回來(lái),千萬(wàn)別手滑!
例子:刪除手機(jī)號(hào)是“13700137000”的用戶

DELETE FROM user_info 
WHERE phone = '13700137000'; -- 條件:只刪手機(jī)號(hào)是這個(gè)的記錄

成功沒(méi)?這么驗(yàn)證:
執(zhí)行完要是提示 DELETE 1,那就說(shuō)明刪成功了。再執(zhí)行 SELECT * FROM user_info 看看,就能確認(rèn)那個(gè)手機(jī)號(hào)對(duì)應(yīng)的用戶已經(jīng)沒(méi)了。

五、修改表結(jié)構(gòu)(ALTER TABLE):適配業(yè)務(wù)變更

業(yè)務(wù)需求一變,表結(jié)構(gòu)也得跟著改(比如加個(gè)列、改列的類型、刪個(gè)列啥的)。咱說(shuō)說(shuō)平時(shí)最常用的幾種情況,別到時(shí)候業(yè)務(wù)變了,你還不知道怎么改表。

5.1 1. 添加列(ADD COLUMN)

比如給 user_info 表加個(gè)“郵箱列 email”(要求郵箱唯一,允許空著),命令這么寫(xiě):

ALTER TABLE user_info 
ADD COLUMN email VARCHAR(100) UNIQUE;

驗(yàn)證:
執(zhí)行 \d user_info 看看,就能看到新增的 email 列已經(jīng)在表里了,而且有唯一約束。

5.2 2. 修改列(ALTER COLUMN)

5.2.1 示例 1:修改列長(zhǎng)度(比如把name列從 50 改成 100)

有時(shí)候用戶姓名太長(zhǎng),原來(lái)的 50 個(gè)字符不夠用,那就得把列長(zhǎng)度改大,命令是這樣的:

ALTER TABLE user_info 
ALTER COLUMN name TYPE VARCHAR(100);

改完之后,name 列就能存最長(zhǎng) 100 個(gè)字符的姓名了,不用再擔(dān)心名字太長(zhǎng)存不下。

5.2.2 示例 2:修改列默認(rèn)值(比如把create_time默認(rèn)值改成CURRENT_DATE)

要是業(yè)務(wù)只需要記錄日期,不用精確到時(shí)間,那就把 create_time 的默認(rèn)值改成只取當(dāng)前日期,命令這么寫(xiě):

ALTER TABLE user_info 
ALTER COLUMN create_time SET DEFAULT CURRENT_DATE;

注意:
改列類型的時(shí)候,得確保表里已經(jīng)有的數(shù)據(jù)能兼容新類型。比如原來(lái) name 列是 VARCHAR(10),你想改成 INT,可列里存的都是“張三”“李四”這種文字,肯定改不了,還會(huì)報(bào)錯(cuò),這點(diǎn)可得注意。

5.3 3. 刪除列(DROP COLUMN)

比如想把 user_info 表的 age 列刪了(提醒一句,列刪了之后,里面的數(shù)據(jù)也跟著沒(méi)了,而且找不回來(lái),一定要想清楚再刪),命令是這樣的:

ALTER TABLE user_info 
DROP COLUMN IF EXISTS age; -- IF EXISTS 是怕列本來(lái)就不存在,執(zhí)行命令的時(shí)候報(bào)錯(cuò)

驗(yàn)證:
執(zhí)行 \d user_info 看看,就能發(fā)現(xiàn) age 列已經(jīng)從表里消失了。

5.4 4. 添加約束(ADD CONSTRAINT)

比如想給 email 列加個(gè)“非空約束”(要求插數(shù)據(jù)的時(shí)候必須填郵箱,不能空著),命令這么寫(xiě):

ALTER TABLE user_info 
ADD CONSTRAINT user_info_email_not_null CHECK (email IS NOT NULL);

驗(yàn)證:
執(zhí)行 \d user_info ,在“Check constraints”那部分,就能看到新增的這個(gè)非空約束。
得注意:KingbaseES 的 CHECK 約束是“馬上生效”的,加約束的時(shí)候,會(huì)把表里所有舊數(shù)據(jù)都檢查一遍,確保都符合約束要求,這樣能保證數(shù)據(jù)是一致的。要是你想讓這約束只對(duì)以后新增的數(shù)據(jù)生效,不管舊數(shù)據(jù)是不是符合,那 KingbaseES 可沒(méi)這功能,只能先把舊數(shù)據(jù)改好,符合約束了,再建這個(gè)約束。

5.5 5. 修改表名(RENAME TO)

比如想把 user_info 表改名叫 sys_user(可能是為了跟系統(tǒng)里其他表的命名規(guī)則統(tǒng)一),命令這么寫(xiě):

ALTER TABLE user_info 
RENAME TO sys_user;

驗(yàn)證:
執(zhí)行 \dt 看看,就能發(fā)現(xiàn)表名已經(jīng)從 user_info 變成 sys_user 了,改得明明白白。

六、刪除表(DROP TABLE):高危操作!

刪表可是個(gè)高危操作,表一刪,表結(jié)構(gòu)、表里的數(shù)據(jù),還有跟表關(guān)聯(lián)的索引、約束,全沒(méi)了,而且找不回來(lái)。所以刪表之前,一定要把數(shù)據(jù)備份好,別腦子一熱就刪了。

6.1 基礎(chǔ)語(yǔ)法(加 IF EXISTS 避免報(bào)錯(cuò))

DROP TABLE IF EXISTS sys_user; -- IF EXISTS:要是表本來(lái)就不存在,執(zhí)行命令的時(shí)候只會(huì)給個(gè)警告,不會(huì)報(bào)錯(cuò),省得你白擔(dān)心

執(zhí)行這條命令之前,再確認(rèn)一遍數(shù)據(jù)備份好了,而且這表確實(shí)沒(méi)用了,再下手。

6.2 級(jí)聯(lián)刪除(CASCADE):刪除依賴對(duì)象

有時(shí)候這表被視圖、外鍵啥的依賴著,你直接刪表,會(huì)報(bào)錯(cuò)刪不了。這時(shí)候要是真想刪,就得加 CASCADE 級(jí)聯(lián)刪除,把依賴這表的對(duì)象也一起刪了(這操作更危險(xiǎn)!千萬(wàn)別隨便用):

DROP TABLE IF EXISTS sys_user CASCADE;

警告:
CASCADE 一加上,所有依賴這表的對(duì)象(比如基于這表建的視圖、跟這表有外鍵關(guān)聯(lián)的其他表)都會(huì)被一起刪掉。除非你能百分百確定這些依賴對(duì)象都沒(méi)用了,否則絕對(duì)不能用這個(gè)命令,不然刪錯(cuò)了,哭都沒(méi)地方哭。

七、常見(jiàn)問(wèn)題排查:新手常踩的坑

問(wèn)題 1:插入數(shù)據(jù)報(bào)錯(cuò) “重復(fù)鍵值違反唯一性約束”

報(bào)錯(cuò)信息

ERROR:  duplicate key value violates unique constraint "user_info_phone_key"
DETAIL:  Key (phone)=(13800138000) already exists.

原因:你想插的手機(jī)號(hào),表里已經(jīng)有了,違反了 phone 列的唯一約束,數(shù)據(jù)庫(kù)肯定不讓插啊。
解決方案:要么把要插的手機(jī)號(hào)改成表里沒(méi)有的,要么先把表里那個(gè)重復(fù)的手機(jī)號(hào)對(duì)應(yīng)的記錄刪了,再插新數(shù)據(jù)。

問(wèn)題 2:更新數(shù)據(jù)報(bào)錯(cuò) “檢查約束被違反”

報(bào)錯(cuò)信息

ERROR:  check constraint "user_info_age_check" violated
DETAIL:  Failing row contains (2, 張三, 160, 13800138000, 2024-05-20).

原因:你想把張三的年齡改成 160,可之前建表的時(shí)候給 age 列加了 CHECK 約束,要求年齡在 1 到 150 之間,160 超出范圍了,肯定改不了。
解決方案:把要改的年齡改成符合約束的,比如改成 50、60,只要在 1 到 150 之間就行。

問(wèn)題 3:修改列類型報(bào)錯(cuò) “無(wú)法修改被視圖或規(guī)則引用的列的類型”

報(bào)錯(cuò)信息

ERROR:  cannot alter type of a column used by a view or rule
DETAIL:  column "name" is used by view vw_user.

原因:你想改的 name 列,被一個(gè)叫 vw_user 的視圖用著了,這種情況下,數(shù)據(jù)庫(kù)不讓直接改列類型,怕把視圖搞壞了。
解決方案:先把依賴這列的視圖刪了(比如執(zhí)行 DROP VIEW vw_user;),再去改列類型,改完之后要是還需要那個(gè)視圖,再重新建一個(gè)就行。

總結(jié)

咱今天把表的“創(chuàng)建→查看→數(shù)據(jù)操作→結(jié)構(gòu)修改→刪除”全流程都講了一遍,核心要點(diǎn)總結(jié)一下,方便你記:

  1. 創(chuàng)建表:得把數(shù)據(jù)類型和約束搞清楚,再結(jié)合模式和表空間,這樣后續(xù)管理表的時(shí)候能更有條理,不用東找西找。
  2. 數(shù)據(jù)操作:主要就是 INSERT、UPDATE、DELETE 這三個(gè)命令。格式得記對(duì),尤其是 UPDATE 和 DELETE,一定要加 WHERE 條件,不然一不小心就把所有數(shù)據(jù)改了或刪了,哭都來(lái)不及。
  3. 修改結(jié)構(gòu):用 ALTER TABLE 能靈活改表結(jié)構(gòu),但改的時(shí)候得注意數(shù)據(jù)兼容性,別因?yàn)楦慕Y(jié)構(gòu)把原來(lái)的數(shù)據(jù)搞壞了。
  4. 刪除表:這可是高危操作,刪之前必須把數(shù)據(jù)備份好,而且 CASCADE 級(jí)聯(lián)刪除千萬(wàn)別隨便用,不然刪錯(cuò)了就麻煩了。

表在 KingbaseES 數(shù)據(jù)存儲(chǔ)里可是核心角色,掌握了表的操作方法,后面用數(shù)據(jù)庫(kù)就能順手多了。

到此這篇關(guān)于KingbaseES金倉(cāng)數(shù)據(jù)庫(kù):ksql 命令行從建表到刪表實(shí)戰(zhàn)(含增刪改查)的文章就介紹到這了,更多相關(guān)KingbaseES使用ksql 命令行內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 數(shù)據(jù)庫(kù)運(yùn)維人員DBA工作總結(jié)

    數(shù)據(jù)庫(kù)運(yùn)維人員DBA工作總結(jié)

    中大型公司都會(huì)有一些專攻數(shù)據(jù)庫(kù)方面的牛人,專門(mén)的職位叫做DBA,對(duì)于公司的DBA他們的價(jià)值不可小覷,只要是數(shù)據(jù)庫(kù),就有吞吐量的限制,數(shù)據(jù)庫(kù)訪問(wèn)瓶頸便是自然流量增長(zhǎng)或者流量突增造成的
    2023-10-10
  • SQL Server數(shù)據(jù)庫(kù)性能優(yōu)化技術(shù)

    SQL Server數(shù)據(jù)庫(kù)性能優(yōu)化技術(shù)

    SQL Server數(shù)據(jù)庫(kù)性能優(yōu)化技術(shù)...
    2007-06-06
  • 如何讓你的SQL運(yùn)行得更快

    如何讓你的SQL運(yùn)行得更快

    如何讓你的SQL運(yùn)行得更快...
    2007-06-06
  • 數(shù)據(jù)庫(kù)設(shè)計(jì)技巧奉送了

    數(shù)據(jù)庫(kù)設(shè)計(jì)技巧奉送了

    數(shù)據(jù)庫(kù)設(shè)計(jì)技巧奉送了...
    2007-03-03
  • 免費(fèi)開(kāi)源數(shù)據(jù)庫(kù):SQLite、MySQL和PostgreSQL的優(yōu)缺點(diǎn)

    免費(fèi)開(kāi)源數(shù)據(jù)庫(kù):SQLite、MySQL和PostgreSQL的優(yōu)缺點(diǎn)

    對(duì)于處理大規(guī)模數(shù)據(jù)和高并發(fā)訪問(wèn)的場(chǎng)景,MySQL和PostgreSQL更適合,SQLite在小型應(yīng)用程序或嵌入式設(shè)備中是一種輕量級(jí)、簡(jiǎn)單和易于使用的選擇,根據(jù)具體的應(yīng)用需求和場(chǎng)景特點(diǎn),選擇合適的開(kāi)源關(guān)系型數(shù)據(jù)庫(kù)可以提供更好的性能、可擴(kuò)展性和靈活性
    2024-02-02
  • MySQL mysqldump命令使用詳解

    MySQL mysqldump命令使用詳解

    MySQL有很多可以導(dǎo)入數(shù)據(jù)的方法,然而這些只是數(shù)據(jù)傳輸中的一半,另外的一般是從MySQL數(shù)據(jù)庫(kù)中導(dǎo)出數(shù)據(jù)。有許多的原因我們需要導(dǎo)出數(shù)據(jù)。一個(gè)重要的原因是用于備份數(shù)據(jù)庫(kù)。數(shù)據(jù)的造價(jià)常常是昂貴的,需要謹(jǐn)慎處理它們。
    2006-12-12
  • SQL語(yǔ)句實(shí)現(xiàn)刪除重復(fù)記錄并只保留一條

    SQL語(yǔ)句實(shí)現(xiàn)刪除重復(fù)記錄并只保留一條

    這篇文章主要介紹了SQL語(yǔ)句實(shí)現(xiàn)刪除重復(fù)記錄并只保留一條,本文直接給出實(shí)現(xiàn)代碼,并給出多種查詢重復(fù)記錄的方法,需要的朋友可以參考下
    2015-06-06
  • MDAC2.8 安裝問(wèn)題與解決方法

    MDAC2.8 安裝問(wèn)題與解決方法

    根據(jù)Windows XP的版本不同,有的版本需要安裝MDAC2.8,一般Windows XP SP2或以上版本就不需要安裝。不需要安裝時(shí)系統(tǒng)會(huì)提示“MDAC 2.8 RTM 與此版本 Windows 不兼容?,F(xiàn)在它的所有功能都成為 Windows 的一部分”。
    2010-11-11
  • 交互分布式系統(tǒng)下如何生成唯一序列

    交互分布式系統(tǒng)下如何生成唯一序列

    在分布式系統(tǒng)中,由于涉及到多個(gè)不同業(yè)務(wù)module的交互,以及高并發(fā)的場(chǎng)景。我們需要系統(tǒng)能夠生成一個(gè)跨業(yè)務(wù)module的全網(wǎng)唯一序列號(hào),來(lái)保證我們業(yè)務(wù)操作的獨(dú)立性和唯一性
    2022-01-01
  • SAP技巧之修改自帶搜索幫助為自定數(shù)據(jù)集

    SAP技巧之修改自帶搜索幫助為自定數(shù)據(jù)集

    這篇文章主要為大家介紹了SAP技巧之修改自帶搜索幫助為自定數(shù)據(jù)集實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評(píng)論

萨迦县| 鄂伦春自治旗| 尖扎县| 栖霞市| 定南县| 郎溪县| 新巴尔虎左旗| 五莲县| 谷城县| 海阳市| 拉萨市| 阿城市| 余姚市| 万源市| 武乡县| 贵溪市| 从化市| 辽源市| 南澳县| 三亚市| 宣威市| 开鲁县| 大连市| 庄河市| 乌拉特后旗| 施甸县| 凤阳县| 淮北市| 芜湖市| 绥滨县| 哈尔滨市| 磐安县| 迁西县| 扎兰屯市| 神农架林区| 九龙坡区| 垫江县| 沈丘县| 泸定县| 商水县| 桐乡市|