MySQL에서 ENUM 변수 유형 생성
MySQL에서 ENUM 데이터 형식을 사용하고 있으며 재사용하고 싶지만 값을 다시 입력하지는 않습니다.MySQL에 C, C++ 타입을 정의하는 방법과 동등한 것이 있습니까?
저는 다음과 같은 일을 하고 싶습니다.
DEFINE ETYPE ENUM('a','b','c','d');
CREATE TABLE Table_1 (item1 ETYPE, item2 ETYPE);
가능한가요?
감사해요.
아니요. MySQL은 지원하지 않습니다.CREATE DOMAIN
아니면CREATE TYPE
예를 들어 Postgre와 같이SQL이 있습니다.
아마 모든 이름을 다시 입력해야 할 것입니다.copy & paste 또는 SQL 스크립트를 사용하여 이 작업에 필요한 작업을 줄일 수 있습니다.
당신은 또한 사용할 수 있습니다.INFORMATION_SCHEMA
표: ENUM 정의의 텍스트를 가져온 다음 새 텍스트로 보간합니다.CREATE TABLE
진술.
사용할 수도 있습니다.CREATE TABLE AS
창의적인 방법으로 유형 정의를 복사할 수 있습니다.다음은 시연입니다.
CREATE TABLE foo ( f ENUM('abc', 'xyz') );
CREATE TABLE bar AS SELECT f AS b FROM foo;
SHOW CREATE TABLE bar;
출력:
CREATE TABLE `bar` (
`b` enum('abc','xyz') default NULL
)
마지막으로 ENUM에 많은 값이 포함되어 있는 경우(입력을 피할 수 있는 솔루션을 찾고 있으므로 사실이라고 생각합니다) ENUM 데이터 유형 대신 룩업 테이블을 사용하는 것이 좋습니다.
@bliako 님의 댓글:
다음과 같은 방법으로 설명할 수 있습니다.
CREATE TABLE bar (pop INT NOT NULL, name VARCHAR(100))
AS SELECT 0 AS pop, NULL AS name, f FROM foo;
MySQL 5.7.27에서 이것을 시도해 보았는데 효과가 있었습니다.
CREATE TABLE 행에 있는 세 개의 열을 모두 선언할 필요는 없다는 점이 흥미롭습니다.세번째열f
자동으로 추가됩니다.
칼럼 별칭을 붙여야 한다는 것도 흥미롭네요.SELECT
열 이름이 에 선언된 이름과 일치하는지 확인하는 문장CREATE TABLE
. 그렇지 않으면 열 이름이 일치하지 않을 경우 추가 열이 표시되고 해당 데이터 유형은 예상한 것과 다릅니다.
create table bar (pop int not null, name varchar(100))
as select 0 as c1, null as c2, f from foo;
show create table bar\G
CREATE TABLE `bar` (
`pop` int(11) NOT NULL,
`name` varchar(100) DEFAULT NULL,
`c1` binary(0) DEFAULT NULL,
`c2` binary(0) DEFAULT NULL,
`f` enum('abc','xyz') DEFAULT NULL
)
mysql db의 경우 아래 예시가 있습니다.
CREATE TABLE `data` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`gender` enum('Male','Female') DEFAULT NULL,
PRIMARY KEY (`Id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci
언급URL : https://stackoverflow.com/questions/1462497/creating-enum-variable-type-in-mysql
'programing' 카테고리의 다른 글
LESS-CSS 덮어쓰기 calc() 사용 안 함 (0) | 2023.11.05 |
---|---|
C# XML 문서 웹사이트 링크 (0) | 2023.11.05 |
종료 시 파일 설명자를 닫는 것이 좋은 방법입니까? (0) | 2023.10.31 |
Java Virtual Machine(JVM) 및 성능 비교 (0) | 2023.10.31 |
텍스트 편집에 포커스 설정 (0) | 2023.10.31 |