精华内容
下载资源
问答
  • 1,表的基本概念 1,表是在库中,每个数据库包含N张表 ...语法格式为:create table 表名( 字段名1 字段类型1 [完整性约束], 字段名2 字段类型2 [完整性约束], ..... 字段名n 字段类型n [...

    1,表的基本概念

    1,表是在库中,每个数据库包含N张表
    一般是二维表的形式

    2,由行和列组成:可以将复杂的数据保存在简单的表中
    表中的每一行就是一条完整的记录
    表中的列用于保存每条记录中特定的信息

    2,创建表

    1,使用sql语句创建表

    语法格式为:create table 表名(
    字段名1 字段类型1 [完整性约束], 
    字段名2 字段类型2 [完整性约束],
    .....
    字段名n 字段类型n [完整性约束]
    )
    
    需要注意的是:
    1,表名不能使用关键字 例如database select where 
    2,每组字段名之间使用英文逗号隔开 但最后一个不需要逗号
    
    		例如创建一个学生信息表student(id,name,gender,age)
    create table Student (
    id int(6),
    name varchar(20),
    gender varchar(1),
    age int(2)
    );
    

    2,使用图形化界面创建
    点击选择的库名—双击—右键—new table

    3,表的查看修改删除操作

    1,查看表的基本结构
    			desc 表名;
    			例如查看Student表的基本结构:desc Student;
    
    2,查看表的详细结构(查看存储引擎和字符集)
    		show create table 表名;
    
    3,修改表结构
    		a,修改表名
    				alter table 旧表名 rename 新表名
    				例如将Student表名修改为t_student:alter table Student rename t_student;
    
    		b,修改字段数据类型
    				alter table 表名 modify 列名 新字段类型
    				例如将Student表中id的数据类型 修改为int(10):alter table Student modify id int(10);
    				
    		c,修改多个字段的数据类型
    				alter table 表名 modify 列名1 新字段类型1,
    								 modify 列名2 新字段类型2,
    								 ......
    								 modify 列名n 新字段类型n;
    				例如修改Student表中id int(8) name varchar(30)
    				alter table Student modify id int(8),
    									modify name varchar(30);
    
    		d,修改字段名
    				alter table 表名 change 旧字段名 新字段名 旧字段类型
    				例如Student表中gender修改为sex 
    				alter table Student change gender sex varchar(1);
    				
    		e,修改字段名并修改字段的数据类型
    				alter table 表名 change 旧字段名 新字段名 新字段类型
    				例如Student表中gender修改为sex  数据类型改为varchar(2)
    				alter table Student change gender sex varchar(2);
    
    		f,添加字段
    				alter table 表名 add 字段名 字段类型 [完整性约束] [first |after 字段名]  after 是添加到指定字段的后面
    				例如在表的末尾添加score字段 alter table student add score float;
    				例如在表第一个位置添加phone字段 alter table student add phone varchar(11) first;
    				例如在表age的后面添加class字段 alter table student add class varchar(30) after age;
    				
    		g,删除字段
    				alter table 表名 drop 列名
    				例如删除表student中phone
    				
    		h,删除表
    				使用sql语句删除  drop table 表名;
    				使用图形化界面 右键 直接删除表
    

    **

    4,完整性约束

    **

    1,MySQL支持的完整性约束
    		约束条件 			描述
    		primary key		   主键约束
    		unique  		   唯一约束
    		not null		   非空约束
    		default		  	  默认约束
    		auto_increment	  自动增长约束
    		foreign key      外键约束
    	
    a,主键约束 特点是:唯一且非空
    
    		可以由一个字段组成,也可以由多个字段组成
    		如果主键由一个字段组成,既可以添加到列级,也可以添加到表级
    		如果由多个字段组成,只能添加到表级
    
    		(1)在字段的列级添加约束 creat table 表名(字段名 字段类型 primary key)
    		
    				例如创建student1表(id name age sex) 其中id为主键
    				create table student1(
    				id int(8) primary key,
    				name varchar(20),
    				age int(2),
    				sex varchar(1)
    				)
    				
    		(2)在表级上添加主键约束
    		
    				语法格式为:create table 表名(
    							字段名1 字段类型1, 
    							字段名2 字段类型2,
    							.....
    							字段名n 字段类型n,
    							[constraint 主键约束名] primary key(字段名)
    							)
    				例如创建student1表(id name age sex) 其中id为主键 在表级添加主键约束
    				create table student2 (
    				id int(8),
    				name varchar(20),
    				age int(2),
    				sex varchar(1),
    				constraint pk_student2 primary key (id)
    				)
    				
    		(3)多个字段作为主键,只能添加到表级
    					语法格式为:create table 表名(
    							字段名1 字段类型1, 
    							字段名2 字段类型2,
    							.....
    							字段名n 字段类型n,
    							[constraint 主键约束名] primary key(字段名1, 字段名2)
    							)
    				例如创建student1表(school id name age sex) 其中school和id为主键 在表级添加主键约束
    				create table student4 (
    				school varchar(10),
    				id int(8),
    				name varchar(20),
    				age int(2),
    				sex varchar(1),
    				constraint pk_student4 primary key (school,id)
    				)
    
    b,给已有表添加主键约束
    
    		语法:alter table 表名 add [constraint 主键约束名] primary key (字段名)
    		---创建表student5,不加id主键约束
    		create table student5(
    		id int(8),
    		name varchar(20),
    		age int(2),
    		sex varchar(1)
    		)
    		desc student5;
    		---表创建完后,添加主键约束
    		alter table student5 add constraint pk_student5 primary key (id);
    
    c,删除主键约束
    		语法 alter table 表名 drop primary key;
    		alter table student5 drop primary key;
    

    unique 唯一约束

    唯一约束是指:表中字段的值不能重复
    
    		(1)列级添加唯一约束
    				create table 表名(
    				字段名1 字段类型1 unique, 
    				字段名2 字段类型2,
    				.....
    				字段名n 字段类型n)
    
    				例如:创建表student,给name字段添加唯一约束
    				create table student(
    				name varchar(20) unique,
    				age int(2),
    				gender varchar(1),
    				phone varchar(11)
    				)
    				
    		(2)在表级添加唯一约束
    				语法格式为:create table 表名(
    							字段名1 字段类型1, 
    							字段名2 字段类型2,
    							.....
    							字段名n 字段类型n,
    							[constraint 唯一约束名] unique (字段名1, 字段名2)
    							)
    				例如:创建表student,给name 和 id 字段添加唯一约束
    				create table student(
    				name varchar(5),
    				phone int(8),
    				sex varchar(1),
    				id int(10),
    				constraint uk_student_id_name unique (name, id)
    				)
    
    		(3)给已有表添加唯一约束
    		语法:alter table 表名 add [constraint 唯一约束名] unique (字段名1, 字段名2)
    				---创建表student,先不加id唯一约束
    				create table student(
    				name varchar(4),
    				id int(8),
    				sex varchar(1),
    				score int(3)
    				)
    				 ------表创建完后,添加唯一约束
    				 alter table student add constraint uk_student_id unique (id);
    
    		(4)删除唯一约束
    		alter table 表名 drop index 唯一约束名
    		alter table student drop index uk_student_id;
    		(如果单个字段没有指定约束名,则默认的唯一约束名为字段名)
    		(如果多个字段组合为唯一约束时,默认的唯一约束名为第一个字段名)
    		(如果指定了约束名,则删除的时候直接写约束名)
    			
    

    not null 非空约束

    非空约束是指:表中的某字段的值不能为空
    
    		需要注意的是:非空约束只能使用列级添加   空字符串 "" 和 0都不是null
    		
    		(1)列级添加非空约束
    		语法格式为:create table 表名(
    							字段名 字段类型 not null
    							)
    			例如创建student表,给name添加非空约束
    				create table student(
    				name varchar(3) not null,
    				id int(20),
    				gender varchar(1)
    				)
    			
    		(2)给已有表添加非空约束
    				alter table 表名 modify 字段名字 字段类型 not null
    				 -----创建表student,先不加id非空约束
    				create table student(
    				name varchar(4),
    				id int(8),
    				sex varchar(1),
    				score int(3)
    				)
    				 ------表创建完后,添加唯一约束
    				 alter table student modify gender varchar(1) not null;
    
    		(3)删除非空约束
    		alter table 表名 modify 字段名 字段类型 [null]
    		alter table student modify gender varchar(1) null;
    		另外一种写法为:
    		alter table student modify gender varchar(1);
    
    

    default 默认值约束

    默认值约束是指:在没有对某字段插入具体值的时候去默认的值
    
    		注意:
    		1,只能只能使用列级约束
    		2,如果插入的数据为null,则不会使用默认值。当没有插入数据的时候,才会使用默认值。
    	 
    	 (1)列级添加默认值约束
    	 		语法格式为:create table 表名(
    							字段名 字段类型 default value
    							)
    	 		例如create table student(
    					name varchar(4),
    					id int(8),
    					gender varchar(1) default "男"
    					)
    					
    	 (2)给已有表添加默认值约束
    	 		语法:alter table 表名 modify 字段名 字段类型 default value;
    	 				alter table student modify gender varchar(1) default "女";
    
    	 (3)删除默认值约束
    	 		alter table 表名 modify 字段名 字段类型;
    	 		例如删除gender的默认值"女":alter table student modify gender varchar(1);
    	 		
    

    auto_increment 自动增长约束

    自动增长约束:是指表中的某字段的值会自动增加
    
    注意:
    		一张表中只能有一个自动增长的字段
    		通常配合主键一起使用,并且只适用于整数类型
    		自动增长的默认初始值为1,每增加一条记录,该字段的值会+1
    
    (1)创建表时候,创建自动增长约束
    		语法格式为:create table 表名(
    							字段名 字段类型 auto_increment
    							)
    				例如创建表student,给id添加主键和自动增长约束	
    					create table student(
    					name varchar(20),
    					id int(8) primary key auto_increment,
    					gender varchar(1)
    					)
    					
    (2)给已有表添加自动增长约束
    		语法:alter table 表名 modify 字段名 字段类型 auto_increment
    							create table student(
    							name varchar(4),
    							id int(8) primary key,
    							gender varchar(1)
    							)
    				alter table student modify id int(8) auto_increment;
    
    (3)删除 自动增长约束
    		语法:alter table 表名 modify 字段名 字段类型
    				alter table student modify id int(8);
    

    foreign key 外键约束

    外键约束:是指某一张表中字段的值依赖于另一张表中某字段的值
    		例如:班级表class 和 学生表student  二者之间的关系是1:n
    		
    作用是:主要实现了数据库中的参照完整性
    		将两张表紧密结合,对某张表修改或删除的时候,要保证数据的完整性
    
    (1)创建外键约束
    		注意:虽然MySQL提供了列级添加外键约束,但添加后不会生效。所以要使用表级添加外键约束。
    
    		语法格式为:create table 表名(
    						字段名 字段类型,
    						[constraint 外键约束名] foreign key (字段名) references 表(字段名)
    						)
    				---创建班级表
    				create table class(
    				cno int(8) primary key auto_increment,
    				cname varchar(4)
    				)
    				desc class;
    				---创建学生表
    				create table student(
    				cno int(8) primary key auto_increment,
    				cname varchar(4),
    				age int(2),
    				gender varchar(1),
    				stu_cno int(8)
    				constraint fk_student_stu_cno foreign key(stu_cno) references class (cno)
    				)
    
    (2)给已有表中添加外键约束
    		语法为:alter table 表名 add [constraint 外键约束名] foreign key (字段名) references 表(字段名)
    		
    ---创建班级表
    create table class(
    cno int(8) primary key auto_increment,
    cname varchar(2)
    )
    ---创建学生表
    create table student(
    sno int(8) primary key auto_increment,
    sname varchar(20),
    stu_cno int(8)
    ) 
    
    ---给学生表添加外键约束
    alter table student add constraint fk_student_stu_cno foreign key(stu_cno) references class(cno);
    
    
    (3)删除外键约束
    语法为:alter table 表名 drop foreign key 外键约束名
    例如:alter table student drop foreign key fk_student_stu_cno;
    
    (4)有依赖关系的表删除
    		a,先删除有外键约束的表,再删除主表 顺序不能颠倒
    		drop table student;
    		drop table class;
    		 
    		b,先删除外键约束,再删除表
    
    展开全文
  • 非空约束的基本语法格式 默认值 外键约束 什么是外键约束 创建约束的语法 删除外键 外键的级联 数据约束小结 数据库表的约束 数据库约束的概述 约束的作用 对表中的数据进行限制,保证数据的正确性.

    目录

    数据库表的约束

    数据库约束的概述

    约束的作用

    约束种类

    主键约束

    主键的作用

    ​哪个字段应该作为表的主键? 

    创建主键

    删除主键

    主键自增

    修改自增长的默认值起始值

    DELETE 和 TRUNCATE 对自增长的影响

    唯一约束

    唯一约束的基本格式

    非空约束

    非空约束的基本语法格式

    默认值

    外键约束

    什么是外键约束

    创建约束的语法

    删除外键

    外键的级联

    数据约束小结


    数据库表的约束

    数据库约束的概述

    约束的作用

    • 对表中的数据进行限制,保证数据正确性、有效性和完整性
    • 一个表如果添加了约束,不正确的数据将无法插入到表中
    • 约束在创建表的时候添加比较合适

    约束种类

    约束名 约束关键字
    主键 primary key
    唯一 unique
    非空 not null
    外键 foreign key
    检查约束 check 注:mysql 不支持

    主键约束

    主键的作用

    • 用来唯一标识数据库中的每一条记录


    哪个字段应该作为表的主键? 

    • 通常不用业务字段作为主键,单独给每张表设计一个 id 的字段,把 id 作为主键
    • 主键是给数据库和程序使用的,不是给最终的客户使用的。所以主键有没有含义没有关系,只要不重复,非空就行
      • 如:身份证,学号不建议做成主键

    创建主键

    • 主键关键字: primary key
    • 主键的特点:
      • 1) 非空 not null
      • 2) 唯一
    • 在创建表的时候给字段添加主键
    字段名 字段类型 PRIMARY KEY
    • 在已有表中添加主键
    ALTER TABLE 表名 ADD PRIMARY KEY(字段名);
    -- 创建表学生表 st5, 包含字段(id, name, age)将 id 做为主键
    create table st5 (
     id int primary key, -- id 为主键
     name varchar(20),
     age int
    )
    desc st5;

    删除主键

    -- 删除 st5 表的主键
    alter table st5 drop primary key;
    -- 添加主键
    alter table st5 add primary key(id);

    主键自增

    • 主键如果让我们自己添加很有可能重复,我们通常希望在每次插入新记录时,数据库自动生成主键字段的值
    AUTO_INCREMENT 表示自动增长(字段类型必须是整数类型)

    修改自增长的默认值起始值

    • 默认地 AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,请使用下列 SQL 语法
    • 创建表时指定起始值
    CREATE TABLE 表名(
    列名 int primary key AUTO_INCREMENT
    ) AUTO_INCREMENT=起始值;
    -- 指定起始值为 1000
    create table st4 (
     id int primary key auto_increment,
     name varchar(20)
    ) auto_increment = 1000;
    insert into st4 values (null, '孔明');
    select * from st4;
    • 创建好以后修改起始值
    alter table st4 auto_increment = 2000;
    insert into st4 values (null, '刘备');

    DELETE 和 TRUNCATE 对自增长的影响

    • DELETE:删除所有的记录之后,自增长没有影响。

    • TRUNCATE:删除以后,自增长又重新开始

    唯一约束

    • 什么是唯一约束: 表中某一列不能出现重复的值

    唯一约束的基本格式

    字段名 字段类型 UNIQUE
    • 实现唯一约束
    -- 创建学生表 st7, 包含字段(id, name),name 这一列设置唯一约束,不能出现同名的学生
    create table st7 (
     id int,
     name varchar(20) unique
    )
    -- 添加一个同名的学生
    insert into st7 values (1, '张三');
    select * from st7;
    -- Duplicate entry '张三' for key 'name'
    insert into st7 values (2, '张三');
    -- 重复插入多个 null 会怎样?
    insert into st7 values (2, null);
    insert into st7 values (3, null);

    • null 没有数据,不存在重复的问题

    非空约束

    • 什么是非空约束:某一列不能为 null

    非空约束的基本语法格式

    -- 创建表学生表 st8, 包含字段(id,name,gender)其中 name 不能为 NULL
    create table st8 (
    id int,
    name varchar(20) not null,
    gender char(1)
    )
    -- 添加一条记录其中姓名不赋值
    insert into st8 values (1,'张三疯','男');
    select * from st8;
    -- Column 'name' cannot be null
    insert into st8 values (2,null,'男');

    默认值

    • 什么是默认值:
    字段名 字段类型 DEFAULT 默认值
    -- 创建一个学生表 st9,包含字段(id,name,address), 地址默认值是广州
    create table st9 (
     id int,
     name varchar(20),
     address varchar(20) default '广州'
    )
    -- 添加一条记录,使用默认地址
    insert into st9 values (1, '李四', default);
    select * from st9;
    insert into st9 (id,name) values (2, '李白');
    -- 添加一条记录,不使用默认地址
    insert into st9 values (3, '李四光', '深圳');
    • 疑问:如果一个字段设置了非空与唯一约束,该字段与主键的区别?
      • 主键数在一个表中,只能有一个。不能出现多个主键。
      • 主键可以单列,也可以是多列。
      • 自增长只能用在主键上

    外键约束

    • 单表的缺点
      • 创建一个员工表包含如下列(id, name, age, dep_name, dep_location),id 主键并自动增长,添加 5 条数据
    CREATE TABLE emp (
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(30),
    age INT,
    dep_name VARCHAR(30),
    dep_location VARCHAR(30)
    );
    -- 添加数据
    INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('张三', 20, '研发部', '广州');
    INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('李四', 21, '研发部', '广州');
    INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('王五', 20, '研发部', '广州');
    INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('老王', 20, '销售部', '深圳');
    INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('大王', 22, '销售部', '深圳');
    INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('小王', 18, '销售部', '深圳');
    • 以上数据表的缺点:
      •  数据冗余
      • 后期还会出现增删改的问题

    • 解决方案

    -- 解决方案:分成 2 张表
    -- 创建部门表(id,dep_name,dep_location)
    -- 一方,主表
    create table department(
    id int primary key auto_increment,
    dep_name varchar(20),
    dep_location varchar(20)
    );
    -- 创建员工表(id,name,age,dep_id)
    -- 多方,从表
    create table employee(
    id int primary key auto_increment,
    name varchar(20),
    age int,
    dep_id int -- 外键对应主表的主键
    )
    -- 添加 2 个部门
    insert into department values(null, '研发部','广州'),(null, '销售部', '深圳');
    select * from department;
    -- 添加员工,dep_id 表示员工所在的部门
    INSERT INTO employee (NAME, age, dep_id) VALUES ('张三', 20, 1);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('李四', 21, 1);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('王五', 20, 1);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('老王', 20, 2);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('大王', 22, 2);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('小王', 18, 2);
    select * from employee;
    • 问题:当我们在 employee 的 dep_id 里面输入不存在的部门,数据依然可以添加.但是并没有对应的部门,实际应用中不能出现这种情况。employee 的 dep_id 中的数据只能是 department 表中存在的 id

    • 目标: 需要约束 dep_id 只能是 department 表中已经存在 id
    • 解决方式: 使用外键约束

    什么是外键约束

    • 什么是外键:在从表中与主表主键对应的那一列,如:员工表中的 dep_id
      • 主表: 一方,用来约束别人的表
      • 从表: 多方,被别人约束的表

    创建约束的语法

    • 新建表时增加外键:
    [CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
    • 已有表增加外键:
    ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名);
    • 具体操作:
    -- 1) 删除副表/从表 employee
    drop table employee;
    -- 2) 创建从表 employee 并添加外键约束 emp_depid_fk
    -- 多方,从表
    create table employee(
    id int primary key auto_increment,
    name varchar(20),
    age int,
    dep_id int, -- 外键对应主表的主键
    -- 创建外键约束
    constraint emp_depid_fk foreign key (dep_id) references department(id)
    )
    -- 3) 正常添加数据
    INSERT INTO employee (NAME, age, dep_id) VALUES ('张三', 20, 1);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('李四', 21, 1);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('王五', 20, 1);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('老王', 20, 2);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('大王', 22, 2);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('小王', 18, 2);
    select * from employee;
    -- 4) 部门错误的数据添加失败
    -- 插入不存在的部门
    -- Cannot add or update a child row: a foreign key constraint fails
    INSERT INTO employee (NAME, age, dep_id) VALUES ('老张', 18, 6);

    删除外键

    ALTER TABLE 从表 drop foreign key 外键名称;
    -- 删除 employee 表的 emp_depid_fk 外键
    alter table employee drop foreign key emp_depid_fk;
    -- 在 employee 表情存在的情况下添加外键
    alter table employee add constraint emp_depid_fk foreign key (dep_id) references department(id);

    外键的级联

    • 出现新的问题:
    select * from employee;
    select * from department;
    -- 要把部门表中的 id 值 2,改成 5,能不能直接更新呢?
    -- Cannot delete or update a parent row: a foreign key constraint fails
    update department set id=5 where id=2;
    -- 要删除部门 id 等于 1 的部门, 能不能直接删除呢?
    -- Cannot delete or update a parent row: a foreign key constraint fails
    delete from department where id=1;
    • 什么是级联操作:
      • 在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作
    级联操作语法 描述
    ON UPDATE CASCADE 级联更新,只能是创建表的时候创建级联关系。更新主表中的主键,从表中的外键列也自动同步更新
    ON DELETE CASCADE 级联删除
    -- 删除 employee 表,重新创建 employee 表,添加级联更新和级联删除
    drop table employee;
    create table employee(
    id int primary key auto_increment,
    name varchar(20),
    age int,
    dep_id int, -- 外键对应主表的主键
    -- 创建外键约束
    constraint emp_depid_fk foreign key (dep_id) references
    department(id) on update cascade on delete cascade
    )
    -- 再次添加数据到员工表和部门表
    INSERT INTO employee (NAME, age, dep_id) VALUES ('张三', 20, 1);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('李四', 21, 1);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('王五', 20, 1);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('老王', 20, 2);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('大王', 22, 2);
    INSERT INTO employee (NAME, age, dep_id) VALUES ('小王', 18, 2);
    -- 删除部门表?能不能直接删除?
    drop table department;
    -- 把部门表中 id 等于 1 的部门改成 id 等于 10
    update department set id=10 where id=1;
    select * from employee;
    select * from department;
    -- 删除部门号是 2 的部门
    delete from department where id=2;

    数据约束小结

    约束名 关键字 说明
    主键 primary key 1) 唯一
    2) 非空
    默认 default 如果一列没有值,使用默认值
    非空 not null 这一列必须有值
    唯一 unique 这一列不能有重复值
    外键 foreign key 主表中主键列,在从表中外键列

    【注】参考黑马MySQL教程

    展开全文
  • 为了防止数据表中插入错误数据,MySQL定义了一些维护数据库完整性规则,即表的约束。常见约束分为5种,分别是默认约束、...默认值是通过DEFAULT关键字定义,其基本语法格式如下。 字段名 数据类型 DEFAULT默认值;

    为了防止数据表中插入错误的数据,MySQL定义了一些维护数据库完整性的规则,即表的约束。常见约束分为5种,分别是默认约束、非空约束、主键约束、唯一约束和外键约束。外键约束比较复杂,涉及多表操作,将在后面的章节中讲解,本节主要讲解其余4种约束的使用方法。
    1.2.1默认约束
    默认约束用于为数据表中的字段指定默认值,即当在表中插入一条新记录时,如果没有给这个字段赋值,那么,数据库系统会自动为这个字段插入默认值。默认值是通过DEFAULT关键字定义的,其基本语法格式如下。
    字段名 数据类型 DEFAULT默认值;
    需要注意的是,BLOB、TEXT数据类型不支持默认约束。下面通过案例演示默认约束的使用及注意事项。
    (1)创建my_default表,准备name和age两个字段进行测试,为age添加默认约束,设置默认值为18。

    mysql> CREATE TABLE my_default (
        ->   name VARCHAR(10),
        ->   age INT UNSIGNED DEFAULT 18
        -> );
    

    (2)使用DESC查看表结构,结果如下所示。…

    mysql> DESC my_default;
    +-------+------------------+------+-----+---------+-------+
    | Field | Type             | Null | Key | Default | Extra |
    +-------+------------------+------+-----+---------+-------+
    | name  | varchar(10)      | YES  |     | NULL    |       |
    | age   | int(10) unsigned | YES  |     | 18      |       |
    +-------+------------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    

    (3)插入记录进行测试,具体SQL语句及执行结果如下。
    ① 在插入记录时省略name和age字段

    mysql> INSERT INTO my_default VALUES();
    Query OK, 1 row affected (0.00 sec)
    

    ② 在插入记录时省略age字段

    mysql> INSERT INTO my_default (name) VALUES('a');
    Query OK, 1 row affected (0.00 sec)
    

    ③ 在age字段中插入NULL值

    mysql> INSERT INTO my_default VALUES('b', NULL);
    Query OK, 1 row affected (0.00 sec)
    

    ④ 在age字段中使用默认值

    mysql> INSERT INTO my_default VALUES('c', DEFAULT);
    Query OK, 1 row affected (0.00 sec)
    

    ⑤ 查询结果

    mysql> SELECT * FROM my_default;
    +------+------+
    | name | age  |
    +------+------+
    | NULL |   18 |
    | a    |   18 |
    | b    | NULL |
    | c    |   18 |
    +------+------+
    4 rows in set (0.00 sec)
    

    在上述示例中,由于name和age字段没有设置非空约束,在插入记录时省略了这两个字段的值,则分别使用默认值NULL和18。为age字段设置默认值18后,插入NULL值,则保存结果为NULL,不使用默认值。在为有默认值的字段指定数据时,可以通过DEFAULT关键字直接指定其使用默认值。
    (4)为现有的表添加或删除默认约束,具体SQL语句及执行结果如下。
    ① 删除默认约束

    mysql> ALTER TABLE my_default MODIFY age INT UNSIGNED;
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    

    ② 添加默认约束

    mysql> ALTER TABLE my_default MODIFY age INT UNSIGNED DEFAULT 18;
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    

    通过上述示例可以看出,使用ALTERTABLE修改列属性即可添加或删除默认约束。

    1.2.2非空约束
    非空约束指的是字段的值不能为NULL,在MySQL中,非空约束是通过NOTNULL定义的,其基本语法格式如下。字段名数据类型NOT NULL;
    为了让读者更好地理解,下面通过案例演示非空约束的使用及注意事项。
    (1)创建my_ not_ null表,准备n1、n2和n3字段进行测试,为n2和n3设置非空约束,为n3设置默认值为18。

    mysql> CREATE TABLE my_not_null (
        ->   n1 INT,
        ->   n2 INT NOT NULL,
        ->   n3 INT NOT NULL DEFAULT 18
    -> );
    

    (2)使用DESC查看表结构,结果如下所示。

    mysql> DESC my_not_null;
    +-------+---------+------+-----+---------+-------+
    | Field | Type    | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | n1    | int(11) | YES  |     | NULL    |       |
    | n2    | int(11) | NO   |     | NULL    |       |
    | n3    | int(11) | NO   |     | 18      |       |
    +-------+---------+------+-----+---------+-------+
    3 rows in set (0.00 sec)
    

    在上述结果中,Null列的值为NO表示该字段添加了非空约束。需要注意的是,添加了非空约束的n2字段的Default为NULL,表示未给该字段设置默认值,而不能将其理解为默认值为NULL,否则在插入数据时,若n2字段为NULL, MySQL会报“Column ‘n2’ cannot be null"错误提示。另外,在创建数据表时,非空约束与值为NULL的默认约束(DEFULTNULL)不能同时存在,否则数据表在创建时会失败,提示“Invaliddefaultvalue for 'n2"错误。
    (3)插入记录进行测试,具体SQL语句及执行结果如下。
    ① 省略n2字段,插入失败,提示n2没有默认值

    mysql> INSERT INTO my_not_null VALUES();
    ERROR 1364 (HY000): Field 'n2' doesn't have a default value
    

    ② 将n2字段设为NULL,插入失败,提示n2字段不能为NULL

    mysql> INSERT INTO my_not_null VALUES(NULL, NULL, NULL);
    ERROR 1048 (23000): Column 'n2' cannot be null
    

    ③ 将n3字段设为NULL,插入失败,提示n3字段不能为NULL

    mysql> INSERT INTO my_not_null VALUES(NULL, 20, NULL);
    ERROR 1048 (23000): Column 'n3' cannot be null
    

    ④ 省略n1和n3字段,插入成功

    mysql> INSERT INTO my_not_null (n2) VALUES(20);
    Query OK, 1 row affected (0.00 sec)
    

    ⑤ 查询结果

    mysql> SELECT * FROM my_not_null;
    +------+----+----+
    | n1   | n2 | n3 |
    +------+----+----+
    | NULL | 20 | 18 |
    +------+----+----+
    1 row in set (0.00 sec)
    

    在上述示例中,由于n2字段不能为NULL且没有默认值,在插入时不能插入NULL或省略该字段;n3字段设置了默认值,在插入时可以省略该字段,但不能插入NULL。

    提示:为现有的表添加或删除非空约束的方式与默认约束类似,使用ALTER TABLE修改列属性即可。但若目标列中已经保存了NULL值,添加非空约束会失败,提示"Invalid use of NULL value",只要将NULL值改为其他值即可解决。

    1.2.3唯一约束
    唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。唯一约束是通过UNIQUE定义的,其基本语法格式如下所示。

    • 列级约束

    字段名 数据类型 UNIQUE;

    • 表级约束

    UNIQUE(字段名1, 字段名2, …);

    在上述语法格式中,列级约束和表级约束是MySQL中的两种定义约束的方式。列级约束定义在一个列上,只对该列起约束作用;表级约束是独立于列的定义,可以应用在一个表的多个列上。
    为了让读者更好地理解,下面通过案例演示唯一约束的使用及注意事项。
    (1)创建my_unique_1表和my_unique_2表,分别通过列级约束和表级约束的方式添加唯一约束。具体SQL语句和执行结果如下。

    • 列级约束
    mysql> CREATE TABLE my_unique_1 (
        ->   id INT UNSIGNED UNIQUE,
        ->   username VARCHAR(10) UNIQUE
        -> );
    Query OK, 0 rows affected (0.01 sec)
    
    • 表级约束
    mysql> CREATE TABLE my_unique_2 (
        ->   id INT UNSIGNED,
        ->   username VARCHAR(10),
        ->   UNIQUE(id),
        ->   UNIQUE(username)
        -> );
    Query OK, 0 rows affected (0.01 sec)
    

    接着使用DESC查看my_unique_1表和my_unique_2表的结构,会发现两个表的结构是相同的,如下所示。

    +----------+------------------+------+-----+---------+-------+
    | Field    | Type             | Null | Key | Default | Extra |
    +----------+------------------+------+-----+---------+-------+
    | id       | int(10) unsigned | YES  | UNI | NULL    |       |
    | username | varchar(10)      | YES  | UNI | NULL    |       |
    +----------+------------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    

    在上述结果中,如果在id和username的Key列看到UNI,说明唯一约束已经添加成功,这两个字段是唯一键。值得一提的是,当表级约束仅建立在一个字段上时,其作用效果与列级约束相同。
    (2)为含唯一约束的字段插入记录,具体SQL语句及执行结果如下。
    ① 插入不重复记录,插入成功

    mysql> INSERT INTO my_unique_1 (id) VALUES(1);
    Query OK, 1 rows affected (0.01 sec)
    mysql> INSERT INTO my_unique_1 (id) VALUES(2);
    Query OK, 1 rows affected (0.01 sec)
    

    ② 插入重复记录,插入失败

    mysql> INSERT INTO my_unique_1 (id) VALUES(1);
    ERROR 1062 (23000): Duplicate entry '1' for key 'id'
    

    ③ 查询插入的结果

    mysql> SELECT * FROM my_unique_1;
    +------+----------+
    | id   | username |
    +------+----------+
    |    1 | NULL     |
    |    2 | NULL     |
    +------+----------+
    2 rows in set (0.00 sec)
    

    从上述结果可以看出,添加唯一约束后,插入重复记录会失败。其中,username字段出现了重复值NULL,这是因为MySQL的唯一约束允许存在多个NULL值。
    (3)添加和删除唯一性约束。若为一个现有的表添加或删除唯一约束,无法通过修改字段属性的方式操作,而是按照索引的方式来操作。关于索引的概念和使用会在后面的章节中详细讲解,读者此时只需了解用到的这些操作即可。具体SQL语句及执行结果如下。
    ① 创建测试表

    mysql> CREATE TABLE my_unique_3 (id INT);
    Query OK, 0 rows affected (0.01 sec)
    

    ② 添加唯一约束

    mysql> ALTER TABLE my_unique_3 ADD UNIQUE(id);
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    

    ③ 查看添加结果

    mysql> SHOW CREATE TABLE my_unique_3\G
    *************************** 1. row ***************************
           Table: my_unique_3
    Create Table: CREATE TABLE `my_unique_3` (
      `id` int(11) DEFAULT NULL,
      UNIQUE KEY `id` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1
    1 row in set (0.00 sec)
    

    ④ 删除唯一约束

    mysql> ALTER TABLE my_unique_3 DROP INDEX id;
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    

    ⑤ 查看删除结果

    mysql> SHOW CREATE TABLE my_unique_3\G
    *************************** 1. row ***************************
           Table: my_unique_3
    Create Table: CREATE TABLE `my_unique_3` (
      `id` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1
    1 row in set (0.00 sec)
    

    在上述操作中,第③步的执行结果中出现了“UNIQUE KEY id(id)”,它是添加唯一约束的完整语法,即UNIQUE(id)的完整形式,如下所示。
    UNIQUE KEY 索引名(字段列表)
    上述语法表示在添加唯一约束时创建索引,用于加快查询速度。其中,索引名可以自己指定,也可以省略,MySQL会自动使用字段作为索引名。当需要对索引进行删除时,需要指定这个索引名。
    (4)创建复合唯一约束。在表级唯一性约束创建时, UNIQUE(的字段列表中,可以添加多个字段,组成复合唯一键,其特点是只有多个字段的值相同时才视为重复记录。具体SQL语句及执行结果如下。
    ① 创建测试表,添加复合唯一键

    mysql> CREATE TABLE my_unique_4 (
        ->   id INT UNSIGNED, username VARCHAR(10),
        ->   UNIQUE(id, username)
        -> );
    Query OK, 0 rows affected (0.01 sec)
    

    ② 插入不重复记录,插入成功

    mysql> INSERT INTO my_unique_4 VALUES(1, '2');
    Query OK, 1 row affected (0.00 sec)
    mysql> INSERT INTO my_unique_4 VALUES(1, '3');
    Query OK, 1 row affected (0.00 sec)
    

    ③ 插入重复记录,插入失败

    mysql> INSERT INTO my_unique_4 VALUES(1, '2');
    ERROR 1062 (23000): Duplicate entry '1-2' for key 'id'
    

    从上述结果可以看出,当同一个字段两次插入的记录相同时,插入成功,只有当两个字段同时发生重复时,插入记录失败。

    1.2.4主键约束
    在MySQL中,为了快速查找表中的某条信息,可以通过设置主键来实现。主键可以唯一标识表中的记录,类似指纹、身份证用于标识人的身份一样。
    主键约束通过PRIMARY KEY定义,它相当于唯一约束和非空约束的组合,要求被约束字段不允许重复,也不允许出现NULL值,每个表最多只允许含有一个主键。
    主键约束的创建也分为列级和表级。其基本语法格式如下。.

    #列级约束 字段名数 据类型 PRIMARY KEY
    #表级约束 PRIMARY KEY (字段名1,字段名2,…)

    在上述语法中,表级约束的字段若只有一个,则为单字段主键与列级约束添加的效果相同;若有多个,则为复合主键。复合主键需要用多个字段来确定一条记录的唯一性,类似于复合唯一键。
    为了让读者更好地理解,下面通过案例演示主键约束的使用及注意事项。.
    (1)创建my_primary表,为id字段添加主键约束。

    mysql> CREATE TABLE my_primary (
        ->   id INT UNSIGNED PRIMARY KEY,
        ->   username VARCHAR(20)
        -> );
    

    (2)使用DESC查看表结构,执行结果如下。

    mysql> DESC my_primary;
    +----------+------------------+------+-----+---------+-------+
    | Field    | Type             | Null | Key | Default | Extra |
    +----------+------------------+------+-----+---------+-------+
    | id       | int(10) unsigned | NO   | PRI | NULL    |       |
    | username | varchar(20)      | YES  |     | NULL    |       |
    +----------+------------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    

    从上述结果可以看出,id字段的Key列为PRI,表示该字段为主键。同时,id字段的Null列为NO,表示该字段不能为NULL。
    (3)插入记录进行测试,具体SQL语句及执行结果如下。
    ① 插入测试记录,插入成功

    mysql> INSERT INTO my_primary VALUES(1, 'Tom');
    Query OK, 1 row affected (0.00 sec)
    

    ② 为主键插入NULL值,插入失败

    mysql> INSERT INTO my_primary VALUES(NULL, 'Jack');
    ERROR 1048 (23000): Column 'id' cannot be null
    

    ③ 为主键插入重复值,插入失败

    mysql> INSERT INTO my_primary VALUES(1, 'Alex');
    ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
    

    从上述结果可以看出,添加主键约束后,插入重复值或NULL值会失败。
    (4)为一个现有的表添加或删除主键约束,具体SQL语句及执行结果如下。
    ① 删除主键约束

    mysql> ALTER TABLE my_primary DROP PRIMARY KEY;
    Query OK, 1 row affected (0.04 sec)
    Records: 1  Duplicates: 0  Warnings: 0
    

    ② 查看删除结果

    mysql> DESC my_primary;
    +----------+------------------+------+-----+---------+-------+
    | Field    | Type             | Null | Key | Default | Extra |
    +----------+------------------+------+-----+---------+-------+
    | id       | int(10) unsigned | NO   |     | NULL    |       |
    | username | varchar(20)      | YES  |     | NULL    |       |
    +----------+------------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    

    ③ 删除id字段的非空约束(根据需要)

    mysql> ALTER TABLE my_primary MODIFY id INT UNSIGNED;
    Query OK, 0 rows affected (0.05 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    

    ④ 添加主键约束

    mysql> ALTER TABLE my_primary ADD PRIMARY KEY (id);
    Query OK, 0 rows affected (0.05 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    

    ⑤ 查看添加结果

    mysql> DESC my_primary;
    +----------+------------------+------+-----+---------+-------+
    | Field    | Type             | Null | Key | Default | Extra |
    +----------+------------------+------+-----+---------+-------+
    | id       | int(10) unsigned | NO   | PRI | NULL    |       |
    | username | varchar(20)      | YES  |     | NULL    |       |
    +----------+------------------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    

    从上述结果可以看出,在删除id字段的主键约束后,该字段的非空约束并没有被同时删除。若需要删除id字段的非空约束,执行第③步删除操作即可。

    1.3自动增长
    在为数据表设置主键约束后,每次插入记录时,都需要检查主键的值,防止插入的值重复导致插入失败,这会给数据库的使用带来很多麻烦。为此,可以利用MySQL提供的自动增长功能来自动生成主键的值。
    自动增长功能通过AUTO_INCREMENT来实现,其基本语法格式如下。

    字段名 数据类型 AUTO_INCREMENT
    

    在使用AUTO_INCREMENT时,需要注意以下4点。
    (1)一个表中只能有一个自动增长字段,该字段的数据类型是整数类型,且必须定义为键,如UNIQUE KEY PRIMARY KEY。
    (2)若为自动增长字段插入NULL、DEFAULT或在插入时省略该字段,则该字段就会使用自动增长值;若插入的是一个具体值,则不会使用自动增长值。
    (3)自动增长值从1开始自增,每次加1。若插入的值大于自动增长的值,则下次插入的自动增长值会自动使用最大值加1;若插入的值小于自动增长值,则不会对自动增长值产生影响。
    (4)使用DELETE删除记录时,自动增长值不会减小或填补空缺。
    为了让读者更好地理解,下面通过案例演示自动增长的使用及注意事项。
    (1)创建my_auto表,为id字段添加自动增长。

    mysql> CREATE TABLE my_auto (
        ->   id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
        ->   username VARCHAR(20)
        -> );
    

    (2)使用DESC查看表结构,执行结果如下。

    mysql> DESC my_auto;
    +----------+------------------+------+-----+---------+----------------+
    | Field    | Type             | Null | Key | Default | Extra          |
    +----------+------------------+------+-----+---------+----------------+
    | id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
    | username | varchar(20)      | YES  |     | NULL    |                |
    +----------+------------------+------+-----+---------+----------------+
    2 rows in set (0.00 sec)
    

    (3)插入记录进行测试,具体SQL语句及执行结果如下。
    ① 插入时省略id字段,将会使用自动增长值

    mysql> INSERT INTO my_auto (username) VALUES('a');
    Query OK, 1 row affected (0.00 sec)
    

    ② 为id字段插入NULL,将会使用自动增长值

    mysql> INSERT INTO my_auto VALUES(NULL, 'b');
    Query OK, 1 row affected (0.00 sec)
    

    ③ 为id字段插入具体值6

    mysql> INSERT INTO my_auto VALUES(6, 'c');
    Query OK, 1 row affected (0.00 sec)
    

    ④ 为id字段插入0,使用自动增长值

    mysql> INSERT INTO my_auto VALUES(0, 'd');
    Query OK, 1 row affected (0.00 sec)
    

    (4)查看my_ auto表中的数据.执行结果如下。

    mysql> SELECT * FROM my_auto;
    +----+----------+
    | id | username |
    +----+----------+
    |  1 | a        |
    |  2 | b        |
    |  6 | c        |
    |  7 | d        |
    +----+----------+
    4 rows in set (0.00 sec)
    

    在上述结果中,最后一条记录的id字段在插入时使用了0,MySQL会忽略该值,使用自动增长值(即id最大值6进行加1),从而得到id的值为7。
    (5)使用SHOW CREATE TABLE查看自动增长值,执行结果如下。

    mysql> SHOW CREATE TABLE my_auto\G
    *************************** 1. row ***************************
           Table: my_auto
    Create Table: CREATE TABLE `my_auto` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `username` varchar(20) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1
    1 row in set (0.00 sec)
    

    在上述结果中,"AUTO_ INCREMENT=8"用于指定下次插入的自动增长值为8。若在下次插入时指定了大于8的值,此处的8会自动更新为下次插入值加1。
    (6)为现有的表修改或删除自动增长,具体SQL语句及执行结果如下。
    ① 修改自动增长值

    mysql> ALTER TABLE my_auto AUTO_INCREMENT = 10;
    Query OK, 0 rows affected (0.01 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    

    ② 删除自动增长

    mysql> ALTER TABLE my_auto MODIFY id INT UNSIGNED;
    Query OK, 5 rows affected (0.03 sec)
    Records: 5  Duplicates: 0  Warnings: 0
    

    ③ 重新为id添加自动增长

    mysql> ALTER TABLE my_auto MODIFY id INT UNSIGNED AUTO_INCREMENT;
    Query OK, 5 rows affected (0.03 sec)
    Records: 5  Duplicates: 0  Warnings: 0
    

    需要注意的是,在为字段删除自动增长并重新添加自动增长后,自动增长的初始值会自动设为该列现有的最大值加1。在修改自动增长值时,修改的值若小于该列现有的最大值,则修改不会生效。

    提示:
    通过“SHOW VARIABLES LIKE 'auto increment%’;"可以查看MySQL中用于维护自动增长的变量分别是auto _increment_increment(默认值1)和auto_increment_offset(默认值为1),通过更改这两个变量可以改变自动增长的计算方式,读者可以参考官方手册中的详细说明。

    超全面的测试IT技术课程,0元立即加入学习!有需要的朋友戳:

    腾讯课堂测试技术学习地址

    作者:kellyred

    出处:https://blog.csdn.net/kellyred

    欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。

    展开全文
  • mysql用代码建表基础语法

    千次阅读 2020-05-15 23:42:03
    创建表一、基本创建语法二、常用约束三、建表举例 一、基本创建语法 ... 查询 ->新建查询,进入查询编辑器 2.语法格式如下 ...3.唯一约束:UNIQUE(UK),在该表中,该列内容必须唯一。 4.主键约束

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
    欢迎关注微信公众号:宝藏女孩的成长日记
    如有转载,请注明出处(如不注明,盗者必究)

    一、基本创建语法

    1.点击你的数据库,直接Ctrl+q就可以进入查询编辑器
    也可以用下图这种方式,点击你的数据库-> 查询 ->新建查询,进入查询编辑器
    在这里插入图片描述
    2.语法格式如下
    在这里插入图片描述

    二、常用约束

    约束作用:针对某一字段(列),约束这一字段(列)的行为
    1.非空约束:NOT NULL,不允许某列的内容为空。
    2.设置列的默认值:DEFAULT,这一列的每个值都被默认为一个值。
    3.唯一约束:UNIQUE(UK),在该表中,该列的内容必须唯一。
    4.主键约束:PRIMARY KEY, 主键必须包含唯一的值,主键列不能包含 NULL 值。
    5.主键自增长:AUTO_INCREMENT,从1开始,步长为1。
    6.外键约束:FOREIGN KEY,A表中的外键列的值必须参照于B表中的某一列(B表主键)。

    三、建表举例

    CREATE TABLE model(
       id BIGINT PRIMARY KEY AUTO_INCREMENT,
       name VARCHAR(255),
       age INT DEFAULT 18
    
    );
    
    

    点击运行后刷新就可以看见我们创建的表啦,如图
    在这里插入图片描述

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
    欢迎关注微信公众号:宝藏女孩的成长日记
    如有转载,请注明出处(如不注明,盗者必究)

    展开全文
  • 数据表的基本操作等一、创建数据表单字段约束一般添加主键方式或者在字段列表后添加多字段联合主键外键约束非空约束非空语法格式如下唯一约束唯一约束可以约束此行赋值内容唯一性,不出现重复值默认约束在创建表...
  • 数据表的基本操作

    2018-09-19 17:53:14
    数据表被定义为列的集合,数据在表中是按照行和列的格式来储存的,每一行代表一条唯一的记录,每一列代表记录中的一个域。   1.创建数据表 创建数据表的过程是规定数据列的属性过程,同时也是实施数据完整性约束...
  • 1、表属性创建表的基本语法:create table 【if not exists】 表名 (字段列表 【,索引或约束列表】)【表选项列表】其中,字段列表格式如下:字段名 类型 【属性列表】,字段名 类型 【属性列表】...属性列表中各个...
  • 在数据库中,数据表是数据库中最重要、最基本的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。 一、创建...
  • 表是库中最重要,最基本的操作对象,是数据存储的基本单位。表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。 创建数据表,查看数据表结构,修改...
  • 在数据库中,数据表是数据库中最重要、最基本的的操作对象,是数据存储的基本单位。数据表被定义为列的集合,数据在表中是按照行和列的格式来存储的。每一行代表一条唯一的记录,每一列代表记录中的一个域。5.1创建...
  • 在创建表时,经常会创建该表主键、外键、唯一约束、Check约束等  语法结构 create table 表名( [字段名] [类型] [约束] ……….. CONSTRAINT fk_column FOREIGN KEY(column1,column2,…..column_n) ...
  • 使用这种方法创建索引时,可以一次性地创建一个表多个索引(例如唯一性索引、普通索引、复合索引等),其语法格式与创建的语法格式基本相同(注意粗体字部分代码)。Create table表名(字段名1数据类型[约束条件...
  • 基本的语法格式如下:CREATE TABLE 表名(字段名 数据类型 [完整性约束条件],[UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY[索引名](字段名1 [(长度)] [ASC | DESC]));UNIQUE:可选。表示索引为唯一性索引。FULLTEXT;...
  • MySQL---创建数据表

    2019-08-29 14:57:22
    数据表是数据库存储的基本单位,被定义为列的集合。数据在表中按照行和列的格式存储,每一行代表一条唯一的记录,每一列代表记录的一个域。 (1).创建表的语法形式 数据表属于数据库,使用前通过:"USE<数据库名&...
  • LINGO软件学习

    2009-08-08 22:36:50
    集是LINGO建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。 2.2 什么是集 集是一群相联系的对象,...
  • SQL语言基础-数据定义

    千次阅读 2010-05-30 10:24:00
    1、定义基本表SQL语言使用动词CREATE定义基本表,其具体语法格式如下:CREATE TABLE ([列级完整性约束条件]...[,[列级完整性约束条件]][,表级完整性约束条件>]);例如:建立一个学生表Student,它由学号Sno,姓名...
  • Mysql创建索引、增加索引和删除索引

    千次阅读 2019-01-20 15:12:08
    基本的语法格式如下: CREATE TABLE 表名(字段名 数据类型 [完整性约束条件], [UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY [索引名](字段名1 [(长度)] [ASC | DESC]) ); UNIQUE:可选。表示索引为唯一性索引。 ...
  • 6.2.2 基本语法 233 6.2.3 基于简单表达式的CHECK约束 235 6.2.4 基于函数的CHECK约束 237 6.2.5 约束引起的错误 242 6.2.6 DML触发器 244 6.2.7 处理来自触发器和约束的错误 277 6.3 手动数据保护 280 6.4 ...
  • 数据字典里存有用户信息、用户权限信息、所有数据对象信息、表的约束条件、统计分析数据库视图等。 我们不能手工修改数据字典里信息。  很多时候,一般ORACLE用户不知道如何有效地利用它。  dictionary...
  • [Oracle.11g权威指南(第2版)].谷长勇.扫描版.pdf

    千次下载 热门讨论 2013-06-23 21:16:09
    2.3.2 网格的基本属性 12 2.3.3 Oracle网格基础架构 13 2.4 Oracle 11g新特性 15 2.4.1 企业网格管理的高可用性 15 2.4.2 更加优化的性能 17 2.4.3 简化的信息管理 18 2.4.4 集成的信息 20 2.4.5 内置的业务智能 21 ...
  • 5.5.1 基本语法 131 5.5.2 参数说明 131 5.5.3 Alter database语句注意事项 134 5.5.4 典型案例 134 5.6 分离与附加数据库 136 5.6.1 分离数据库 136 5.6.2 附加数据库 139 5.7 脱机和联机数据库 143 ...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    9.1 面向对象的基本概念.101 9.2 对象的模型技术 .103 9.3 面向对象的分析 .105 9.4 面向对象的设计 .107 9.5 小 结 .110 第十章 类 .112 10.1 类 的 声 明 .112 10.2 类 的 成 员 .113 10.3 构造...
  • 第5章 SQL 中的基本语法 61 5.1 样式 63 5.2 创建 NEWSPAPER 表 63 5.3 用SQL 从表中选择数据 64 5.4 select 、from 、where和order by 67 5.5 逻辑和值 69 5.5.1 单值测试 70 5.5.2 值列表的简单测试 75 ...
  • xml入门教程/xml入门教程

    热门讨论 2008-09-07 18:20:03
    对XML文件要求,格式良好(符合XML的语法要求),有效XML; XML用途,数据传输中间件,做为通用文档格式 1,数据交换 2,web服务 3,内容管理 4,web集成 5,充当配置文件 格式良好XML文件规范 XML...
  • C#微软培训资料

    2014-01-22 14:10:17
    9.1 面向对象的基本概念.101 9.2 对象的模型技术 .103 9.3 面向对象的分析 .105 9.4 面向对象的设计 .107 9.5 小 结 .110 第十章 类 .112 10.1 类 的 声 明 .112 10.2 类 的 成 员 .113 10.3 构造...
  • 7.1 基本的GROUP BY用法 171 7.2 HAVING子句 174 7.3 GROUP BY“新”功能 175 7.4 GROUP BYCUBE扩展 175 7.5 CUBE实际应用 179 7.6 通过GROUPING()函数排除空值 185 7.7 用GROUPING()来扩展报告 186 ...
  • 7.1 基本的GROUP BY用法 171 7.2 HAVING子句 174 7.3 GROUP BY“新”功能 175 7.4 GROUP BYCUBE扩展 175 7.5 CUBE实际应用 179 7.6 通过GROUPING()函数排除空值 185 7.7 用GROUPING()来扩展报告 186 ...
  • 6.8.5 格式转换(数据列内容另类显示效果) 101 第7章 Microsoft Office和OpenOffice/StarOffice 103 7.1 安装Connector/ODBC 103 7.2 Microsoft Access 106 7.2.1 数据表导入和导出 107 7.2.2 数据库转换...
  • 6.9.3 表级CHECK()约束的视图 88 6.9.4 每个基表一个视图 88 第7章 虚拟表 90 7.1 派生表 90 7.1.1 列的命名规则 91 7.1.2 作用域规则 91 7.1.3 公开的表名 93 7.1.4 LATERAL()子句 94 7.2 CTE 96 ...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    UML基本的构造块 事物 关系 图 UML 公共机制 规格说明 UML模型: 使用图和图标可视化模型 各种建模元素规格说明所组成 规格说明 模型元素特征和语义文本描述—模型“肉” 形成了承载模型语义背板,赋予...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

唯一约束的基本语法格式