mysql外键的使用
像MySQL这样的关系型数据库管理系统,它们的基础是在数据库的表之间创建关系的能力。通过方便地在不同表中建立记录到记录的联系,RDBMS可以利用不同的方法分析数据,同时保持数据库以系统的方式、最小的冗余进行组织。
简单描述:
这些关系基本上依靠外键进行管理,在关系中所有表中具有相同含义的字段作为公共部分来连接不同表中的记录。外键可以是一对一的,一个表的记录只能与另一个表的一条记录连接,或者是一对多的,一个表的记录与另一个表的多条记录连接。
MySQL中“键”和“索引”的定义相同, 所以外键和主键一样也是索引的一种。不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确的索引。这和一些封建思想比较沉重的家庭是一样的,外来的孩子(儿媳妇,倒插门女婿)一般都是不受重视的。
低俗示例:
表间一对一关系示例:
有两张表,第一张表是记录公司有多少人,都有谁,也就是员工编号及员工姓名这些基本表。另一张表记录每个月发给用户多少工资,所谓工资表是也。
但是工资表里面不能以员工姓名为主键,同样要通过员工id,因为员工的姓名是可能重复的啊。部门经理叫张三,小弟也叫张三,那这俩张三的工资能一样吗?并且员工表里面的每个人都有工资,否则谁也不给你干活,且一个人只能有一份工资,否则老板也不同意了。所以员工表和工资表是通过员工id进行关联的一对一关系。
不过我们要有一个好的价值观,我们上班不能为了钱,我们是为了学知识,学文化,为早日实现四个现代化(别问我是啥,也别问我到底实现没有)而努力奋斗。所以在工资表里如果没有你也不要乱喊。嗯。
/*
建立员工表
*/
create table employees (
id int(5) not null auto_increment ,
name varchar(8) not null,
primary key (id)
)
type=innodb;
/*
建立工资表
*/
create table payroll(
id int(5) not null,
emp_id int(5) not null,
name varchar(8) not null,
payroll float(4,2) not null,
primary key(id),
index emp_id (emp_id),
foreign key (emp_id) references employees (id)
)
type = innodb;
表间一对多关系示例:
有两个表,一个是贪官表,有贪官的id和名字。另有一张贪官情妇表,注意一个贪官不一定只有一个情妇,其有个二三四五奶是很正常的,所以在贪官表里面的一条数据,对应情妇表里可能就有多条记录,这是通过贪官id进行关联的一对多关系。
参照完整性
相关文档:
1)如果你安装的是系统自带的rpm包的情况:
修改 /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
port=3300 #修改成你自己想要的端口
socket=/var/lib/mysql/mysql.sock
[mysql.server]
user=mysql
basedir=/var/lib
[safe_m ......
1.它可以被分为三类:数字类型日期类和时间类型,字符串类型。
列类型用于描述:
M:指出最大的显示尺寸。最大的合法显示尺寸为255.
D:适用于浮点类型并之初跟随在十进制小数点后的数码的数量。最大的可能值是30,但是不应大于M.
2.方括号("[","]")指出可选的类型修饰符的部分.
*若指定了列类型为ZEROFILL,MYSQL将该 ......
Mysql所支持的引擎目前有以下几种:
MyISAM,InnoDB,MERGE,MEMORY(HEAR),BDB(BerkeleyDB),EXAMPLE,FEDERATED,ARCHIVE,CSV,BLACKHOLE.
为什么要有这么多引擎?主要是Mysql是一款极为强大的数据库,它适应很多不同的运行环境,为了满足各种不同的运行环境与存储方案的需要,这些搜索引擎也就应运而生(不光是为了配合Mysql ......
首先放置好jdbc驱动程序,在 java\jre6\lib\ext\下,java\jdk1.6\jre\lib等地方都放起来,因为不确定在哪里有用···
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://localhost/DATABASENAME?user=USERNAME&password=PASSWORD&useUnicode=tru ......
mysql文件导入乱码问题的解决:
1 命令察看字符设置。
mysql> show variables like "%char%";
2 将不是utf-8的都改成utf8。只有filesystem不变;
| Variable_name | Value
&nb ......