标签(空格分隔): MySql
数据库基本知识
创建和查看数据库
Create DataBase 数据名称;//创建数据库
USE db_name;//use 语句可以通告MySQL把db_name数据库作为默认(当前)数据库使用
mysql> show tables; //表示db_name数据库并没有数据表。
Empty set (0.00 sec)
Show DataBases;//查看已经存在的数据库
//查看某个已经创建的数据库信息
Show Create DataBases 数据库名称;
修改数据库
修改数据库编码的基本语法格式如下所示:
Alter DataBase 数据库名称 Default Character Set 编码方式 Collate 编码方式_bin
删除数据库
Drop DataBase 数据库名称;
数据类型
整数类型
MySql中的整数类型可分为5种,分别是TinyInt、SmallInt、MediumInt、Int和BigInt。字节大小和取值范围从小到大(按照上面排序)。
浮点数类型和定点数类型
MySql数据库中,存储的小数都是使用浮点数和定点数来表示的。浮点数的类型有两种,分别是单精度浮点数类型(Float)和双精度浮点数类型(Double)。而定点数类型只有Decimal类型。
日期与时间类型
MySql提供表示日期和时间的数据类型,分别是Year、Date、Time、DateTime和TimeStamp。
字符串和二进制类型
持续更新……
数据表的基本操作
创建数据表
Create Table 表名
{
字段名1,数据类型[完整性约束条件],
字段名2,数据类型[完整性约束条件],
…
字段名n,数据类型[完整性约束条件]
}
查看数据表
Show Create Table 表名;
Show Create Table 表名 \G; //加上参数\G,使显示结果整齐美观
使用Describe语句查看数据表
Describe 表名 或简写为Desc 表名;
修改数据表
修改表名
Alter Table 旧表名 Rename [To] 新表名;
修改字段名
Alter Table 表名 旧字段名 新字段名 新数据类型;
修改字段的数据类型
Alter Table 表名 Modify 字段名 数据类型;
添加字段
Alter Table 表名 Add 新字段名 数据类型 [约束条件][First|After 已存在字段名]
在上述格式中,“新字段名”为添加字段的名称,"First"为可选参数,用于将新添加的字段设置为表的第一个字段, "After"也为可选参数,用于将新添加的字段添加到指定的“已存在字段名”的后面。
删除字段
Alter Table 表名 Drop 字段名
修改字段的排列位置
“First”为可选参数,指的是将字段名1修改为表的第一个字段
Alter Table 表名 Modify 字段名1 数据类型 First
“After 字段名2”是将字段名1插入到字段名2的后面
Alter Table 表名 Modify 字段名1 数据类型 After 字段名2
修改完之后,为了验证字段名1是否插入到字段名2后面,可以使用Desc语句查看数据表。
Desc 表名;
删除数据表
Drop Table 表名;
表的约束
为了防止数据表中插入错误的数据,在MySql中,定义了一些维护数据库完整性的规则,即表的约束。
约束条件 | 说明 |
---|---|
Primary Key | 主键约束,用于唯一标识对应的记录 |
Foreign Key | 外键约束 |
Not Null | 非空约束 |
Unique | 唯一性约束 |
Default | 默认值约束,用于设置字段的默认值 |
主键约束
单字段主键
字段名 数据类型 Primary Key
例如:
Create Table example(id int Primary Key,
name varchar(20),
grade float
);
多字段主键
Primary Key(字段名1,字段名2,…,字段名n)
例如:
注意:每个数据表中最多只能有一个主键约束,定义为Primary Key的字段不能有重复值且不能为NULL值。
Create Table example(stu_id int,
course_id int,
grade float,
Primary Key(stu_id,course_id)
);
非空约束
字段名 数据类型 Not Null;
例如:
Create Table example(id int Primary Key,
name varchar(20) Not Null,
grade float
);
唯一约束
唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。唯一约束是通过Unique定义的,其基本的语法格式如下所示:
字段名 数据类型 Unique;
例如:
Create Table example(id int Primary Key,
stu_id int Unique,
name varchar(20) Not Null
);
默认约束
字段名 数据类型 Default 默认值;
Create Table example(id int Primary Key Auto_Increment,
stu_id int Unique,
grade float Default 0
);
设置表的字段值自动增加
字段名 数据类型 Auto_Increment;
例如上面列子所示的代码,其中id字段为主键,且每插入一条新记录,id的值会自动增加,stu_id字段的值唯一,grade的值为float类型,grade字段默认值为0。
索引
在数据库操作中,经常需要查找特定的数据,例如,当执行“select * from student where id = 10000”语句时,MySql数据库必须从第 1条记录开始遍历 ,直到找到id为10000的数据,这样的效率显然非常低。为此,MySql允许建立索引来加快数据表的查询和排序。
索引的概念
数据库的索引好比新华字典的音序表,它是对数据库表中一列或多列的值进行排序后的一种结构,其作用就是提高表中数据的查询速度。
索引 | 说明 |
---|---|
普通索引Key或Index | |
唯一索引Unique | |
全文索引FullText | |
单列索引 | |
多列索引 | |
空间索引Spatial |
持续更新。。。
需要注意的是,虽然索引可以提高数据的查询速度,但索引会占用一定的磁盘空间,并且在创建和维护索引时,其消耗的时间是随着数据量的增加而增加的。因此,使用索引时,应该综合考虑索引的优点和缺点。
创建索引
创建索引的方式有三种:
1.创建表的时候创建索引
Create Table 表名(字段名1 数据类型[完整性约束条件],
字段名2 数据类型[完整性约束条件],
…
字段名n 数据类型[Unique|FullText|Spatial] Index|Key [别名](字段1[(长度)] [Asc|Desc])
);
例如:
Create Table example(id int,
name varchar(20),
score float,
Index(id))
使用Show Create Table语句查看表的结构
Show Create Table example \G
使用Explan语句可以查看刚才创建的索引是否被使用。
Explain Select * From example Where id =1 \G
从执行结果中查看possible_keys和key的值是否都为id,若它们的值都为id,则说明id索引nnx开始被使用了。
2.创建唯一性索引
Create Table example(id int Not Null,
name varchar(20) Not Null,
score float,
Unique Index unique_id(id Asc)
)
同样使用Show Create Table语句查看表的结构
Show Create Table example \G
从执行结果可以看出id字段上已经建立了一个名称为unique_id的唯一性索引。
3.创建全文索引
Create Table example(id int Not Null,
name varchar(20) Not Null,
score float,
FullText Index fulltext_name(name)
)ENGINE=MyISAM;
Show Create Table example \G
从执行结果可以看出,name字段上已经建立了一个名为fulltext_name的全索引。需要注意的是,由于目前只有MyISAM存储引擎支持全文索引,InnoDB存储引擎还不支持全文索引,因此,在建立全文索引时,一定要注意表存储引擎的类型,对于经常需要索引的字符串、文字数据等信息,可以考虑存储到MyISAM存储引擎的表中。
4.创建单列索引
Create Table example(id int Not Null,
name varchar(20) Not Null,
score float,
Index single_name(name(20))
);
5.创建多列索引
Create Table example(id int Not Null,
name varchar(20) Not Null,
score float,
Index multi(id,name(20))
);
需要注意的是,在多列索引中,只有查询条件中使用了这些字段中的第一个字段时,多列索引才会被使用。为了验证这个说法是否正确,将id字段作为查询条件,通过Explain语句查看索引的使用情况。
possible_keys和key的值都为multi,说明multi索引已经存在,并且已经开始被使用了。
Explain Select * From example Where id=1 \G
但是,如果只使用name字段作为查询条件,则possible_keys和key的值都为NULL,说明multi索引还没有被使用。
Explain Select * From example Where name=‘Mike’ \G
6.创建空间索引
Create Table example(id int ,
space Geometry Not Null,
Spatial Index sp(space)
)ENGINE=MyISAM;
使用Create Index语句在已经存在的表上创建索引
语法格式如下:
Create [Unique|FullText|Spatial] Index 索引名 On 表名(字段名[(长度)] [Asc|Desc]);
1.创建普通索引
Create Index index_id ON example(id);
2.创建唯一性索引
Create Unique Index uniqueidx On example(id);
3.创建单列索引
Create Index singleidx ON example(id);
4.创建多列索引
Create Index mulitidx ON example(name(20),score(20));
5.创建全文索引
Create FullText Index fulltextidx ON example(info);
6.创建空间索引
首先创建数据表example
Create Table example(g Geometry Not Null)ENGINE=MyISAM;
然后使用Create Index语句在example表的g字段上创建名称为spatidx的空间索引。
Create Spatial Index spatidx ON example(g);
使用Alter Table语句在已经存在的表上创建索引。
在已经存在的表中创建索引,除了可以使用Create Index语句外,还可以使用Alter Table语句。
语法格式如下:
Alter Table 表名 Add [Unique|FullText|Spatial] Index 索引名(字段名[(长度)] [Asc|Desc])
1.创建普通索引
Alter Table example Add Index index_id(id);
2.创建唯一索引
Alter Table example Add Unique uniqueidx_id(id);
3.创建单列索引
Alter Table example Add Index singleidx_id(info(50));
4.创建多列索引
Alter Table example Add Index multidx_id(authors(20),info(50));
5.创建全文索引
Alter Table example Add FullText Index fulltextidx(info);
6.创建空间索引
首先创建数据表example
Create Table example(space Geometry Not Null
)ENGINE=MyISAM;
然后使用Alter Table语句在example表的sapce字段上创建名称为spatidx的空间索引。
Alter Table example Add Spatial Index spatidx(space);
删除索引
由于索引会占用一定的磁盘空间,因此,为了避免影响数据库性能,应该及时删除不再使用的索引。删除索引的方式有两种,具体如下。
1.使用Alter Table删除索引
Alter Table 表名 Drop Index 索引名;
2.使用Drop Index删除索引
Drop Index 索引名 ON 表名;
写于2016-09-13 20:22