数据库和表的基础操作

发布于:2022-12-11 ⋅ 阅读:(165) ⋅ 点赞:(0)

数据库基础知识

创建和查看数据库

CREATE DATABSE 数据库名称  -- 数据库名称唯一的、不可重复出现。
SHOW DATABASES            -- 查看所有数据库名称
SHOW CREATE 数据库名称     -- 查看某个数据库的详细信息


修改数据库编码 

ALTER DATABASES 数据库名称 DEFAULT SET 编码方式 COLLATE 编码方式_bin

DROP DATABASE 数据库名称       -- 删除数据库


数据类型

整数类型 :

TINYINT(微小)  SMALLINT 小) MEIDUMINT(中) INT   BIGINT(大)

 单精度浮点类型:

FLOAT    双精度浮点类型:DOUBLE  定点数类型: DECIMAL(M,D)

日期与时间类型:

YERAR 、DATE、TIME、DATETIME、TIMESTAMP

字符串和二进制类型

CHAR :                 表示固定长度字符串

VARCHAR:           用于表示可变长度的二进制数据

BINARY :              用于表示固定长度的二进制数据

VARBINARY:       用于表示二进制大数据

BLOB :                 用于二进制大数据

TEXT :                 表示大文本数据

ENUM:                表示枚举类型,只能存储一个枚举字符串

SET :                   表示字符串对象,可以有零或多个值

BIT:                     表示位字段类型

数据表的基本操作

创建数据表

创建数据库表的语法格式 

CREATE TABLE 表名(
字段名1  数据类型 [完整性约束条件],
字段名2  数据类型 [完整性约束条件],
字段名3  数据类型 [完整性约束条件]
);

说明 :
表名:    创建的数据库名称
字段名:  数据表的列名
约束条件: 字段的某些特殊条件,关于表的约束

数据表的创建

CREATE TABLE  gui4(
age INT,
shengao DOUBLE,
job TEXT
);

查看数据表


SHOW CREATE TABLE 表名   -- 查看数据表结构
DESCRIBE  表名           -- 查看数据表

修改数据表

修改表名
ALTER TABLE 旧表明 RENAME TO 新表名;

修改字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;

修改字段的数据类型
ALTER TABLE 表名 MODIFY 字段名 数据类型;

添加字段
ALTER TABLE 表名 ADD 新字段名 数据类型;

删除字段
ALTER TABLE 表名 DROP 字段名;

修改字段的排序位置
ALTER TABLE 表名 字段名1 数据类型 FIRST/AFTER 字段名2

删除数据表

DROP TABLE 表名

主键约束

单字段主键
格式:  字段名 数据类型 RPIMARYKEY,
作用:  作为一条数据的唯一标识,像每个人的身份证一样。
标主键字段的要求:值不重复且值具有唯一性。主键不能为空

多字段主键
格式:  PRIMARY KEY(字段名1,字段名2,....)

非空约束 
格式: 字段名 数据类型 NOT NULL;
作用:字段的值不能为NULL

唯一约束
格式: 字段名 数据类型 UNIQUE;
作用: 字段值不能重复出现

默认约束
格式: 字段名 数据类型 DEFAULT '默认值';
作用:数据表中的字段指定默认值,插入一条新记录(字段)时,如果这个字段没有值,那么会自动插入默认值。

设置表的字段值自动添加

格式: 字段名 数据类型 TUTO_INCREMENT;
作用 :插入的新纪录自动生成唯一的ID,约束的字段只能是整数类型。默认情况下,该字段的值从1开始。
注意:每插入一条新纪录id的值自动添加。


 索引

索引的概念

(1) 普通索引 :由Key或INDEX定义的索引,它是MySQL中的基本索引类型,可以创建任何数据类型。

(2)唯一性索引:由UNIQUE定义的索引,该索引所在字段的值必须是唯一的。

(3) 全文索引:由FULLTEXT定义的索引,它只能创建在CHAR、VARCHAR或TEXT类型的字段上,而且现在只有MyISAM存储引擎支持全文索引。

(4)单列索引:在表中单个字段上创建索引,它可以使普通索引、唯一索引或者全文索引,只要保证该索引只应对表中一个字段即可。

(5)多列索引:多列索引指的在表中多个字段创建索引,只有在查询条件中使用了这些字段中的第一个字段时,索引才会被使用。

(6)空间索引:空间索引是由SPATIAL定义的索引,它只能创建在空间数据类型的字段上,MySQL,中的空间数据类型有4种,GEOMETRY、POINT、LINESTRING和POLYGON。需要注意的是,创建空间索引的字段必须将其声明为NOT NULL,并且空间索引只能在存储引擎为MISAM的表中创建。

注意:虽然索引可以提高数据的查询速度,但索引会占用一定的磁盘空间,并且在创建和维护索引时,其消耗的时间是随着数据量的增加而增加的。因此,使用索引时,应该总和考虑索引的优点和缺点。

(1)创建普通索引

CREATE TABLE demo1(
id int(10),
KEY(id,name)
);

EXPLAIN SELECT * from demo1 where id=1; --查看索引是否被使用

(2)创建唯一性索引

CREATE TABLE demo1(
id int(10),
UNIQUE INDEX weiyi(id ASC)        -- ASC升序  DESC 降序
);

(3)创建全文索引

CREATE TABLE demo1(
id int(10),
name VARCHAR(5),
FULLTEXT INDEX quanwen(name)
)ENGINE = MYISAM;

(4)创建单列索引

CREATE TABLE demo1(
id int(10),
name VARCHAR(5),
INDEX danlie(id)
);

(5) 创建多列索引

CREATE TABLE demo1(
id int,
name VARCHAR(5),
INDEX danlie(id,name(5))
);

(6) 创建空间索引

CREATE TABLE demo1( -- ENGINE = MyISAM
id int,
name VARCHAR(5),
space geometry NOT NULL,
SPATIAL INDEX kongjian(space)
)ENGINE=MYISAM;

 使用CREATE INDEX 语句在已经存在的表上创建索引

CREATE TABLE gui(
bookid INT NOT NULL,
bookname VARCHAR(255) NOT NULL,
uauthors VARCHAR(255) NOT NULL,
info VARCHAR(255) NULL,
comment VARCHAR(255) NULL
); 

CREATE INDEX putong ON gui(bookid);          --创建普通索引
CREATE UNIQUE INDEX weiyi ON gui(bookname);  --创建唯一索引
CREATE INDEX danlie ON gui(uauthors);        --创建单列索引
CREATE INDEX duolie ON gui(comment(20),info(20)); -- 创建多列索引

CREATE TABLE gui2(
bookid INT NOT NULL,
bookname VARCHAR(255) NOT NULL,
uauthors VARCHAR(255) NOT NULL,
info VARCHAR(255) NULL,
comment VARCHAR(255) NULL
)ENGINE=MyISAM;

CREATE FULLTEXT INDEX quanwen ON gui2(bookname);

CREATE TABLE gui3(
id INT,
g GEOMETRY NOT NULL
)ENGINE=MyISAM;

CREATE SPATIAL INDEX kongjian ON gui3(g);

使用ALTER TABLE 在已经存在的表上创建索引

CREATE TABLE gui01(
bookid INT NOT NULL,
bookname VARCHAR(255) NOT NULL,
authors VARChAR(255) NOT NULL,
info VARCHAR(255) NULL,
comment VARCHAR(255) NULL
);
ALTER TABLE gui01 ADD INDEX putong(bookid);               -- 创建普通索引
ALter TABLE gui01 ADD UNIQUE weiyi(bookid);               -- 创建唯一索引
ALTER TABLE gui01 ADD INDEX  danlie(comment(50));         -- 创建单列索引
ALTER TABLE gui01 ADD INDEX duoli(info(20),comment(50));  -- 创建多列索引

bookname VARCHAR(255) NOT NULL,
authors VARChAR(255) NOT NULL,
info VARCHAR(255) NULL,
comment VARCHAR(255) NULL
)ENGINE=MYISAM;

ALTER TABLE gui02 ADD FULLTEXT INDEX quanwen(info);       -- 创建全文索引  

 
CREATE TABLE gui03 (
id INT,
g GEOMETRY NOT NULL
)ENGINE=MyISAM;    

CREATE SPATIAL INDEX kongjian ON gui03(g);  --创建空间索引
CREATE TABLE gui02(
bookid INT NOT NULL,
删除索引

 删除索引

CREATE TABLE gui(
bookid INT NOT NULL,
bookname VARCHAR(255) NOT NULL,
uauthors VARCHAR(255) NOT NULL,
info VARCHAR(255) NULL,
comment VARCHAR(255) NULL
); 

CREATE INDEX putong ON gui(bookid);          --创建普通索引
CREATE UNIQUE INDEX weiyi ON gui(bookname);  --创建唯一索引
CREATE INDEX danlie ON gui(uauthors);        --创建单列索引
CREATE INDEX duolie ON gui(comment(20),info(20)); -- 创建多列索引

ALTER TABLE gui DROP INDEX putong;  -- 删除创建时的索引名

DROP INDEX weiyi ON gui;  
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到