首页 > 技术文章 > MySQL基础知识(MySQL从入门到精通观后感)

Xkay 2017-07-09 20:07 原文

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

推荐阅读