深入浅出mysql

一、mysql简介

1、MySQL 数据库隶属于 MySQL AB 公司,总部位于瑞典。公司名中的“AB”是瑞典语“aktiebolag”或“股份公司”的首字母缩写。MySQL 支持几乎所有的操作系统,并且支持很大的表(MyISAM存储引擎支持的最大表尺寸为 65536TB),这些特性使得 MySQL 的发展非常迅猛,目前已经广泛应用在各个行业中。

2、

SQL 是 Structure Query Language(结构化查询语言)的缩写,它是使用关系模型的数据库应用语言,由 IBM 在 20 世纪 70 年代开发出来,作为 IBM 关系数据库原型 System R 的原型关系语言,实现了关系数据库中的信息检索。
二、SQL分类
1、
SQL 语句主要可以划分为以下 3 个类别。
? DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter
等。
? DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、udpate 和
select 等。
? DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。
2、change和modify区别
注意:change 和 modify 都可以修改表的定义,不同的是 change 后面需要写两次列名,不方便。
但是 change 的优点是可以修改列名称,modify 则不能。
3、int
对于整型数据,MySQL 还支持在类型名称后面的小括号内指定显示宽度,例如 int(5)表示当数值宽度小于 5 位的时候在数字前面填满宽度,如果不显示指定宽度则默认为 int(11)。一般配合 zerofill 使用,顾名思义,zerofill 就是用“0”填充的意思,也就是在数字位数不够的空间用字符“0”填满。
alter table t1 modify id1 int zerofill;
 
自增
整数类型还有一个属性:AUTO_INCREMENT。在需要产生唯一标识符或顺序值时,可利用此属性,这个属性只用于整数类型。AUTO_INCREMENT 值一般从 1 开始,每行增加 1。在插入 NULL 到一个 AUTO_INCREMENT 列时,MySQL 插入一个比该列中当前最大值大 1 的值。一个表中最多只能有一个AUTO_INCREMENT列。对于任何想要使用AUTO_INCREMENT 的列,应该定义为 NOT NULL,并定义为 PRIMARY KEY 或定义为 UNIQUE 键。
 
CREATE TABLE AI (ID INT AUTO_INCREMENT NOT NULL PRIMARY KEY);
CREATE TABLE AI(ID INT AUTO_INCREMENT NOT NULL ,PRIMARY KEY(ID));
CREATE TABLE AI (ID INT AUTO_INCREMENT NOT NULL ,UNIQUE(ID));
 
三、运算符
XOR
“XOR”表示逻辑异或。当任意一个操作数为 NULL 时,返回值为 NULL。对于非 NULL 的操作数,如果两个的逻辑真假值相异,则返回结果 1;否则返回 0。
select 1 xor 1 ,0 xor 0,1 xor 0,0 xor 1,null xor 1;
四、函数
MySQL 中的常用字符串函数
函数
功能
CANCAT(S1,S2,…Sn)
连接 S1,S2,…Sn 为一个字符串
INSERT(str,x,y,instr)
将字符串 str 从第 x 位置开始,y 个字符长的子串替换为字符串 instr
LOWER(str)
将字符串 str 中所有字符变为小写
UPPER(str)
将字符串 str 中所有字符变为大写
LEFT(str ,x)
返回字符串 str 最左边的 x 个字符
RIGHT(str,x)
返回字符串 str 最右边的 x 个字符
LPAD(str,n ,pad)
用字符串 pad 对 str 最左边进行填充,直到长度为 n 个字符长度
RPAD(str,n,pad)
用字符串 pad 对 str 最右边进行填充,直到长度为 n 个字符长度
LTRIM(str)
去掉字符串 str 左侧的空格
RTRIM(str)
去掉字符串 str 行尾的空格
REPEAT(str,x)
返回 str 重复 x 次的结果
REPLACE(str,a,b)
用字符串 b 替换字符串 str 中所有出现的字符串 a
STRCMP(s1,s2)
比较字符串 s1 和 s2
TRIM(str)
去掉字符串行尾和行头的空格
SUBSTRING(str,x,y)
返回从字符串 str x 位置起 y 个字符长度的字串
 
 
 
存储引擎的选择
在选择存储引擎时,应根据应用特点选择合适的存储引擎,对于复杂的应用系统可以根据实际情况选择多种存储引擎进行组合。下面是常用存储引擎的适用环境。
? MyISAM:默认的 MySQL 插件式存储引擎。如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常适合的。MyISAM 是在 Web、数据仓储和其他应用环境下最常使用的存储引擎之一。
? InnoDB:用于事务处理应用程序,支持外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询以外,还包括很多的更新、删除操作,那么 InnoDB 存储引擎应该是比较合适的选择。InnoDB 存储引擎除了有效地降低由于删除和更新导致的锁定,还可以确保事务的完整提交(Commit)和回滚(Rollback),对于类似计费系统或者财务系统等对数据准确性要求比较高的系统,InnoDB 都是合适的选择。
? MEMORY:将所有数据保存在 RAM 中,在需要快速定位记录和其他类似数据的环境下,可提供极快的访问。MEMORY 的缺陷是对表的大小有限制,太大的表无法 CACHE 在内存中,其次是要确保表的数据可以恢复,数据库异常终止后表中的数据是可以恢复的。MEMORY 表通常用于更新不太频繁的小表,用以快速得到访问结果。
? MERGE:用于将一系列等同的 MyISAM 表以逻辑方式组合在一起,并作为一个对象引用它们。MERGE 表的优点在于可以突破对单个 MyISAM 表大小的限制,并且通过将不同的表分布在多个磁盘上,可以有效地改善MERGE表的访问效率。这对于诸如数据仓储等VLDB环境十分适合
 
 
存储过程和函数的区别
存储过程和函数的区别在于函数必须有返回值,而存储过程没有,存储过程的参数可以使用IN、OUT、INOUT 类型,而函数的参数只能是 IN 类型的。如果有函数从其他类型的数据库迁移到 MySQL,那么就可能因此需要将函数改造成存储过程。
 
 

深入浅出mysql

上一篇:Sql server 左连接查询最大记录


下一篇:用pureftpd+pureDB虚拟用户,建立一个简单安全(不需要数据库支持)的linux ftp站