①创建时:create table sc (
studentno int,
courseid int,
score int,
primary key (studentno) )
②修改时:ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名)
前提是原先没有设置主键。
2.外键语法
①创建时:create table sc (
studentno int,
courseid int,
score int,
foreign key (courseid) )
②修改时:
ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列]
3.使用组合主键
如果一列不能唯一区分一个表里的记录时,可以考虑多个列组合起来达到区分表记录的唯一性,形式
①创建时:create table sc (
studentno int,
courseid int,
score int,
primary key (studentno,courseid) )
②修改时:alter table tb_name add primary key (字段1,字段2,字段3)
前提是原来表中没有设置主键,若原先已有主键则会报错。
MySQL 数据库的语法, 与其它数据库的, 有些差异。使用 CHANGE COLUMN 来修改列的名字,还必须 设置 列的数据类型
mysql>desc test_tab
+-------+-------------+------+-----+---------+-------+
| Field | Type| Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id| int(11) | NO | PRI | 0 | |
| name | varchar(10) | YES | | NULL| |
| age | int(11) | YES | | NULL| |
| val | varchar(10) | YES | | NULL| |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql>ALTER TABLE test_tab
-> CHANGE COLUMN val val2 VARCHAR(10)
Query OK, 0 rows affected (0.13 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql>desc test_tab
+-------+-------------+------+-----+---------+-------+
| Field | Type| Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id| int(11) | NO | PRI | 0 | |
| name | varchar(10) | YES | | NULL| |
| age | int(11) | YES | | NULL| |
| val2 | varchar(10) | YES | | NULL| |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.02 sec)
注: RENAME COLUMN 是 Oracle 与 DB2 与 PostgreSQL 的语法:
例如:
Oracle:
SQL>ALTER TABLE test_tab
2RENAME COLUMN val TO val2
Table altered.
DB2:
db2 =>ALTER TABLE test_tab
db2 (cont.) => RENAME COLUMN val TO val2
DB20000I SQL 命令成功完成。
db2 =>select * from test_tab
ID NAME AGE VAL2
----------- ---------- ----------- ----------
0 条记录已选择。
PostgreSQL
Test=# ALTER TABLE test_tab RENAME COLUMN val TO val2
ALTER TABLE
Test=# \d test_tab
资料表 "public.test_tab"
栏位 | 型别 | 修饰词
------+-----------------------+--------
id | integer | 非空
name | character varying(10) |
age | integer |
val2 | character varying(10) |
索引:
"pk_test_tab" PRIMARY KEY, btree (id)
检查约束限制
"test_tab_age_check" CHECK (age >0 AND age <150)
日常开发中经常遇到AUTO_INCREMENT类型自增ID值不符合预期的情况,本经验为大家总结如何修改自增ID的初始值。方法/步骤
创建表时设置递增ID:
create table users (pkid int auto_increment primary key,...)
2
表创建完成后设置递增ID:
alter table users add pkid int auto_increment primary key
注意:自增字段,一定要设置为primary key.
3
很多时候不希望pkId从1开始,我们可能希望他从10000开始:
alter table users AUTO_INCREMENT=10000
4
你也可以修改现有的递增值, 比如大批量删除数据后,想id从654321退回123456开始:
alter table users AUTO_INCREMENT=123456
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)