第二章
数据库和表的基本操作
(一)数据库的操作:
1.创建数据库:create database 数据库名; (数据库名是唯一的,不可重复)
2.查看所有数据库:show databases;
3.查看数据库信息:show create database 数据库名;
4.修改数据库:alter database 数据库名 default character set 编码方式 collate 编码方式_bin;
5.删除数据库:drop database 数据库名;
(删除成功后,库中的所有数据都将被清除,原来分配的空间也将被收回)
(二)数据表的操作:
1.创建数据表:(需要先打开要用到的数据库:\u 数据库名;(use 数据库名;))
create table 表名(字段名1,数据类型[完整性约束条件],
字段名2,数据类型[完整性约束条件],...);
2.查看数据表:
①使用show create table查看(不仅可以查看创建表时的定义语句,还可以查看表的字符编码):show create table 表名;
②使用describe查看(可以查看表的信息,包括字段名,字段类型等)
describe 表名; 或 desc 表名;{null:表示该列是否可以存储null值;
key:表示该列是否已经编制索引;
default:表示该列是否有默认值;
extra:表示获取到的与给定列相关的附加信息}
3.修改数据表:
①修改表名:alter table 旧表名 rename [to] 新表名;
②修改字段名:alter table 表名 change 旧字段名 新字段名 新数据类型;
(新数据类型不能为空,就算新、旧字段的数据类型相同)③修改字段的数据类型:alter table 表名 modify 字段名 数据类型;
④.添加字段:alter table 表名 add 字段名 数据类型 [约束条件] [first | after 已存在字段名];
⑤.删除字段: alter table 表名 drop 字段名;
⑥.修改字段的排列位置(first指将字段改为表的第一个字段):
alter table 表名 modify 字段名1 数据类型 first| after 字段名2;
⑦.删除数据表:drop table 表名;
(三)表的约束
(为防止数据表中插入错误的数据,定义的维护数据库完整性的规则)
{primary key 主键约束,用于唯一标识对应的记录
foreign key 外键约束
not null 非空约束
unique 唯一性约束
default 默认约束,用于设置字段的默认值}
1.主键约束(每个数据表中最多只能有一个主键约束,定义为主键的字段不能有重复值,且不能为null值)
a.单字段主键:由一个字段构成的主键
字段名 数据类型 primary keyb.多字段主键:由多个字段组合而成的主键
primary key (字段名1,字段名2,...字段名n)
2.非空约束(字段值不能为null)可以定义多个非空约束
字段名 数据类型 not null;
3.唯一约束(保证字段的唯一性,即表中的字段值不能重复出现)
字段名 数据类型 unique
4.默认约束(给表中的字段指定默认值,即当插入新纪录时,没给该字段赋值,则系统自动给该字段插入默认值)
字段名 数据类型 default 默认值
设置表的字段值自动增加
(约束的字段可以是任何整数类型,默认情况下,从1开始自增)
字段名 数据类型 auto_increment
索引(加快数据的查询和排序)
是对数据库表中一列或多列的值进行排序后的一种结构,作用:提高表中数据的查询速度
1.普通索引(由key或index定义的索引,是MySQL中的基本索引类型,可以创建在任何数据类型中,其值是非唯一和非空由字段本身的约束条件决定)
例:create table t1 (id int(7),name varchar(20),index (id));
2.唯一索引(由unique定义的索引,所在字段的值必须是唯一的)
例:create table t2 (id int not null, name varchar(20) not null, unique index unique_id(id asc));
3.全文索引(由fulltext定义的索引,只能创建在char、varchar或text类型的字段上,且目前只有MyISAM存储引擎支持全文索引)
例:create table t3 (id int not null, name varchar(20) not null,fulltext index fulltext_name(name)) engine=MyISAM;
4.单列索引(指在表中单个字段上创建索引,可以是普通、唯一或全文索引,只要保证该索引只对应表中一个字段即可)
例:create table t4 (id int not null, name varchar(20) not null,index single_name(name(20)));
5.多列索引(指在表中多个字段上创建索引,只有在查询条件中使用了这些字段中的第一个字段时,该索引才会被使用)
例:create table t5 (id int not null, name varchar(20) not null,index multi(id,name(20)));
6.空间索引(由spatial定义的索引,只能创建在空间数据类型的字段上,geometry、point、linestring和polygon四种数据类型,字段必须先声明为not null,且只能存在MyISAM存储引擎的表中创建)
例:create table t6 (id int not null, name varchar(20) not null,space geometry not null,spatial index sp(space)) engine=MyISAM;
①创建表时创建索引:
create table 表名(字段名 数据类型 [完整性约束条件],
...
[unique|fulltext|spatial] index|key [别名](字段名1[(长度)] [asc|desc])
);
②使用create index 在已经存在的表中创建索引:
create [unique|fulltext|spatial] index|key 索引名 on 表名 (字段名1[(长度)] [asc|desc]));
③使用alter table在已经存在的表中创建索引:
alter table 表名 add [unique|fulltext|spatial] index|key 索引名 (字段名1[(长度)] [asc|desc]));
用show create table 表名\G 查看表的结构
删除索引(索引会占用一定磁盘空间,为了避免影响数据库性能)
①用alter table删除索引:alter table 表名 drop index 索引名;
②用drop index删除索引:drop index 索引名 on 表名;