关系型数据库基础 第一章(共六章节)
2008-06-07 14:41
357 查看
第一章 [/b]关系数据库基础[/b][/b]
[/b]
[/b]
n 关系数据库的基本概念
n 数据库要素
关系数据库[/b][/b]
n 关系数据库是利用数据库进行数据组织的一种形式,是现代流行数据库系统中应用最为普遍的一种,也是最有效率的数据组织方式之一;
n 在关系数据库系统中,所有的数据都是按表(按关系理论的术语,表应成为“关系”)进行组织和管理的;
表是数据库中数据的组织方式[/b][/b]
关系数据库的基本概念[/b][/b]
n 表,是具体组织和存储数据的对象,由字段和记录组成。在同一表中,字段的名字具有唯一性,在同一个数据库中,表的名字也具有唯一性;
n 主键(primary key),是表中一列或多列的组合,其值唯一标识了表中的一行记录。在表中,主键的值具有唯一性;
n 外键(foreign key),是表中一列或多列的组合,它存在于表1中,但不是表1的主键。它同时存在于表2中,是表2的主键。于是称这一列或多列是表1相对于表2的外键。外键体现了表之间的关系;
n
主键与外键[/b][/b]
创建数据库[/b][/b]
n Create database 数据库名;
n Create database library;
n Create database if not exists 数据库名;
n if not exists强调如果数据库不在则执行该命令;
选择与查看数据库[/b][/b]
n 选择数据库
n Use 数据库名
n 查看可用的数据库
n Show databases;
删除数据库[/b][/b]
n 删除数据库;
n Drop database 数据库名;
n Drop database if exists 数据库名;
n if exists强调如果数据库在则删除
n Create table 表名(字段名 数据类型 not null auto_increment, primary key (字段名));
n mysql> create table members
-> (member_id int(11) not null auto_increment,
-> fname varchar(50) not null,
-> lname varchar(50) not null,
-> tel varchar(15),
-> email varchar(50)not null,
-> primary key (member_id));
Query OK, 0 rows affected (0.24 sec)
Create table[/b]关键字[/b][/b]
n 字段约束 Null与not null;
n Default 为字段指定一个默认值,如果未向字段插入数据,则字段自动继承该值;
create table userinfo (name varchar(16) not null, sex varchar(8) default 'man');
n Auto_increment,只适用于int数据类型字段,表明MYsql应该为该字段自动生成序列值;
n Primary key
create table dept (deptno int not null, dname varchar(20), loc varchar(40), primary key (deptno) );
MYSQL[/b]数据类型[/b][/b]
n 表中的每一个字段都有一个与它相关联的数据类型,这个数据类型定义了字段中可以保存的数据的种类;
n MYSQL支持多种数据类型,具体包括4类:
n 数值类型
n 字符串类型
n 日期和时间类型
n 复合类型
数值类型数据[/b][/b]
[/b]
INT[/b]整数类型[/b][/b]
n 在MYSQL中主要有五种INT类型的数据TINYINT,SMALLINT,MEDIUINT,INT,BIGINT;
n 这些类型在很大程度上是相同的,他们之间的区别在于存储值的大小不同;
INT说明
Ø create table data
(fti tinyint ,fsi smallint,fmi mediumint,fi int,fbi bigint);
Ø Insert into data values (123456789,123456789,123456789,12345678987654321);
Ø Select * from data;
Ø UNSIGNED 类型用于设定只存储无符号数;
宽度指示器[/b][/b]
n Mysql提供了一个宽度指示器,用于指定值的显示宽度,但该宽度指示器即不影响取值范围也不影响结果显示,它主要用于临时表中,当字段数值不足宽度位时将添0补齐;
create table data4(id int(5) zerofill);
n zerofill用于显示用于补齐的0;
浮点数类型[/b][/b]
n 基本的浮点数类型包括float和double;
n Float表示单精度浮点数值;
n Double表示双精度浮点数值;
n 数据类型的定义包括宽度和小数点指示器
n Float(m,n)
n Double(m,n)
n m定义了整个数据的长度,n定义了小数点后数据的长度;
n
字符串类型数据[/b][/b]
CHAR[/b]与[/b]VARCHAR[/b]
n CHAR (长度指示器) [binary]
n Binary将修饰CHAR,使其值以二进制的方式存储;
n VARCHAR是CHAR的变体,具有根据内容的实际长短来确定存储空间的特性,是CHAR在存储效率和存储空间方面的改进;
n VARCHAR(长度指示器)[binary]
TEXT[/b]与[/b]BLOB[/b]
n TEXT与BLOB用于存储大的文本块或图像声音等二进制数据;
n “TEXT是不区分大小写的BLOB”―MYSQL5.0手册;
日期和时间数据类型[/b][/b]
Date[/b],[/b]time[/b],[/b]year[/b]类型[/b][/b]
n Create table data (birthday date);
n Insert into data values(‘2003-03-04’),(20030304);
n create table data (showtime time);
n insert into data values (‘12:30:56’),(123056);
n create table data1 (showyear year);
n insert into data1 Values (2007),(07),(9);
复合类型数据[/b][/b]
n 复合类型数据是MYSQL对SQL的扩展,包括两种:
n ENUM
n SET
ENUM[/b]类型[/b][/b]
n 允许从集合中只选取单个值;
n create table data9 (se enum('男','女'));
n insert into data9 Values (‘男’) ,('女');
SET[/b]类型[/b][/b]
n SET允许从预先定义的字符串集合中选取任意数目的值;
n CREATE TABLE DATA8 (NAME SET('SMITH','JOEY','MONIKA','ROSS','GALE','BIN'));
n INSERT INTO DATA8 VALUES ('MONIKA,GALE');
修改表[/b]alter table[/b]
n Alter table的作用表现在两个方面:
n 在已有的表中添加一列;
n 在表中修改现存的一列;
n 修改表属性
n Alter table 表名 modify 字段名 数据类型;
mysql> alter table members
-> modify tel varchar(20);
Query OK, 4 rows affected (0.73 sec)
向表中添加新列[/b][/b]
n Alter table 表名 add 字段名 数据类型;
mysql> alter table members
è add qq varchar(11);
向表中添加数据[/b]1[/b]
n 向members表中添加数据:
mysql> insert into members
-> (member_id,fname,lname,tel,email)
-> values
-> (null,'john','doe','123456','joe@somewhere.com');
[/b]
向表中添加数据[/b]2[/b]
n mysql> insert into members
-> values
-> (null,'jane','doe','8373728','jane@site.com');
n mysql> insert into members
-> (fname,lname,email,tel,member_id)
-> values
-> ('steve','klingon','steve@alien-race.com','7449373',null);
删除表[/b][/b]
n Drop table 表名;
n Delete from 表名;
n Delete from 表名 where 匹配条件;
(作者不能完全保证文章的正确性,文章较长难免会有文字遗漏、输入错字等。请大家多多谅解并给予指证。第一章Mysql数据库基础就写到这里,明天会介绍Mysql查询基础)
本文出自 “Web2.0开发-博客” 博客,请务必保留此出处http://myphp.blog.51cto.com/397793/80690
[/b]
[/b]
n 关系数据库的基本概念
n 数据库要素
关系数据库[/b][/b]
n 关系数据库是利用数据库进行数据组织的一种形式,是现代流行数据库系统中应用最为普遍的一种,也是最有效率的数据组织方式之一;
n 在关系数据库系统中,所有的数据都是按表(按关系理论的术语,表应成为“关系”)进行组织和管理的;
表是数据库中数据的组织方式[/b][/b]
雇员代号 Code | 雇员姓名 Name | 性别 Sex | 工作部门代号 Dep |
001 | 张三丰 | 男 | B-1 |
002 | 孙不二 | 女 | B-2 |
003 | 王五 | 男 | B-3 |
004 | 张翠山 | 男 | B-2 |
n 表,是具体组织和存储数据的对象,由字段和记录组成。在同一表中,字段的名字具有唯一性,在同一个数据库中,表的名字也具有唯一性;
n 主键(primary key),是表中一列或多列的组合,其值唯一标识了表中的一行记录。在表中,主键的值具有唯一性;
n 外键(foreign key),是表中一列或多列的组合,它存在于表1中,但不是表1的主键。它同时存在于表2中,是表2的主键。于是称这一列或多列是表1相对于表2的外键。外键体现了表之间的关系;
n
主键与外键[/b][/b]
雇员代号 Code | 雇员姓名 Name | 性别 Sex | 部门代号 Dep |
001 | 张三丰 | 男 | B-1 |
002 | 孙不二 | 女 | B-2 |
003 | 王五 | 男 | B-3 |
004 | 张翠山 | 男 | B-2 |
部门代号 Dep | 部门名称 Name | 部门职能 Function |
B-1 | 财务部 | 财务管理 |
B-2 | 人事部 | 人事管理 |
B-3 | 开发部 | 项目开发 |
n Create database 数据库名;
n Create database library;
n Create database if not exists 数据库名;
n if not exists强调如果数据库不在则执行该命令;
选择与查看数据库[/b][/b]
n 选择数据库
n Use 数据库名
n 查看可用的数据库
n Show databases;
删除数据库[/b][/b]
n 删除数据库;
n Drop database 数据库名;
n Drop database if exists 数据库名;
n if exists强调如果数据库在则删除
n Create table 表名(字段名 数据类型 not null auto_increment, primary key (字段名));
n mysql> create table members
-> (member_id int(11) not null auto_increment,
-> fname varchar(50) not null,
-> lname varchar(50) not null,
-> tel varchar(15),
-> email varchar(50)not null,
-> primary key (member_id));
Query OK, 0 rows affected (0.24 sec)
Create table[/b]关键字[/b][/b]
n 字段约束 Null与not null;
n Default 为字段指定一个默认值,如果未向字段插入数据,则字段自动继承该值;
create table userinfo (name varchar(16) not null, sex varchar(8) default 'man');
n Auto_increment,只适用于int数据类型字段,表明MYsql应该为该字段自动生成序列值;
n Primary key
create table dept (deptno int not null, dname varchar(20), loc varchar(40), primary key (deptno) );
MYSQL[/b]数据类型[/b][/b]
n 表中的每一个字段都有一个与它相关联的数据类型,这个数据类型定义了字段中可以保存的数据的种类;
n MYSQL支持多种数据类型,具体包括4类:
n 数值类型
n 字符串类型
n 日期和时间类型
n 复合类型
数值类型数据[/b][/b]
[/b]
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
TINYINT | 1字节 | -128,127 | 0,255 | 小整数值 |
SMALLINT | 2字节 | -32768,32767 | 0,25535 | 大整数值 |
MEDIUINT | 3字节 | -224,224-1 | 0,1677215 | 大整数值 |
INT | 4字节 | -232 ,232-1 | 0,4294967295 | 大整数值 |
BIGINT | 8字节 | -264,264-1 | 0,264-1 | 极大整数值 |
FLOAT | 4字节 | 单精度,浮点 | ||
DOUBLE | 8字节 | 双精度,浮点 | ||
REAL | 8字节 | 双精度,浮点 |
n 在MYSQL中主要有五种INT类型的数据TINYINT,SMALLINT,MEDIUINT,INT,BIGINT;
n 这些类型在很大程度上是相同的,他们之间的区别在于存储值的大小不同;
INT说明
Ø create table data
(fti tinyint ,fsi smallint,fmi mediumint,fi int,fbi bigint);
Ø Insert into data values (123456789,123456789,123456789,12345678987654321);
Ø Select * from data;
Ø UNSIGNED 类型用于设定只存储无符号数;
宽度指示器[/b][/b]
n Mysql提供了一个宽度指示器,用于指定值的显示宽度,但该宽度指示器即不影响取值范围也不影响结果显示,它主要用于临时表中,当字段数值不足宽度位时将添0补齐;
create table data4(id int(5) zerofill);
n zerofill用于显示用于补齐的0;
浮点数类型[/b][/b]
n 基本的浮点数类型包括float和double;
n Float表示单精度浮点数值;
n Double表示双精度浮点数值;
n 数据类型的定义包括宽度和小数点指示器
n Float(m,n)
n Double(m,n)
n m定义了整个数据的长度,n定义了小数点后数据的长度;
n
字符串类型数据[/b][/b]
类型 | 大小 | 用途 |
CHAR | 0-255字节 | 定长字符串 |
VARCHAR | 0-255字节 | 变长字符串 |
TINYTEXT | 0-255 | 短文本字符串 |
TEXT | 0-65535字节 | 长文本数据 |
MEDIUMTEXT | 0-1677215 | 中等长文本数据 |
LONGTEXT | 0-4294967295 | 大长文本数据 |
TINYBLOB | 0-255 | 短二进制形式文本数据 |
BLOB | 0-65535 | 二进制形式长文本数据 |
MEDIUMBLOB | 0-1677215 | 二进制形式中等长文本数据 |
LONGBLOB | 0-4294967295 | 大二进制形式长文本数据 |
n CHAR (长度指示器) [binary]
n Binary将修饰CHAR,使其值以二进制的方式存储;
n VARCHAR是CHAR的变体,具有根据内容的实际长短来确定存储空间的特性,是CHAR在存储效率和存储空间方面的改进;
n VARCHAR(长度指示器)[binary]
TEXT[/b]与[/b]BLOB[/b]
n TEXT与BLOB用于存储大的文本块或图像声音等二进制数据;
n “TEXT是不区分大小写的BLOB”―MYSQL5.0手册;
日期和时间数据类型[/b][/b]
类型 | B | 范围 | 格式 | 用途 |
DATE | 3 | 1000-01-01到9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | -839:59:59到839:59:59 | HH:MM:SS | 时间值 |
YEAR | 1 | 1901到2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00到9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 日期和时间值 |
TIMESTAMP | 8 | 1970-01-01 00:00:00 到2037年 | YYYYMMDDHHMMSS | 日期和时间值 |
n Create table data (birthday date);
n Insert into data values(‘2003-03-04’),(20030304);
n create table data (showtime time);
n insert into data values (‘12:30:56’),(123056);
n create table data1 (showyear year);
n insert into data1 Values (2007),(07),(9);
复合类型数据[/b][/b]
n 复合类型数据是MYSQL对SQL的扩展,包括两种:
n ENUM
n SET
ENUM[/b]类型[/b][/b]
n 允许从集合中只选取单个值;
n create table data9 (se enum('男','女'));
n insert into data9 Values (‘男’) ,('女');
SET[/b]类型[/b][/b]
n SET允许从预先定义的字符串集合中选取任意数目的值;
n CREATE TABLE DATA8 (NAME SET('SMITH','JOEY','MONIKA','ROSS','GALE','BIN'));
n INSERT INTO DATA8 VALUES ('MONIKA,GALE');
修改表[/b]alter table[/b]
n Alter table的作用表现在两个方面:
n 在已有的表中添加一列;
n 在表中修改现存的一列;
n 修改表属性
n Alter table 表名 modify 字段名 数据类型;
mysql> alter table members
-> modify tel varchar(20);
Query OK, 4 rows affected (0.73 sec)
向表中添加新列[/b][/b]
n Alter table 表名 add 字段名 数据类型;
mysql> alter table members
è add qq varchar(11);
向表中添加数据[/b]1[/b]
n 向members表中添加数据:
mysql> insert into members
-> (member_id,fname,lname,tel,email)
-> values
-> (null,'john','doe','123456','joe@somewhere.com');
member_id | fname | lname | tel | |
1 | John | Doe | 123456 | john@somewhere.com |
向表中添加数据[/b]2[/b]
n mysql> insert into members
-> values
-> (null,'jane','doe','8373728','jane@site.com');
n mysql> insert into members
-> (fname,lname,email,tel,member_id)
-> values
-> ('steve','klingon','steve@alien-race.com','7449373',null);
member_id | fname | lname | tel | |
1 | John | Doe | 123456 | john@somewhere.com |
2 | Jane | doe | 8373728 | jane@site.com |
3 | Steve | Klingon | 7449373 | steve@alien-race.com |
n Drop table 表名;
n Delete from 表名;
n Delete from 表名 where 匹配条件;
(作者不能完全保证文章的正确性,文章较长难免会有文字遗漏、输入错字等。请大家多多谅解并给予指证。第一章Mysql数据库基础就写到这里,明天会介绍Mysql查询基础)
本文出自 “Web2.0开发-博客” 博客,请务必保留此出处http://myphp.blog.51cto.com/397793/80690