mysql創建數據庫時怎么將主鍵設置為UUID,建表語句怎么寫
你們的想法是不是,想在建表時為id指定uuid,然后每次插入數據都會自動為每一條數據生成uuid呢?就像auto_increment主鍵自增一樣呢?
我只想說 you are too young!
我一開始是這樣做的:
create table product(
id varchar(36) primary key default uuid()
)
sql語句報錯。
后來查了查資料,發現mysql好像并不支持在建表時,為某一字段指定默認函數值。但是在Oracle數據庫中,卻支持這樣干,也就可以實現插入數據時,自動生成uuid。
所以在mysql中只能在插入數據時,將uuid()函數值賦值給id字段。
后來,我又想了一個方案,我可以去寫一個觸發器,每次在執行插入操作時,都為id字段更新為uuid(),但是這種方式還是存在很多問題的,這里就不說了。
總而言之,因為id在業務層面一般是無意義的,如果只是為了實現主鍵自增長,那請用auto_increment吧,如果您有更好的解決方式,請務必回復我,不勝感謝。
Mysql子查詢語句(外鍵調用主鍵)
子查詢分類
子查詢按返回結果集的不同分為4種:表子查詢,行子查詢,列子查詢和標量子查詢。
表子查詢:返回的結果集是一個表集合,N行N列(N>=1)。表子查詢經常用于父查詢的FROM子句中。
行子查詢:返回的結果集是一個表集合,一行N列(N>=1)。行子查詢可以用于福查詢的FROM子句和WHERE子句中。
列子查詢:返回的結果集是一個表集合,N行一列(N>=1)。
標量子查詢:返回的結果集是一個表集合,一行一列,也就是一個標量值。可以指定一個標量表達式的任何地方,都可以用一個標量子查詢。
表子查詢
SELECT studentNO , studentNAME
FROM (SELECT studentNO,sex,studentNAME
FROM student
WHERE age > 18) AS student18
WHERE sex='M'
如:行子查詢
SELECT studentNO
FROM student
WHERE (sex,age) = (SELECT sex,age
FROM student
WHERE studentNO = 15
)
標量查詢:
SELECT studentNO
FROM student
WHERE sex = (SELECT sex
FROM student
WHERE studentNO = 15
)
mysql 外鍵約束語句是什么
給你個示例:
create table t1
(
id int primary key,
name varchar(20)
);
create table t2
(
record_id int,
id int references t1(id), /*表示列id到表t1的列id的外鍵*/
remark varchar(100)
);
mysql下,建立外鍵時一定要注意關聯的列一定要數據類型、長度要一致,否則會報錯。
mysql update語句 兩個主鍵更新語句問題,求救
如果是雙字段主鍵,則連接條件里加多一個字段就行了
建議修改如下試一試:
update *_option set *_option.`option_text`
= (select `option_text` from *_option
where *_*_id = *_*_id and
*_* = *_*)
where exists ( select 1 from *_option where
*_*_id = *_*_id
and *_* = *_*)
或者這樣寫
update *_option, *_option
set *_option.`option_text`=*_option.`option_text`
where *_*_id = *_*_id
and *_* = *_*