您的位置:首页 > 数据库 > MySQL

MYSQL基础总结

2011-06-13 22:47 225 查看
SQL(Structured Query Language,结构化查询语言)

它不区分大小写

1.DDL:(Database definition language)定义和管理数据对象

create database 库名;

如果使用了use 库名; 下面创建表的库名可以省略

create table [if not exists] [库名].表名(

字段名1 列数据类型 [索引] [属性],

字段名2 列数据类型 [索引] [属性],

...

字段名N 列数据类型 [索引] [属性]

)[表类型] [default charset utf8(设置默认字符集)];

表名称和字段名需要用户自己定义名称(但是不能用关键字的)

SQL是不区分大小写的,但是表就是一个文件名,

Windows不区分大小写,Linux区分大小写的,

写项目的时候一定要注意.所以自己定义的名称,

一般为小写;

2.DML:(Database Manipulation Language)用于对数据的操作

insert into 表名(字段1,字段2..字段N) values(值1,值2..值N);

updata 表名 set 字段1='值1'[,字段2='值2',...,字段N='值N'] where 条件1='值1' [and 条件2='值2' and ... and 条件N='值N'];

3.DQL:(Database Query Language)数据库查询语言

select 字段名 from 表名; 如果为所有字段 字段名可以用 * 代替;

4.DCL:(Database Control Language)数据库控制语言

\s 查看状态

show databases 查询所有的库

show tables 查询所有的表;

desc 表名 看表结构;

show variables 配置文件中的变量

1.执行SQL语句,连接到数据库服务器

命令:mysql[如果没有配置环境变量,要在MYSQL的bin目录下的命令] mysql -h loaclhost -u root -p 123

数据值和列类型

[细分都是按占内存空间大小区分的,如果数值超过所定义的数据类型,会按此数据类型所能支持的最大值插入]

1.数值型;

整型(整数) 注:unsigned可选 表示无符号.

非常小的整型([unsigned]tinyint) [1个字节] {有符号:[-128~127] 无符号:[0~255]}

较小的整型([unsigned]smallint) [2个字节] {有符号:[-32768~32767] 无符号:[0~65535]}

中等大小的整型([unsigned]mediumint) [3个字节] {有符号:[-8388608~8388607] 无符号:[0~16777215]}

标准的整型([unsigned]int) [4个字节] {有符号:[-2147483648~2147483647] 无符号:[0~4294967295]}

大整数型 ([unsigned]bigint) [8个字节] {有符号:[-9223372036854775808~9223372036854775807] 无符号:[0~18446744073709551615]}

浮点型(小数) 注:M为总共有多少位数,D表示小数点后位数,浮点数超出数值范围会四舍五入,存在误差!

单精度[float(M,D)] [4个字节]

双精度[double(M,D)] [8个字节]

定点数[decimal(M,D)] [M+2个字节] (实际是以字符串形式存放)

2.字符型;[可以表示任何类型] 注:m为指定的长度

较小字符串:

char(m) [为固定长度字符串] [最大255个字节]

varchar(m)[为可变长度字符串(根据实际长度判断,始终为实际长度+1个字节)] [最大255个字节]

[不常用,详细参考mysql官方手册]二进制字符串(包含字节字符串,而不是字符字符串,没有字符集)

binary

varbinary

较大文本

大文本数据[text] (文章)

hediumtext

longtext

二进制大数据[blob] (照片)

hediumblob

longblob

枚举[enum] [1或2个字节] 最多可以有65535个成员

集合[set] [1,2,3,4,8个字节] 最多可以有64个成员

枚举一次只能用一个值插入,集合一次可以用多个集合中的值,中间使用 逗号','分开;

3.日期型;

日期型[DATA] 格式[YYYY-MM-DD]

时间型[TIME] 格式[HH:MM:SS]

日期时间[DATATIME] 格式[YYYY-MM-DD HH:MM:SS]

时间邮戳[TIMESTAMP] 格式[YYYYMMDDHHMMSS]

年[YEAR] 格式[YYYY]

时间格式创建表时最好不要作用这些中的时间格式;

(PHP中的时间戳 从1970-1-1 0:0:0 到目前,是一个整数)

所以最好用整型来保存时间,方便运算;

4.NULL;

数据字段属性

1.unsigned 可以让空间增加一倍,不允许有负数出现.

只能用在数值型字段.

2.zerofill 不足位置补前导0,只有用在数值型字段

3.auto_increment 自动增长,只能是整数,数据每增加一条,就会自动增加1,字段的值不允许重复的,

就算字段已经被删除.

4. NULL和 NOT NULL

5.default 缺省值(默认值)

创建索引

1.主键索引(primary key)

主要作用是确定数据库表里一条特定数据(唯一数据)记录的位置,

最好为每一张数据表定义一个主键,一个表只能有一个主键,

主键的值不能为空;

2.唯一索引(unique)

和主键索引一样,都可以防止创建重复的值,每个数据表中可以有多个唯一索引,

一般创建唯一索引不是为了提高查询速度,而只是为了让它不重复;

3.常规索引

可以提升数据库的属性,在数据库的优化的时候,优先考虑;

可以单独使用(和表一样是独立的数据对象),也可以在创建表的时候直接创建.

index 关键字和 key 关键字是同义词.

语法: (1).单独给已经创建的表创建常规索引:

create index 索引名 on 表名(字段名1[,字段名2,...,字段名N]);

(2).在创建表时创建索引

create table 表名(

id int not null,

uid int not null,

sid int not null,

number int not null,

primarty key(id),

key 索引名1(uid),

index 索引名2(sid)

)default charset utf8;

4.全文索引

fulltext类型索引,MyISAM表类型使用,只有在varchar char text 文本字符串上使用

也可以多个数据列使用

例子:

create table books(

id int,

bookname varchar(30),

price double,

detail text not null,

fulltext(detail,bookname),

index ind(price),

primary key(id)

)default charset utf8;

使用:

之前方法,效率很低:select * from books where bookname where like %php%;

使用全局索引,高效率:select bookname,price from books where MATCH(detail) AGAINST('php');

select match(detail) against('php) from books;
本文出自 “Typedef” 博客,请务必保留此出处http://typedef.blog.51cto.com/3209600/587447
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: