Замечания по изучению MySQL ------ общие ограничения

# общие ограничения

/*


Значение: ограничение, используемое для ограничения данных в таблице, чтобы обеспечить точность и надежность данных в таблице.


Классификация: шесть основных ограничений.
    NOT NULL: непустое, используется для обеспечения того, чтобы значение поля не могло быть пустым,
    например имя, номер учащегося и т. д.
    DEFAULT: по умолчанию, используется для обеспечения того, чтобы поле имело значение по умолчанию,
    например пол
    ПЕРВИЧНЫЙ КЛЮЧ: первичный ключ, используемый для обеспечения уникальности значения поля и не пустого значения,
    например, номер студента, номер сотрудника и т. д
    . УНИКАЛЬНЫЙ: уникальный, используется для обеспечения уникальности значения поля. , может быть пустым,
    например номер места.
    CHECK: проверка ограничения [не поддерживается в mysql]
    , например возраст, пол.
    FOREIGN KEY: внешний ключ, используемый для ограничения связи между двумя таблицами, используемый для обеспечения того, чтобы значение этого поля было обязательным. берутся из значения связанного столбца основной таблицы. Добавьте ограничение внешнего ключа
        к подчиненной таблице, используемое для ссылки на столбец в основной таблице. Значение,
    например, профессиональный номер таблицы студентов, номер отдела таблица сотрудников и номер типа работы таблицы сотрудников
    

Когда добавлять ограничения:
    1. При создании таблицы.
    2. При изменении таблицы.
    

Категории добавления ограничений:
    ограничения на уровне столбца:
        все шесть ограничений синтаксически поддерживаются, но ограничения внешнего ключа не имеют эффекта. Ограничения
        
    уровня таблицы:
        
        за исключением ненулевых значений по умолчанию, поддерживаются и другие.
        
        
Первичный ключ и сравнение уникальных значений:

        Гарантированная уникальность Разрешается ли быть пустым Сколько может быть в таблице Разрешено ли объединение
    первичных ключей √ × Максимум 1 √,
    уникальность не рекомендуется √ √ Может быть несколько √, но не рекомендуется
Внешний ключ:
    1. Требуется в подчиненной таблице. Установите связь внешнего ключа.
    2. Тип столбца внешнего ключа вторичной таблицы соответствует или совместим с типом связанного столбца основной таблицы, и имя не требуется. 3
    . Связанный столбец основной таблицы должен быть ключом (обычно первичным ключом или уникальным)
    4. При вставке данных сначала вставьте основную таблицу, а затем вставьте подчиненную таблицу.
    При удалении данных сначала удалите подчиненную таблицу, а затем удалить главную таблицу


*/

CREATE TABLE имя таблицы (
    имя поля, тип поля, ограничения на уровне столбца,
    тип поля имени поля,
    ограничения на уровне таблицы

)
СОЗДАНИЕ БАЗЫ ДАННЫХ, студенты
№ 1. Добавьте ограничения при создании таблицы.

# 1. Добавить ограничения на уровне столбца
/*
Синтаксис:

Просто добавьте тип ограничения непосредственно после имени и типа поля.

Поддерживаются только: по умолчанию, ненулевой, первичный ключ, уникальный.

*/

ИСПОЛЬЗОВАТЬ студентов;
DROP TABLE stuinfo;
CREATE TABLE stuinfo(
    id INT PRIMARY KEY, #primary key --- ограничение — номер студента
    stuName VARCHAR(20) NOT NULL UNIQUE, #непустой
    пол CHAR(1) CHECK(gender='male ' ИЛИ ​​гендер = 'женский'), #check ------на самом деле, место INT UNIQUE не поддерживается в mysql
    , #уникальный
    возраст INT DEFAULT 18, #ограничение по умолчанию
    majorId INT REFERENCES major(id)#foreign key- --- --На самом деле, столбцы ограничений не поддерживаются в MySQL

);


CREATE TABLE major(
    id INT PRIMARY KEY,
    majorName VARCHAR(20)
);

#Просмотр всех индексов в stuinfo, включая первичный ключ, внешний ключ, уникальный
SHOW INDEX FROM stuinfo;


№ 2. Добавьте ограничения на уровне таблицы
/*

Синтаксис: Внизу каждого поля
 [имя ограничения ограничения] тип ограничения (имя поля) --- [имя ограничения ограничения] означает, что его можно опустить. Если имени нет, будет имя по умолчанию, то есть имя поля по умолчанию*
/

УДАЛИТЕ ТАБЛИЦУ, ЕСЛИ СУЩЕСТВУЕТ stuinfo;
CREATE TABLE stuinfo(
    id INT,
    имя stuVARCHAR(20),
    пол CHAR(1),
    место INT,
    возраст INT,
    majorid INT,
    
    CONSTRAINT pk PRIMARY KEY(id), #primary key --- первичный ключ имя фиксировано Да, изменение имени не будет иметь никакого эффекта.
    CONSTRAINT uq UNIQUE(seat), #unique key
    CONSTRAINT ck CHECK(gender = 'male' OR пол = 'female'), #check ------ фактически,
    CONSTRAINT не поддерживается в mysql fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)#foreign key
    
);

ПОКАЗАТЬ ИНДЕКС ИЗ stuinfo;

#Общий способ написания:★

СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ stuinfo(
    id INT PRIMARY KEY,
    имя stuVARCHAR(20),
    пол CHAR(1),
    возраст INT DEFAULT 18,
    место INT UNIQUE,
    majorid INT,
    CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)#外键

);

№ 2. Добавляйте ограничения при изменении таблицы

/*
1. Добавить ограничения на уровне столбца
изменить имя таблицы изменить имя поля столбца тип поля новое ограничение;

2. Добавьте ограничения на уровне таблицы.
Измените имя таблицы. Добавьте [имя ограничения ограничения] Тип ограничения (имя поля) [ссылка на внешний ключ];


*/
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE stuinfo(
    id INT, stunname
    VARCHAR(20),
    пол CHAR(1),
    место INT,
    возраст INT,
    majorid INT
)
DESC stuinfo;
# 1. Добавить ненулевое ограничение
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
# 2. Добавить ограничения по умолчанию
ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
# 3. Добавить первичный ключ
#① Ограничения на уровне
столбца ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
#②Table- ограничения уровня
ALTER TABLE stuinfo ADD PRIMARY KEY(id);

№ 4. Добавьте уникальность

#①Ограничения уровня столбца
ALTER TABLE stuinfo MODIFY COLUMN Seat INT UNIQUE
#②Ограничения уровня таблицы
ALTER TABLE stuinfo ADD UNIQUE(seat);


#5. Изменение таблицы
ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id); 

№ 3. Удалить ограничения при изменении таблицы

# 1. Удалить ненулевое ограничение
ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;

# 2. Удалить ограничение по умолчанию
ALTER TABLE stuinfo MODIFY COLUMN age INT ;

# 3. Удалить первичный ключ
ALTER TABLE stuinfo DROP PRIMARY KEY;

# 4. Удалить единственное
место ALTER TABLE stuinfo DROP INDEX;

# 5. Удалить внешний ключ
ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;

ПОКАЗАТЬ ИНДЕКС ИЗ stuinfo;

おすすめ

転載: blog.csdn.net/weixin_47156401/article/details/131930846