【MySQL】MySQL基本操作 MySQL基本操作 库操作 表操作 数据操作

【MySQL】MySQL基本操作
MySQL基本操作
库操作
表操作
数据操作

数据的基本操作:CRUD(Create、Retrieve、Update、Delete #翻译:增 查 更新(改) 删,也叫增删查改)
根据操作的对象进行分类,SQL基本操作可分为:
库操作,表操作(修改字段,外键,增删表格等),数据操作。

库操作

新增数据库
基本语法:
create database 数据库名 [库选项];
库选项:用来约束数据库,分为两个选项
字符集设定:charset/character set 具体字符集(数据存储的编码格式) ---常用字符集:GBK 和 UTF8
校对集设定:collate 具体校对集(数据的比较规则)
注意:数据库名不能为关键字或者保留字。

删除数据库
基本语法:
drop database 数据库名;

执行drop命令DBMS发生了什么动作
1.数据库系统中删除了指定的数据库
2.在对应数据库存储文件夹内,数据库名字对应的文件夹被级联删除(子目录和文件也被删除了)

查看所有数据库:
基本语法:
show databases;

查看指定模式的数据库,模糊查询:
基本语法:
show databases like 'pattern';

'pattern'是匹配模式:
%:表示匹配多个字符
_ :表示匹配单个字符
show databases like 'info_%';
show databases like 'info\_%';
是不一样的
注意:如果要匹配下划线_要转义 '\_'

查看数据库创建语句:
基本语法:
show create database 数据库名;

更新数据库:
仅限与修改数据库字符集或者校对集,高版本mysql不支持修改数据库名
基本语法:
alter database 数据库名 [库选项];
库选项:用来约束数据库,分为两个选项
charset/character set [=] 字符集
collate [=] 校对集

表操作

新增数据表
显式指定表所属数据库,将表创建在指定数据库下
create table [if not exists] 数据库.表名(
......
)

隐式指定数据库,需要先使用某个数据库环境,建表语句自动将表创建在指定数据库下
use mydatabase;
create table [if not exists] 表名(
......

基本语法:
create table [if not exists] 表名(
字段名 数据类型 [其他选项],
字段名 数据类型 [其他选项],
.......
字段名 数据类型 [其他选项]
) [表选项];
表选项:用来控制表的属性
字符集设定:charset/character set 具体字符集(数据存储的编码格式) ---常用字符集:GBK 和 UTF8
校对集设定:collate 具体校对集(数据的比较规则)
存储引擎设定:engine 具体引擎 (默认使用innodb, 也有 myisam)

执行建表SQL指令DBMS发生了什么动作
1.对应数据库系统中将创建一张指定的数据表
2.在数据库对于文件夹下,会生成对应表的结构文件(与存储引擎有关的xxxx表名.frm等文件或 xxxx表名.idb文件)


删除数据表
基本语法:
删除一个或多个数据表:drop 表名1,表名2,......表名n;

删除数据表的指令执行后发生了什么操作?
1.在指定数据库中,删除了指定的表。
2.在数据库对应的文件夹下,表对应的文件(与存储引擎有关)也会被删除。

查看数据表
基本语法:
查看所有数据表:show tables;
查看特定模式名称的数据表:show tables like 'pattern';
查看建表语句:show create table 表名[g | G];
查看表结构语句(查看表中的字段信息):
desc/describe 表名;
show columns from 表名;
查看结果一样。

修改数据表
基本语法:
重命名表格:rename table 旧表名 to 新表名;
修改表选项:alter table 表名 表选项 [=] 值;
修改表字符集:alter table charset GBK;
修改存储引擎:alter table engine myisam;

修改数据表字段:
基本语法:
新增字段: alter table 表名 add [column] 字段名 数据类型 [列属性] [位置];
位置:新增字段可以存放在表中的任意位置
first:第一个位置
after:字段名:在哪个字段之后新增字,
不用位置命令,默认是在表最后新增一个字段。

修改字段: alter table 表名 modify 字段名 数据类型 [属性] [位置];
属性:是否为空;

修改字段名:alter table 表名 change 旧字段名 新字段名 数据类型 [列属性] [位置];

删除字段:alter table 表名 drop 字段名;

数据操作

新增数据:
基本语法:
方法一:给全表字段插入数据,不需要指定字段列表,
但要求插入某条记录各个数据的类型与表中设计字段的类型顺序一致。
凡是非数值的数据,都建议用单引号包括。
同时插入多行记录。
insert into 表名 values('字段1值' , '字段值' , ......) [,('字段1值' , '字段值' , ......) ,......];

插入多单记录。
insert into 表名 value('字段1值' , '字段值' , ......);

方法二:给表部分字段插入数据,需要指定字段列表,
但要求插入某条记录各个数据的类型与表中设计字段的类型顺序一致。
凡是非数值的数据,都建议用单引号包括。
同时插入多行记录。
insert into 表名(字段1,字段2,......,字段n) values('字段1值' , '字段值' , ......) [,('字段1值' , '字段值' , ......) ,......];

查询数据:
基本语法:
查询表格所有记录:select * from 表名 [where 条件];
查询表格特定字段的记录:select 字段1 [,字段2,......,字段n] from 表名 [where 条件];

更新数据:
基本语法:
更新某行/特定条件多行的某个字段数据:update 表名 set 字段 = 值 [where 条件];
更新某行/特定条件多行的多个字段数据:update 表名 set 字段1 = 值1 [,字段2 = 值2,......,字段n = 值n] [where 条件];

疑惑 :13:53:27 update student set sex = 'male' where name = 'John' Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 0.000 sec
update where条件 用得是主键精确查找。

删除数据:
基本语法:
删除表中所有数据项:delete from 表名;
删除表中特定的数据项:delete from 表名 [where 条件];