MYSQL数据库和表的基本操作学习笔记(1)

标签(空格分隔): 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

发布了40 篇原创文章 · 获赞 0 · 访问量 1531

猜你喜欢

转载自blog.csdn.net/zhoumoon/article/details/104838476