SQL Reserved Words Checker – SQL保留字查询

Categories: Database; Tagged with: ; @ March 29th, 2009 11:21

支持数据库:

SQL Server, MySQL, PostgreSQL, Oracle, DB2, ANSI SQL, ODBC

地址:http://www.petefreitag.com/tools/sql_reserved_words_checker/

演示: 

image

Cascade与Inverse

Categories: DatabaseJava; Tagged with: ; @ January 10th, 2009 0:32

在Hibernate 或一些类似框架中, 常常会有这样一个无聊的问题: Cascade与Inverse的区别.

但事实上这个问题首先需要承认他们有相同点,才能有类似的问题, 但这两者之间我个人认为几乎没有关系 – 他们是不同的两个事物.

Cascade意在是否在一方变化时, 另外关系一方是否随之变化

而Inverse则说明该关系由哪一方负责维系

—-我不认为他们有什么区别 以为他们根本没有相似之处

Cascade常见的两种:

ALL – 非常强的关系, 通常为拥有型, 如 学生拥有地址, 在学生保存时, 其地址也被保存, 当被删除时, 地址也随之删除

PERSIS – 较强的关系, 如学生跟科目, 当新的科目保存时, 学生也被保存, 但删除科目时, 学生信息并不随之删除.

Inverse:

默认为False.

当关系为一对多时, inverse应设置为true, 意味有对方负责维系关系

MySQL中使用外键[FOREIGN KEY]

Categories: Database; Tagged with: ; @ November 6th, 2008 23:25

SQL语言:

CREATE TABLE Class (
Class_ID INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(255)
) type=innodb;

CREATE TABLE Student(
Student_ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(255),
c_ID INT UNSIGNED NOT NULL,
FOREIGN KEY(c_ID) REFERENCES Class(Class_ID)
ON DELETE CASCADE
ON UPDATE CASCADE
);

逻辑图:
image

使用ERwin反向工程生成MySQL数据库的Physical Modal[物理数据模型]

Categories: Database; Tagged with: ; @ November 6th, 2008 22:15

1.ERwin简介:

ERWin Data Modeler是CA公司的数据库建模工具,目前在关系数据库的设计中,有着比较广泛的应用.

数据库设计错误将会导致在很长一段时间内不断听到各种抱怨,因此,选择 一个适合的数据库开发工具对数据环境进行规范将非常重要 .
Erwin在物理数据库的生成和反向生成、双向同步和比较功能方面居领先地位 ,可以进行逆向工程、能够自动生成文档、支持与数据库同步、支持 团队式 开发,所支持的数据库多达20多种。

Erwin数据库设计工具可以用于设 计生成客户机/ 服务器、Web、Intranet和数据仓库等应用程序数据库。

2. 使用ERwin反向工程生成MySQL数据库的物理数据模型

1.ERwin并不支持与MySQL的直接连接,一般情况下,我们使用ODBC进行连接, 因此在此之前需要保证机器上已安装有MySQL ODBC Driver. [MySQL网站上有安装包提供]
2.打开ERwin. Tools>Reverse Engineer. 弹出如下对话框:
image

选择好对应的数据库版本.

Next, 几乎不太需要更改,[太懒的, 一点也不想多看一个英语单词…]  继续Next..

image

选定那个复选框…. 点击连接…. [ 下面列放的是曾经连接成功的记录,也可以直接使用列表中的, 不过第一次用的话应该时没有的]
弹出对话框,提示选择数据源:
image
选定machine Data Source ,建立一个ODBC连接,一路确定之后, 稍等片刻,便可生成.

3. 效果

image

SQL中的连接 Join In MySQL

Categories: Database; Tagged with: ; @ October 31st, 2008 23:18

Here is a summary of difference between inner join and outer join:

http://stackoverflow.com/questions/38549/sql-difference-between-inner-and-outer-join

A Visual Explanation of SQL Joins – by Coding Horror.

有两个表,如下:

mysql> SELECT * FROM Class;
+———-+——–+
| Class_ID | Name   |
+———-+——–+
|                1 | 2008A  |
|                2 | 2008B  |
|                3 | 2008C |
+———-+——–+
3 rows in set (0.00 sec)

mysql> SELECT * FROM Student;
+————+——-+———-+——— —-+
| Student_ID | Name  | Class_ID | Student_Age |
+————+——-+———-+——- ——+
|                    1 | Jack    |                 1 |           NULL |
|                   2 | Lucy     |                 0 |           NULL |
|                    3 | Join     |                1 |            NULL |
|                    4 | Tom   |                 2 |            NULL |
+————+——-+———-+————- +
4 rows in set (0.00 sec)

即: 有三个班级 分别为2008A, 2008B.,2008C 有4个学生 , 其中, Jack, Join为2008A班的学生,Tom为2008B班的学生, 而Lucy则不在任何班级中.

INNER JOIN:


mysql> SELECT * FROM Student s INNER JOIN Class c ON s.Class_ID = c.Class_ID;
+————+——+———-+————-+———-+——-+
| Student_ID | Name | Class_ID | Student_Age | Class_ID | Name  |
+————+——+———-+————-+———-+——-+
|          1 | jack |        1 |        NULL |        1 | 2008A |
|          3 | Join |        1 |        NULL |        1 | 2008A |
|          4 | Tom  |        2 |        NULL |        2 | 2008B |
+————+——+———-+————-+———-+——-+
3 rows in set (0.06 sec)

OUTER JOINs:

Left Outer Join:左外连接
mysql> SELECT * FROM Student s LEFT OUTER JOIN Class c ON s.Class_ID = c.Class_ID;
+————+——+———-+————-+———-+——-+
| Student_ID | Name | Class_ID | Student_Age | Class_ID | Name  |
+————+——+———-+————-+———-+——-+
|          1 | jack |        1 |        NULL |        1 | 2008A |
|          2 | Lucy |        0 |        NULL |     NULL | NULL  |
|          3 | Join |        1 |        NULL |        1 | 2008A |
|          4 | Tom  |        2 |        NULL |        2 | 2008B |
+————+——+———-+————-+———-+——-+
4 rows in set (0.00 sec)

Right Outer Join:右外连接
mysql> SELECT * FROM Student s RIGHT OUTER JOIN Class c ON s.Class_
+————+——+———-+————-+———-+——-+
| Student_ID | Name | Class_ID | Student_Age | Class_ID | Name  |
+————+——+———-+————-+———-+——-+
|          1 | jack |        1 |        NULL |        1 | 2008A |
|          3 | Join |        1 |        NULL |        1 | 2008A |
|          4 | Tom  |        2 |        NULL |        2 | 2008B |
|       NULL | NULL |     NULL |        NULL |        3 | 2008C |
+————+——+———-+————-+———-+——-+
4 rows in set (0.00 sec)

Full Outer Join:

Newer Posts <-> Older Posts



// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.