MySQL 数据库
MySQL 数据库是一种C\S
结构的软件,即分为:客户端和服务端。
若想访问服务器,则必须通过客户端;服务器应该一直运行,客户端则在需要使用的时候运行。
交互方式
客户端连接认证,即连接服务器,认证身份
mysql.exe -hPup
-h
,主机地址,本地为localhost
,远程为IP
地址-P
,端口号,用来找软件-u
,用户名-p
,密码
发送 SQL 指令;
- 服务器接受 SQL 指令,然后处理 SQL 指令并返回操作结果;
- 客户端接受结果并显示结果;
- 由于服务器并发限制,需要断开连接(三种指令,分别为:
exit
、quit
和\q
),释放资源。
服务器对象
由于没办法完全了解服务器内部的结构,因此只能粗略的分析数据库服务器的内部结构。
一般来说,将 MySQL 数据库服务器的内部对象分为四层,分别为:数据管理系统(DBMS)–> 数据库(DB)–> 表(Table)–> 字段(Filed).
MySQL 用户设置
如果你需要添加 MySQL 用户,你只需要在 mysql 数据库中的 user 表添加新用户即可。
添加用户的方法为通过SQL的 GRANT 命令,以下命令会给指定数据库TUTORIALS添加用户 zara ,密码为 zara123 。root@host# mysql -u root -p Enter password:******* mysql> use mysql; Database changed mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP -> ON TUTORIALS.* -> TO 'zara'@'localhost' -> IDENTIFIED BY 'zara123';
以上命令会在mysql数据库中的user表创建一条用户信息记录。
注意: MySQL 的SQL语句以分号 (;) 作为结束标识。
SQL 基本操作
基本操作:CURD,即增删改查。
根据操作对象的不同,咱们可以将 SQL 的基本操作分为三类,分别为:库操作、表(字段)操作和数据操作。
库操作
1 新增数据库
基本语法:create database + 数据库名称 + [库选项];
其中,库选项是用来约束数据库的,为可选项(有默认值),共有两种,分别为:
- 字符集设定:
charset/ character set
+ 具体字符集,用来表示数据存储的编码格式,常用的字符集包括GBK
和UTF8
等。 - 校对集设定:
collate
+ 具体校对集,表示数据比较的规则,其依赖字符集。
示例:create database TBL_ERROR_CODE charset utf8;
其中,数据库的名字不能用关键字(已经被占用的字符,例如 update 和 insert 等)或者保留字(将来可能会用的,例如 access 和 cast 等)。
如果还想使用中文作为数据库的名称,那就得保证数据库能够识别中文(强烈建议不要用中文命名数据库的名称),例如:
-- 设置中文名称的方法,其中 gbk 为当前数据库的默认字符集
set names gbk;
create database 北京 charset gbk;
- 1
- 2
- 3
2 查询数据库
查看全部 –> 基本语法:show databases;
查看部分(模糊查询)–> 基本语法:show databases like 'pattern';
其中,pattern
是匹配模式,有两种,分别为:
%
:表示匹配多个字符;_
:表示匹配单个字符。
此外,在匹配含有下划线_
的数据库名称的时候,需要在下划线前面加上反斜线\_
进行转义操作。
示例:show databases like 'TBL%';
表示匹配所有TBL
开头的数据库。
查看数据库的创建语句 –> 基本语法:show create database + 数据库名称;
在这里,查看的结果有可能与咱们书写的 SQL 语句不同,这是因为数据库在执行 SQL 语句之前会优化 SQL,系统保存的是优化后的结果。
3 更新数据库
在这里,需要注意:数据库的名字不可以修改。
数据库的修改仅限库选项,即字符集和校对集(校对集依赖字符集)。
基本语法:alter database + 数据库名称 + [库选项];
charset/character set[=] 字符集;
collate[=] 校对集;
示例:alter database TBL_ERROR_CODE charset gbk;
表示修改此数据库的字符集为gbk
.
4 删除数据库
基本语法:drop database + 数据库名称;
在这里,需要注意:在删除数据库之前,应该先进行备份操作,因为删除为不可逆操作,所以不要随意删除数据库。
表操作
1 新增表
基本语法:
create table [if not exists] + 表名(
字段名称 数据类型,
……
字段名称 数据类型 /* 最后后一行,不需要加逗号 */
)[表选项];
- 1
- 2
- 3
- 4
- 5
其中,if not exists
表示
- 如果表名不存在,就执行创建代码;如果表名存在,则不执行创建代码。
表选项则是用来控制表的表现形式的,共有三种,分别为:
- 字符集设定:
charset/ character set
+ 具体字符集,用来表示数据存储的编码格式,常用的字符集包括GBK
和UTF8
等。 - 校对集设定:
collate
+ 具体校对集,表示数据比较的规则,其依赖字符集。 - 存储引擎:
engine
+具体存储引擎,默认为InnoDB
,常用的还有MyISAM
.
由于任何表都归属于某个数据库,因此在创建表的时候,都必须先指定具体的数据库。在这里,指定数据库的方式有两种,分别为:
- 第 1 种:显式的指定表所属的数据库,示例
create table if not exists test.student(
name varchar(10),
age int, /* 整型不需要指定具体的长度 */
grade varchar(10) /* 最后后一行,不需要加逗号 */
)charset utf8;
- 1
- 2
- 3
- 4
- 5
- 第 2 种:隐式的指定表所属的数据库,示例
use test; /* use + 数据库名称,表示切换到指定的数据库,这句命令其实不加分号也可以,但不建议这么做 */
create table if not exists student(
name varchar(10),
age int, /* 整型不需要指定具体的长度 */
grade varchar(10) /* 最后后一行,不需要加逗号 */
)charset utf8;
- 1
- 2
- 3
- 4
- 5
- 6
2 查询表
查看全部 –> 基本语法:show tables;
查看部分(模糊查询)–> 基本语法:show tables like 'pattern';
其中,pattern
是匹配模式,有两种,分别为:
%
:表示匹配多个字符;_
:表示匹配单个字符。
此外,在匹配含有下划线_
的表名的时候,需要在下划线前面加上反斜线\_
进行转义操作。
示例:show tables like '%t';
表示匹配所有以t
结尾的表。
查看表的创建语句 –> 基本语法:show create table + 表名;
在这里,咱们也可以用\g
和\G
代替上述语句中的;
分号,其中\g
等价于分号,\G
则在等价于分号的同时,将查的表结构旋转90
度,变成纵向结构。
查看表中的字段信息 –> 基本语法:desc/describe/show columns from + 表名;
3 更新表
在这里,需要注意:表的修改,分为修改表本身和修改表中的字段。
第 1 类:修改表本身
- 修改表名,基本语法:
rename table 旧表名 to 新表名;
- 修改表选项,基本语法:
alter table + 表名 + 表选项[=] + 值;
- 修改表名,基本语法:
第 2 类:修改表中的字段,新增、修改、重命名和删除
- 新增字段,基本语法:
alter table + 表名 + add + [column] + 字段名 + 数据类型 + [列属性][位置];
- 其中,位置表示此字段存储的位置,分为
first(第一个位置)
和after + 字段名(指定的字段后,默认为最后一个位置)
. - 示例:
alter table student add column id int first;
- 其中,位置表示此字段存储的位置,分为
- 修改字段,基本语法:
alter table + 表名 + modify + 字段名 + 数据类型 + [列属性][位置];
- 其中,位置表示此字段存储的位置,分为
first(第一个位置)
和after + 字段名(指定的字段后,默认为最后一个位置)
. - 示例:
alter table student modify name char(10) after id;
- 其中,位置表示此字段存储的位置,分为
- 重命名字段,基本语法:
alter table + 表名 + change + 旧字段名 + 新字段名 + 数据类型 + [列属性][位置];
- 其中,位置表示此字段存储的位置,分为
first(第一个位置)
和after + 字段名(指定的字段后,默认为最后一个位置)
. - 示例:
alter table student change grade class varchar(10);
- 其中,位置表示此字段存储的位置,分为
- 删除字段,基本语法:
alter table + 表名 + drop+ 字段名;
- 示例:
alter table student drop age;
- 注意:如果表中已经存在数据,那么删除该字段会清空该字段的所有数据,而且不可逆,慎用。
- 示例:
- 新增字段,基本语法:
4 删除表
基本语法:
/** 可以一次删除多张表 */
drop table + 表1, 表2 ... ;
- 1
- 2
在这里,需要注意:此删除为不可逆操作,希望大家谨慎使用。