mysql表相关操作
表的完整性约束
约束条件与数据类型的宽度一样,都是可选参数
作用:用于保证数据的完整性和一致性
主要分为:
not null 标识该字段不能为空
default 为该字段设置默认值
unsigned 无符号
zerofill 使用0填充
auto_increment 标识该字段的自动增长(整数类型,而且为主键)
primary key 标识该字段为该表的主键,可以唯一的标识记录
foreign key 标识该字段为该表的外键
unique key 标识该字段的值是唯一的
一、not null与default
create table t1(
id int primary key auto_increment,
name varchar(16) not null,
sex enum(‘nale’,’female’) not null default ‘male’
);
Insert into t1(name) values(‘egon’),(‘lxx’),(‘alex’);
二、unique key
create table t2(x int unique);
create table t3(
x int,
y varchar(5),
unique key(x)
);
create table t4(
x int,
y varchar(5),
constraint uni_x unique key(X)
); # 给键取名
create table service(
ip varchar(15),
port int,
unique key(ip,port)
); # 联合唯一
三、primary key
站在约束角度看primary key = not null unique
以后但凡建表,必须注意:
1、必须有且只有一个主键
2、通常是id字段被设置为主键
create table t5(
id int primary key auto_increment
);
# 补充存储引擎:
create table t12(x int)engine='myisam'; #会创建三个文件
create table t13(x int)engine='innodb'; #一般都用这个,创建两个,主键与数据在一个表中
create table t14(x int)engine='memory'; #内存中,服务端关机消失
create table t15(x int)engine='blackhole'; #不会有任何数据信息
四、foreign key:限制关联表某一个字段的值必是来自于被关联表的一个字段的
注意:
1.被关联的字段必须是一个key,通常是id字段
2.创建表时:必须先建立被关联的表,才能建立关联表
3.插入记录时:必须先往被关联的表中插入记录,才能往关联表中插入记录
4.删除时:应该先删除关联表emp中的记录,再删除被关联表对应的记录
create table dep(
id int primary key auto_increment,
dname varchar(20),
info varchar(50)
);
create table emp(
id int primary key auto_increment,
name varchar(15),
age int,
dep_id int,
foreign key(dep_id) references dep(id)
on update cascade
on delete cascade
);
insert into dep(dname,info) values
(‘IT’,’技术能力有限部门’),
(‘sale’,’文化程度不高部门’),
(‘HR’,’招不到人部门’);
insert into emp(name,age,dep_id) values
('egon',18,1),
('alex',28,2),
('wsj',38,2),
('lxx',30,1),
('xiaohou',18,3);
# 找两张表的关系的窍门
emp dep
#1、先站在左表的角度:去找左表emp的多条记录能否对应右表dep的一条记录
翻译:多个员工能否属于一个部门
#2、然后站在右表的角度:去找右表dep的多条记录能否对应左表emp的一条记录
翻译:多个部门能否拥有同一名员工
# 多对一:结果的判断
#1、如果只有单向的多对一成立,那么最终的关系就是多对一
#2、在emp表新增一个字段dep_id, 该字段外键关联dep(id)
# 多对多:结果的判断
#1、双向的多对一就是多对多
#2、需要建立第三张表,有一个字段值fk左表,一个字段的值fk右表
create table author(
id int primary key auto_increment,
name varchar(16),
age int
);
create table book(
id int primary key auto_increment,
bname varchar(20),
price int
);
create table author2book(
id int primary key auto_increment,
author_id int,
book_id int,
foreign key(author_id) references author(id) on update cascade on delete cascade,
foreign key(book_id) references book(id) on update cascade on delete cascade
);
# 一对一:无需参考窍门,左表的一条数据唯一对应右表的一条记录
fk+unique
mysql表相关操作的更多相关文章
- mysql 表相关操作(1)
查询语句 select * from t_deptselect empno,ename,sal from t_emp select empno, sal * 12 as "inco ...
- MYSQL初级学习笔记二:数据表相关操作及MySQL存储引擎!(视频序号:初级_5,7-22|6)
知识点三:数据表相关操作(5,7-22) --------------------------------整型--------------------------------- --测试整型 CREA ...
- MySQL数据库(二)--库相关操作、表相关操作(1)、存储引擎、数据类型
一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用 ...
- MySQL数据库(三)—— 表相关操作(二)之约束条件、关联关系、复制表
表相关操作(二)之约束条件.关联关系.复制表 一.约束条件 1.何为约束 除了数据类型以外额外添加的约束 2.约束条件的作用 为了保证数据的合法性,完整性 3.主要的约束条件 NOT NULL # ...
- MySQL数据库(二)——库相关操作、表相关操作(一)、存储引擎、数据类型
库相关操作.表相关操作(一).存储引擎.数据类型 一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字 ...
- MySQL之表相关操作
一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 详见:http://www.cnblogs.com/linhaifeng/articles/7213670.html ...
- MySQL数据库(三)--表相关操作(二)之约束条件、关联关系、复制表
一.约束条件 1.何为约束 除了数据类型以外额外添加的约束 2.约束条件的作用 为了保证数据的合法性,完整性 3.主要的约束条件 NOT NULL # 标识该字段不能为空,默认NULL,可设置NOT ...
- 安装Mysql的一些问题,比如Net Connect 卸载不掉,注册表相关操作
我安装mysql用了一段时间后卸载了,在安装就发现安装不了了,原因就是卸载的时候Net Connetc无法卸载,我试了一个月也没有解决后来百度各种还是没有办法解决.于是就尝试自己手动卸载注册表.在“开 ...
- MySql学习笔记【三、表相关操作】
创建表 CREATE TABLE [IF NOT EXISTS] table_name( column_name data_type, ... ) 如: CREATE TABLE test_table ...
随机推荐
- setTimeOut、setInterval与clearInterval函数
1.setTimeOut 在指定毫秒数后调用函数或计算表达式,函数或计算表达式只执行一次 setTimeout("alert('5 seconds!')",5000) 2.setI ...
- js中字符串的操作
1.length 获取字符串长度 var str = "hello world"; alert(str); 2.索引 通过下标获取字符串指定位置的字符,但是不能改变该索引对应的值 ...
- linux中时间精度的获取问题【转】
转自:http://www.xuebuyuan.com/877633.html 目前项目需要,需要对时间进行基准,基准的精度在微秒.下午老刘给我说不能用do_gettimeofday因为他的精度虽然可 ...
- C基础 mariadb处理简单案例
引言 MariaDB 是一款灰常不错开源数据库. 这里直接用它来解决业务问题. 业务需求: 现在数据库中表示按照天分表的. 突然我们需要按照月来处理数据. 例如输入一个玩家id, 查找这个玩家这个月内 ...
- 在Caffe中使用 DIGITS(Deep Learning GPU Training System)自定义Python层
注意:包含Python层的网络只支持单个GPU训练!!!!! Caffe 使得我们有了使用Python自定义层的能力,而不是通常的C++/CUDA.这是一个非常有用的特性,但它的文档记录不足,难以正确 ...
- [New learn] 网络基础-网络操作
代码:https://github.com/xufeng79x/NETOperation 1.简介 主要记录基本的网络操作步骤,get/post关系和区别和文件上传实现. 2.准备 需要服务器端,如果 ...
- Unknown character set: 'utf8mb4'
出现Unknown character set: 'utf8mb4'该错误是因为你的mysql-connector-java版本太高了,现在的mysql编码方式utf8mb4 然而老版本的却是utf ...
- [ Python ] set集合及函数的使用
1. set类型 set 和 dict 类似,也是一组 key 的集合,但是不存储 value. 由于 key 不重复,所以,在 set 中, 没有重复的 key 集合是可变类型 (1)集合的创建 ...
- web中的CSS、Xpath等路径定位方法学习
今天不到八点就到公司了,来的比较早,趁着有点时间,总结下web中的CSS.Xpath等路径定位定位的方式吧! 简单的介绍下xpath和css的定位 理论知识就不罗列了 还是利用博客园的首页.直接附上代 ...
- C#面向对象(OOP)入门—第一天—多态和继承(方法重载)
面向对象是什么 面向对象是一种基于对象的编程方法,它取代了仅仅依靠方法和流程的编程方式.面向对象的编程语言中,对象(object)其实就是指特定类型.或某个类的实例.面向对象使得编程人员更容易组织和管 ...