数据库的基本操作
数据库是数据存储的最外层(最大单元)
创建数据库
基本语法:create database 数据库名字【库选项】
库选项:数据库的相关属性
字符集:charset 字符集,代表当前数据库下的所有表存储的数据默认指定的字符集(如果当前不指定,那么采用DBMS默认的)
校对集:collate 校对集
create database 数据库名字 charset 字符集名称;
显示数据库
每当用户通过SQL指令创建一个数据库,那么系统就会产生一个对应的存储数据的文件夹(data)
其实,每个数据库文件下都有一个opt文件,保存的是对应的数据库选项。
显示全部
show databases;
显示部分
基本语法:show databases like '匹配模式';
_:匹配当前位置单个字符
%:匹配指定位置多个字符
获取以my开头的全部数据库:‘my%’;
获取以m开头,后面第一个字母不确定,最后为database的数据库:‘m_databas’;
获取以database结尾的数据库:‘%database’;
显示数据库创建语句
基本语法:show create database 数据库名字
选择数据库
为什么选择数据库?因为数据是存储到数据表,表存在数据库下。如果要操作数据,那么必须进入到对应的数据库才行。
基本语法:use 数据库名字;
修改数据库
修改数据库字符集(库选项):字符集和校对集
基本语法:alter database 数据库名字 charset = 字符集;
是否可以修改数据库名字?mysql5.5之前是可以修改的,5.5之后就不可以了。
一旦修改成功,那么对应的opt文件中就会有所改变。
【mysql8.0未发现opt文件,目前找不到原因,但通过show create datebase可查询到已经发生了改变】
删除数据库
基本语法:drop database 数据库名字;
删除虽简单,但是切记要做好安全操作,确保里面数据没有问题(重要)
删除数据库之后,对应的存储数据文件也被删除(opt文件也会被删除)。
数据表操作
创建数据表
普通创建表
基本语法:create table 表名(字段名 字段类型 [字段属性],字段名 字段类型[字段属性],........);
【表选项】
以上错误说明:表必须放到对应的数据库下,有两种方式可以将表挂入到指定的数据库下:
- 在数据表名字前面加上数据库名字,用“.”连接即可,数据库.数据表
- 在创建数据表之前先进入到某个具体的数据库即可,use 数据库名字;
表选项:与数据库选项类似
engine:存储引擎,mysql提供的具体存储数据的方式,默认有一个innodb(5.5以前默认是myisam)
charset:字符集,只对当前自己表有效(级别比数据库高)
collate:校对集
复制已有表结构
从已经存在的表复制一份(只复制结构:如果表中有数据不复制)
基本语法:create table 表名 like 表名;//只要使用数据库.表名,就可以在任何数据库下访问其他数据库的表名
显示数据表
每当一张数据表创建,那么就会在对应的数据库下创建一些文件(与存储引擎有关)
【mysql8下的文件已经变成了.IBD文件,经过百度:MySQL8.0以后没有.frm了,元数据都存在系统表空间里。】
【注】这个结构文件来自于innodb存储引擎,innodb存储引擎所有的文件都存储在外部的ibdata文件。
显示所有表
基本语法:show tables;
匹配显示表
基本语法:show tables like ‘匹配模式’;
显示表结构
本质含义:显示表中所包含的字段信息(名字,类型,属性等)
describe表名
desc表名
show columns from 表名
修改表结构
修改表名:rename table 旧表名 to 新表名
修改表选项:alter table 表名 表选项 【=】新值
新增字段:alter table 表名 add 【column】 新字段名 列类型 【列属性】 【位置 first/after 字段名】
修改字段名:alter table 表名 change 旧字段名 新字段名 字段类型 【列属性】【新位置】
修改字段类型(属性):alter table 表名 modify 字段名 新类型 【新属性】【新位置】
删除字段:alter table 表名 drop 字段名
删除表结构
基础语法:drop table 表名【,表名2.......】,可以同时删除多个数据表
数据基础操作
插入操作
本质含义:将数据以SQL的形式存储到指定的数据表(字段)里面
基本语法:向表中指定字段插入数据
insert into 表名【(字段列表)】values(对应字段列表);
注意:
- 后面(values中)对应的值列表只需要与前面的字段列表相对应即可(不一定与表结构完全相等)
- 字段列表并不一定非要有所有的表中字段
insert into 表名 values(对应表结构);:向表中所有字段插入数据
查询操作
查询表中全部数据:select * from 表名;
查询表中部分字段:select 字段列表 from 表名;//字段列表有多个,使用‘,’隔开
简单条件查询数据,select 字段列表/* from 表名 where 字段名 = 值;
删除操作
基本语法:delete from 表名 【where 条件】;若没有where条件,则默认删除整个表
更新操作
更新:将数据进行修改(通常是修改部分字段数据)
基本语法:update 表名 set 字段名 = 新值【where 条件】;//如果没有where条件,所有表中对应的那个字段都会被修改。