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
它不区分大小写
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
相关文章推荐
- mysql 的常见语句总结和其他基础知识
- MySQL问题解决:-bash:mysql:command not found 分类: ubuntu 问题总结 python基础学习 software database 2014-01-22 16:00 3088人阅读 评论(1) 收藏
- MYSQL基础知识总结(一)
- mysql基础总结 连接查询
- mysql 基础知识总结
- mysql基础-总结
- mysql基础&重点知识总结及在python中的应用(2)
- MYSQL 常用总结【基础】
- Mysql基础总结
- 我的Linux生涯之Mysql:[Mysql基础命令总结]
- 关系数据库—mysql基础总结
- MySql基础总结(1)
- Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
- 【MYSQL】基础SQL语句总结(二)
- MYSQL基础知识总结
- 数据库基础sql语句总结(以Oracle为主介绍,并与mysql,sql server做对比)二
- MySQL基础知识总结
- 【python_mysql】mysql数据库基础知识总结
- MYSQL基础知识总结(二)
- MySQL基础学习总结