数据库增删改查
创建数据库
create database [if not exists] 数据库名 [charset=字符集]
实例1:create database stu
注意点:以上语句如果mysql数据库中已经有了stu的数据库,在执行就会报错
实例2:create database if not exists stu
注意点:以上语句如果数据库中已经存在stu的数据中,并不会报错,而是跳过这条语句
实例3:create database if not exists stu charset=utf8
注意点:为了避免将来读取数据的字符集和存储的字符集不一样导致乱码问题,在创建数据库的时候,我们还需要指定当前的数据库将来使用什么样的编码方式储存数据
如何查看数据库全局默认的编码
show variables like 'character_set_%';
如何查看某个数据库的编码
show create database person;
特殊的数据库名称梳理
create database if not exists `create` charset=utf8;
注意点:如果数据库的名称是SQL的关键字或者一些特殊的字符#~@*&.., 这个时候就需要用反引号括起来
如何删除数据库
drop database [if exists] 数据库名称
实例1:drop database stu
注意点:以上语句 ,如果mysql中没有要删除的数据库,那么就会报错
实例2:drop database if exists stu
注意点:以上语句如果mysql中没有要删除的数据库,那么就会跳过这条语句,不会报错
如何修改数据库
alter database 数据库名称 charset=字符集
alter database it66 charset=utf8
如何查看数据库
show create database 数据库名称
show databases
新建-- C/增加
create database [if not exists] 数据库名称 [charset=字符集];
删除-- D/删除
drop database [if exists] 数据库名称;
修改-- U/修改
alter database 数据库名称 charset=字符编码
读取-- R/查看
show databases;
show create database 数据库名称;
表的增删改查
注意点:在对数据库的表进行操作的时候,都必须告诉mysql我们要操作的是哪一个数据库
use 数据库名称
如何查看数据库中有哪些表
show tables;
如何查看指定表的结构
desc 表名
创建表
create table 表名 (
字段名称 数据类型
字段名称 数据类型
字段名称 数据类型
);
示例一:
create table stu(
id int,
name text
);
注意点: 以上代码创建表, 如果表已经存在了, 那么就会报错
实例2:
create table if not exists person (
id int
name text
)
注意点:以上代码创建表,没有就会创建一个新的,有就会跳过
删除表
drop table 表名
实例1:
drop table stu
注意点:以上语句,如果删除的表不存在,那么就会报错
实例2:
drop table if exists stu
注意点 以上语句删除的表如果存在就删除,不存在就直接跳过,不会报错
修改表
修改表名
rename table 原始名称 to 新的名称
rename table stu to person
添加字段
alter table 表名 add 新增字段名称 新增字段类型 [位置]
alter table person add age int
注意点:默认情况下会将新增的字段放到原有字段的后面
alter table person add score float first
注意点:我们可以通过指定first将新增字段放到原有字段的前面
alter table person add phone int after name
注意点:我们可以通过after指定将新增字段放到哪个字段后面
删除字段
alter table 表名 drop 字段
alter table person drop phone
修改字段
修改字段的数据类型
alter table 表名 modify 需要修改的字段名称 新的数据类型
alter table person modify score double;
修改字段的名称和数据类型
alter table 表名 change 原始字段名称 新的字段名称 新的数据类型
alter table person change age addr text
mysql储存引擎
MySQL中的储存引擎就好比我们现实中的银行,不同的银行提供的安全级别和服务水平,储存功能不一样,和现实中一样在mysql也有各种不同的银行,这些银行我们称之为储存引擎,和现实生活中一样mysql不同的引擎提供的安全级别,服务水平,储存功能等也不一样
MySQL中的三种储存引擎分别是:
MyISAM:安全性能低,不支持事务和外键,适合频繁插入和查询的应用
InnoDB(默认):安全性能高,支持事务和外键,适合安全性,数据完整性要求较高的应用
Memory:访问速度快,但是不会永久保存数据,适合对读写速度要求较高的应用
create table stu (
id int
name text
)engine=引擎名称;
不同引擎本质
前面我们说过数据库的本质就是文件, 所以我们可以先观察一下
-
通过观察, 我们发现只要创建一个数据库就会自动创建一个文件夹
-
通过观察, 我们发现只要创建一张表就会在指定的数据库文件夹中创建一个文件
-
创建表的时候自动创建的这个文件就保存了这张表的结构
create table stu(
id int,
name varchar(20)
)engine=Memory;
InnoDB:
如果表的储存引擎是InnoDB,那么要创建表就会自动创建一个文件,这个文件就保存了这张表的结构,如果往这张表中储存数据,那么数据结构就会被储存到ibdata1的文件中,如果存在的数据比较多,那么系统就会再自动的创建ibdata2、ibdata3 ...
MyISAM:
如果表储存的引擎是MyISAM,那么只要创建表就会自动创建三个文件
.sdi这个文件就保存了这张表的结构
.MYD这个文件就保存了这张表中存储的数据
.MYI这个文件就保存了这张表中的索引
Memory:
如果表的储存引擎是Memory,那么只要自动创建一个文件,这个文件就保存了这张表的结构
注意点:如果表的储存引擎是Memory,那么就不会像InnoDB/MyISAM将数据保存在文件中,而是直接保存在内存中