1 #常见约束
2
3
53
54 CREATE TABLE 表名(
55 字段名 字段类型 列级约束,
56 字段名 字段类型,
57 表级约束
58
59 )
60 CREATE DATABASE students;
61 #一、创建表时添加约束
62
63 #1.添加列级约束
64
74
75 USE students;
76 DROP TABLE stuinfo;
77 CREATE TABLE stuinfo(
78 id INT PRIMARY KEY,#主键
79 stuName VARCHAR(20) NOT NULL UNIQUE,#非空
80 gender CHAR(1) CHECK(gender="男" OR gender ="女"),#检查
81 seat INT UNIQUE,#唯一
82 age INT DEFAULT 18,#默认约束
83 majorId INT REFERENCES major(id)#外键
84
85 );
86
87
88 CREATE TABLE major(
89 id INT PRIMARY KEY,
90 majorName VARCHAR(20)
91 );
92
93 #查看stuinfo中的所有索引,包括主键、外键、唯一
94 SHOW INDEX FROM stuinfo;
95
96
97 #2.添加表级约束
98
103
104 DROP TABLE IF EXISTS stuinfo;
105 CREATE TABLE stuinfo(
106 id INT,
107 stuname VARCHAR(20),
108 gender CHAR(1),
109 seat INT,
110 age INT,
111 majorid INT,
112
113 CONSTRAINT pk PRIMARY KEY(id),#主键
114 CONSTRAINT uq UNIQUE(seat),#唯一键
115 CONSTRAINT ck CHECK(gender ="男" OR gender = "女"),#检查
116 CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)#外键
117
118 );
119
120
121
122
123
124 SHOW INDEX FROM stuinfo;
125
126
127
128 #通用的写法:★
129
130 CREATE TABLE IF NOT EXISTS stuinfo(
131 id INT PRIMARY KEY,
132 stuname VARCHAR(20),
133 sex CHAR(1),
134 age INT DEFAULT 18,
135 seat INT UNIQUE,
136 majorid INT,
137 CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
138
139 );
140
141
142
143 #二、修改表时添加约束
144
145
154 DROP TABLE IF EXISTS stuinfo;
155 CREATE TABLE stuinfo(
156 id INT,
157 stuname VARCHAR(20),
158 gender CHAR(1),
159 seat INT,
160 age INT,
161 majorid INT
162 )
163 DESC stuinfo;
164 #1.添加非空约束
165 ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
166 #2.添加默认约束
167 ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
168 #3.添加主键
169 #①列级约束
170 ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
171 #②表级约束
172 ALTER TABLE stuinfo ADD PRIMARY KEY(id);
173
174 #4.添加唯一
175
176 #①列级约束
177 ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;
178 #②表级约束
179 ALTER TABLE stuinfo ADD UNIQUE(seat);
180
181
182 #5.添加外键
183 ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id);
184
185 #三、修改表时删除约束
186
187 #1.删除非空约束
188 ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;
189
190 #2.删除默认约束
191 ALTER TABLE stuinfo MODIFY COLUMN age INT ;
192
193 #3.删除主键
194 ALTER TABLE stuinfo DROP PRIMARY KEY;
195
196 #4.删除唯一
197 ALTER TABLE stuinfo DROP INDEX seat;
198
199 #5.删除外键
200 ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;
201
202 SHOW INDEX FROM stuinfo;