17/7/9
1.主从式架构(Client-server model)或客户端-服务器(Client-Server)结构简称C/S结构,是一种网络架构,通常在该网络架构下软件分为客户端和服务器。
2.主从式架构通过不同的途径应用于很多不同类型的应用程序,如当顾客想在当当网上买书,顾客的电脑和网页浏览器当成客户端,组成当当网的电脑,数据库和应用程序被当成服务器。
3.(1)使用主键约束
- 主键,又称主码,是表中一列或多列的组合。主键约束(primary key constraint)要求主键列的数据唯一,并且不能为空。
- 单字段主键
-
-
- 在定义列的同时指定主键
- 在定义完所有列之后指定主键
-
- 多字段主键
PRIMARY KEY [字段1,字段2,....................]
- 使用外键约束
-
- 外键用来在两个表的数据之间建立连接,它可以是一列和多列。一个表可以有一个或多个外键,外键可以是空值
- 语法:[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [字段2,...] REFETENCES <主表名> 主键列1 [主键列2.。。。。]
- 使用非空约束 NOT NULL ;
- 使用唯一约束 UNIQUE
-
- 语法:CONTRAINT <约束名> UNIQUE (<字段名>)
6.使用默认约束 DEFAULT 默认值
7.设置表的属性值自动增加 AUTO_INCREMENT
4.查看表基本结构语句 DESCTIBE
DESCRIBE 表名;或 DESC 表名;
5.查看表详细结构语句 SHOW CREATE TABEL
使用SHOW CREATE TABLE 语句,不仅可以查看表创建时候详细语句,而且可以查看存储引擎和字符编码;
语句:SHOW CREATE TABLE <表名\G>。
6.ALTER
- 修改表名
-
- 语句:ALTER TABLE <旧表名> RENAME [TO] <新表 名>;
- 修改字段的数据类型
-
- 语句:ALTER TABLE <表名> MODIFY <字段名> <数据类型>;
- 修改字段名
-
- 语句:ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
- 添加字段
-
- 语句:ALTER TABLE <表名> ADD <新字段名 > <数据类型> [约束条件] [FIRST | AFTER 已存在字段名];
- 删除字段
-
- 语句:ALTER TABLE <表名> DROP <字段名>;
- 修改字段的排列位置
-
- 语句:ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;
- 更改表的存储引擎
-
- 语句:ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;
- 删除表的外键约束
-
- 语句:ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>
7.删除没有被关联的表
语句:DROP TABLE [IF EXISTS] 表1,表2,。。。。
参数[IF EXISTS]用于在删除前判段表是否存在,不存在也能顺利执行sql语句。
8.删除被其他表关联的主表
先取消表与表之间关联,然后在删除表。
Mysql数据类型介绍
日期和时间数据类型
MySQL数据类型 | 含义 |
date | 3字节,日期,格式:2014-09-18 |
time | 3字节,时间,格式:08:42:30 |
datetime | 8字节,日期时间,格式:2014-09-18 08:42:30 |
timestamp | 4字节,自动存储记录修改的时间 |
year | 1字节,年份 |
数值数据类型
整型
MySQL数据类型 | 含义(有符号) |
tinyint | 1字节,范围(-128~127) |
smallint | 2字节,范围(-32768~32767) |
mediumint | 3字节,范围(-8388608~8388607) |
int | 4字节,范围(-2147483648~2147483647) |
bigint | 8字节,范围(+-9.22*10的18次方) |
上面定义的都是有符号的,当然了,也可以加上unsigned关键字,定义成无符号的类型,那么对应的取值范围就要翻翻了,比如:
tinyint unsigned的取值范围为0~255。
浮点型
MySQL数据类型 | 含义 |
float(m, d) | 4字节,单精度浮点型,m总个数,d小数位 |
double(m, d) | 8字节,双精度浮点型,m总个数,d小数位 |
decimal(m, d) | decimal是存储为字符串的浮点数 |
我在MySQL中建立了一个表,有一列为float(5, 3);做了以下试验:
1.插入123.45678,最后查询得到的结果为99.999;
2.插入123.456,最后查询结果为99.999;
3.插入12.34567,最后查询结果为12.346;
所以,在使用浮点型的时候,还是要注意陷阱的,要以插入数据库中的实际结果为准。
字符串数据类型
MySQL数据类型 | 含义 |
char(n) | 固定长度,最多255个字符 |
varchar(n) | 可变长度,最多65535个字符 |
tinytext | 可变长度,最多255个字符 |
text | 可变长度,最多65535个字符 |
mediumtext | 可变长度,最多2的24次方-1个字符 |
longtext | 可变长度,最多2的32次方-1个字符 |
1.char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。
2.同时char和varchar最大的区别就在于char不管实际value都会占用n个字符的空间,而varchar只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。
3.超过char和varchar的n设置后,字符串会被截断。
4.char的上限为255字节,varchar的上限65535字节,text的上限为65535。
5.char在存储的时候会截断尾部的空格,varchar和text不会。
6.varchar会使用1-3个字节来存储长度,text不会。
其它类型
1.enum(“member1″, “member2″, … “member65535″)
enum数据类型就是定义了一种枚举,最多包含65535个不同的成员。当定义了一个enum的列时,该列的值限制为列定义中声明的值。如果列声明包含NULL属性,则NULL将被认为是一个有效值,并且是默认值。如果声明了NOT NULL,则列表的第一个成员是默认值。
2.set(“member”, “member2″, … “member64″)
set数据类型为指定一组预定义值中的零个或多个值提供了一种方法,这组值最多包括64个成员。值的选择限制为列定义中声明的值。
总结:很好的书 值得一看。。。。kay