SQLite에서 키 사용 방법

SQLite에서 키 사용 방법

2022-06-04 last update

5 minutes reading SQLite
SQLite는 데이터베이스 관리 시스템으로 MySQL처럼 관계 데이터베이스의 데이터를 관리하는 데 사용되며 다른 데이터베이스처럼 유일성, 메인 키와 외부 키 등 많은 제약을 포함한다.
그렇다면 SQLite에서 어떻게 작동하는지에 대한 제약은 무엇입니까?이 글은 SQLite에서 주 키 구속을 사용하는 방법에 대한 포괄적인 지침입니다.

SQLite의 제약조건은 무엇입니까?


제약은 같은 데이터 유형의 데이터를 테이블에 삽입하는 원칙으로 열의 구조를 구성하고 테이블에 저장된 데이터의 신뢰성을 확보한다.많은 제한이 있습니다. 그 중 일부는 다음과 같습니다.
  • 기본 키
  • 외부 키
  • 고유 구속조건
  • 기본 구속조건
  • 검사 제약
  • SQLite의 기본 키는 무엇입니까?


    메인 키는 테이블의 유일한 열입니다. 열에 삽입된 항목이 유일해야 하며, 다른 테이블의 외부 키를 인용하는 데도 사용됩니다.키를 사용하지 않는 상태에서 테이블을 만들 수 있지만, 테이블이 키를 사용하면 테이블에 키를 하나만 할당할 수 있습니다.각종 테이블을 가진 데이터베이스를 만들 때 메인 키는 매우 중요하기 때문에 서로 다른 데이터베이스 간에 관계를 만들려면 메인 키를 사용해야 한다.
    주 키는 다음 규칙을 따라야 합니다.
  • 주 키의 열은 빈 값으로 정의할 수 없음
  • 키 열에 삽입된 줄의 데이터는 유일해야 한다
  • 주 키는 다른 표
  • 의 특정 외부 키라고 해야 한다
  • 테이블에는 주 키가 하나만 포함됩니다
  • 기본 키는 데이터베이스에서 빈 값일 수 없지만 SQLite의 경우 "장기적인 인코딩 감독"으로 인해 빈 값을 할당할 수 있습니다.
    하나의 테이블에는 하나의 키만 있어야 하지만, 하나의 키에 여러 열을 정의할 수 있으며, 여러 열이 하나의 키로 사용될 때 복합 키라고 부른다.

    SQLite의 모든 테이블에 기본 키를 추가할 수 있는 몇 가지 방법


    테이블을 만들 때 다음과 같은 두 가지 키 할당 방법이 있습니다.
  • 부터 테이블
  • 까지의 단일 열
  • 부터 테이블
  • 까지의 다중 열

    SQLite의 열에 기본 키를 할당하는 테이블을 만드는 방법


    기본 키를 단일 열에 할당하여 테이블을 만들 수 있습니다. 일반적인 구문은 다음과 같습니다.
    CREATE TABLE TABLE_NAME (column_name1  PRIMARY KEY NOT NULL, column_name2 );
    이 구문은 다음과 같이 해석됩니다.
  • CREATE TABLE 자구는 테이블을 만드는 데 사용됩니다
  • table\uname
  • 대신 테이블 이름을 입력합니다.
  • column_name1 대신 열 이름을 입력하고 데이터 형식을 기록합니다
  • 열을 주 키로 지정하려면 주 키 서브문장을 사용하고 NULL 또는 NOT NULL
  • 으로 정의합니다.
  • column_name2
  • 대체 이름 입력
    그것을 이해하려면 예시를 생각해 보십시오. 우리는 학생 표를 만들었습니다. 그 중에서 유일한 학생 id가 있습니다. 이름은 (std\uid), 학생 이름은 (std\uname) 입니다.이 표에서 학생 이름은 같을 수 있지만 학생 id는 같을 수 없습니다. 따라서 std\U id에 키를 할당합니다.
    CREATE TABLE school_students (std_id INTEGER PRIMARY KEY NOT NULL, std_names);

    school\u students 테이블이 만들어졌습니다. 그 중 하나가 키로 되어 있습니다.

    SQLite의 여러 열에 기본 키를 할당하는 테이블을 만드는 방법


    기본 키를 여러 열에 할당하여 테이블을 만들 수 있습니다. 일반적인 구문은 다음과 같습니다.
    CREATE TABLE TABLE_NAME (column_name1  , column_name2 , column_name3 , PRIMARY KEY(column_name1, column_name2));
    위의 문법에서, 우리는 문장의 끝에 메인 키를 정의하고, 열의 이름을 메인 키에 포함할 괄호에 두었다.
    이 점을 다시 이해하기 위해서, 우리는 employees\u 데이터 테이블의 예시를 고려합니다. 우리는 세 열을 사용하여 emp\uid,emp\uname,emp\udep를 만들고, emp\uid와emp\uname를 메인 키로 지정합니다.
    CREATE TABLE employees_data (emp_id INTEGER, emp_name TEXT, emp_dep TEXT,emp_name PRIMARY KEY(emp_id, emp_email));

    이 테이블은 메인 키를 사용하여 만든 것입니다. 메인 키에는 두 열이 있습니다.

    SQLite의 기존 테이블에 키를 추가하는 방법


    Alter 자구를 사용하여 SQLite의 기존 테이블에 키를 추가할 수는 없지만 SQLite의 테이블에 키를 할당하려면 다음 절차를 따릅니다.
  • 외부 키 구속조건 비활성화
  • 테이블의 이름을 다른 이름으로 변경
  • 이전에 만든 것과 같은 구조를 가진 새 표를 만듭니다
  • 이 테이블의 데이터를 이 테이블로 복사
  • 이름이 바뀐 테이블 삭제
  • 마지막으로 키 제약조건 열기
  • 데이터베이스에 students\u data라는 테이블이 있습니다. 이 테이블은 메인 키가 없습니다. 내용은 다음과 같습니다.
    SELECT * FROM students_data;

    "id"키를 할당하려면 다음 명령을 실행합니다.
    PRAGMA foreign_keys=off;
    BEGIN TRANSACTION;
    ALTER TABLE students_data RENAME TO new_students_data;
    CREATE TABLE students_data (id INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL, attendance INTEGER NOT NULL);
    INSERT INTO students_data  SELECT * FROM new_students_data;
    DROP TABLE new_students_data;
    COMMIT;
    PRAGMA foreign_keys=ON;

    주 키가 id라는 열에 할당되었는지 확인하려면 다음 명령을 실행하십시오.
    PRAGMA table_info([students_data]);

    주 키가 테이블 students\u 데이터에 성공적으로 할당되었습니다.

    SQLite에서 키 구속조건을 삭제하는 방법


    다른 데이터베이스와 마찬가지로, 우리는drop와 ALTER 명령을 사용하여 제약을 삭제할 수 없습니다. 메인 키 제약을 삭제하려면 같은 과정을 따라 제약을 기존 테이블에 추가하고 테이블의 구조를 다시 정의해야 합니다. 어떤 열에도 메인 키를 정의하지 않습니다.위의 키 추가 예제를 다시 한 번 고려해 보겠습니다. 키 삭제는 다음과 같습니다.
    PRAGMA foreign_keys=off;
    BEGIN TRANSACTION;
    ALTER TABLE students_data RENAME TO new_students_data;
    CREATE TABLE students_data (id INTEGER NOT NULL, name TEXT NOT NULL, attendance INTEGER NOT NULL);
    INSERT INTO students_data  SELECT * FROM new_students_data;
    DROP TABLE new_students_data;
    COMMIT;
    PRAGMA foreign_keys=ON;

    결론


    메인 키는 특히 테이블과 다른 테이블의 관계를 맺을 때 매우 유용하다. 왜냐하면 외부 키는 항상 테이블의 메인 키를 가리키고, 테이블은 하나의 메인 키만 있지만, 그 필드는 하나 이상일 수 있기 때문이다.본고에서 우리는 SQLite에서 키를 어떻게 사용하는지 토론했고 예를 통해 키를 하나 이상의 열에 분배하는 방법과 이미 존재하는 키가 없는 표에 대해 토론했다.