赞
踩
目录
方法一:在create table语句的末尾添加like子句,可以将源表的表结构复制到新表中,语法格式如下。
create table 新表名 like 源表
方法二:在create table语句的末尾添加一个select语句,可以实现表结构的复制,甚至可以将源表的表记录拷贝到新表中。下面的语法格式将源表的表结构以及源表的所有记录拷贝到新表中。
create table 新表名 select * from 源表
方法三:如果已经存在一张机构一致的表,复制数据
insert into 表 select * from 原表;
约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止。
约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
SQL CREATE TABLE + CONSTRAINT 语法:
- CREATE TABLE table_name
- (
- column_name1 data_type(size) constraint_name,
- -- 列名 数据类型 约束名
- column_name2 data_type(size) constraint_name,
- column_name3 data_type(size) constraint_name,
- ....
- );
大部分数据库支持下面约束: :
列级约束,只能使用列级约束语法定义。确保字段值不允许为空,只能在字段级定义
- --创建表时:
- CREATE TABLE tb_student(
- id INT PRIMARY KEY AUTO_INCREMENT,
- NAME VARCHAR(18) NOT NULL
- )AUTO_INCREMENT=1;
-
- --修改表时:
- ALTER TABLE tb_student MODIFY NAME VARCHAR(18) NOT NULL;
注:所有数据类型的值都可以是NULL;空字符串不等于NULL;0也不等于NULL。
auto_increment :自动增长,为新的行产生唯一的标识, 一个表只能有一个auto_increment,且该属性必须为主键的一部分。auto_increment的属性可以是任何整数类型
唯一性约束条件确保所在的字段或者字段组合不出现重复值;唯一性约束条件的字段允许出现多个NULL;同一张表内可建多个唯一约束;唯一约束可由多列组合而成;建唯一约束时MySQL会为之建立对应的索引。如果不给唯一约束起名,该唯一约束默认与列名相同。
- --创建表时:
- CREATE TABLE tb_student(
- id INT PRIMARY KEY AUTO_INCREMENT,
- NAME VARCHAR(18) UNIQUE NOT NULL
- );
-
- --修改表时:
- ALTER TABLE tb_student ADD UNIQUE (NAME)
不能有NULL值;主键从功能上看相当于非空且唯一;一个表中只允许一个主键;主键是表中唯一确定一行数据的字段;删除表的约束;自动增长和默认值;存储引擎;主键字段可以是单字段或者是多字段的组合;当建立主键约束时,MySQL为主键创建对应的索引;主键约束名总为PRIMARY。
- --创建表时:
- CREATE TABLE tb_student(
- id INT PRIMARY KEY AUTO_INCREMENT,
- NAME VARCHAR(18)
- );
-
- --修改表时:
- ALTER TABLE tb_student ADD PRIMARY KEY (id)
外键是构建于一个表的两个字段或者两个表的两个字段之间的关系;
外键确保了相关的两个字段的两个关系:1.子(从)表外键列的值必须在主表参照列值的范围内,或者为空(也可以加非空约束,强制不允许为空)。2.当主表的记录被子表参照时,主表记录不允许被删除。
外键参照的只能是主表主键或者唯一键,保证子表记录可以准确定位到被参照的记录。
格式FOREIGN KEY (外键列名)REFERENCES 主表(参照列)
- --创建表时:
- CREATE TABLE tb_dept(
- dept_id INT PRIMARY KEY,
- NAME VARCHAR(18),
- description VARCHAR(255)
- );
-
- CREATE TABLE tb_employee(
- employee_id INT PRIMARY KEY,
- NAME VARCHAR(18),
- gender VARCHAR(10),
- dept_id INT REFERENCES tb_dept(dept_id),
- address VARCHAR(255)
- );
-
- --修改表时:
- ALTER TABLE tb_employee
- ADD FOREIGN KEY (dept_id)
- REFERENCES Persons(dept_id)
注意检查约束在8.0之前,MySQL默认但不会强制的遵循check约束(写不报错,但是不生效,需要通触发器完成),8之后就开始正式支持这个约束了。
- --创建表时:
- create table t3(
- id int,
- age int check(age > 18),
- gender char(1) check(gender in ('M','F'))
- );
-
- --修改表时:
- ALTER TABLE t3 ADD CONSTRAINT chk_t3 CHECK (age > 18 AND gender in ('M','F'))
可以使用default关键字设置每一个字段的默认值。
- --创建表时:
- CREATE TABLE user(
- sex TINYINT(1) DEFAULT 1 COMMENT '性别 1男 0女',--默认sex值为1
- );
-
- --修改表时:
- ALTER TABLE user ALTER sex SET DEFAULT '1'
删除NOT NULL约束:
alter table 表名 modify 列名 类型;
删除UNIQUE约束:
alter table 表名 drop index 惟一约束名;
删除PRIMARY KEY约束:
alter table 表名 drop primary key;
删除FOREIGN KEY约束:
alter table 表名 drop foreign key 外键名;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。