MYSQL学习笔记
基础知识数据库的基础组成部分
- 数据库:用于存储数据的地方。
- 数据库管理系统:用于管理数据库的软件
- 数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充。
MySQL安装目录
/usr/bin 客户端和脚本
/usr/sbin mysqld服务器
/var/lib/mysql 日志文件和数据库
/usr/share/info 信息格式的手册
/usr/share/man UNIX帮助页
/usr/include/mysql 头文件
/usr/lib/mysql 库
/usr/share/mysgl 错误消息、字符集、示例配置文件等
登录MySQL
mysql -h hostname -u username -p
SQL语言
SQL语言的四个部分:
- 数据定义语言(DDL):DROP、CREATE、ALTER等语句。
- 数据操作语言(DML):INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
- 数据查询语言(DQL):SELECT语句。
- 数据控制语言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK等语句。
数据库操作
- 查看数据库:SHOW DATABASES;
- 创建数据库 CREATE DATABASES database_name;
- 删除数据库 DROP DATABASE database_name;
数据表操作
- 创建数据表:
CREATE TABLE <表名>
CREATE TABLE [IF NOT EXITS] <表名>
create [temporary] table [if not exists] tbl_name
(
字段名1 数据类型 [列级别约束条件] [默认值],
字段名2 数据类型 [列级别约束条件] [默认值],
......
[表级别约束条件]
)
数据类型描述 ![](https://i-blog.csdnimg.cn/blog_migrate/8582bee185891ac1b860e463d914bf2d.png)
约束
主键&联合主键
PRIMARY KEY 其一就是在定义列的时候在字段后定义主键 ,或者在定义完所有列之后指定主键。
字段名 数据类型 PARIMARY KEY 字段名;
CREATE TABLE <表名>
(
字段1 数据类型1,
字段2 数据类型2,
.......
PRIMARY KEY(字段1) PRIMARY KEY(字段1,字段2, ... ) 联合主键
);
外键(保证数据引用的完整性)
- 主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。
- 从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。
[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [,字段名2, ...]
REFERENCES <主表名> 主键列1 [,主键列2, ...]
非空约束
字段名 字段类型 NOT NULL;
自增
字段名 字段类型 AUTO_INCREMENT;
唯一约束
字段名 字段类型 UNIQUE;
默认约束
字段名 字段类型 DEFAULT <默认值>;
修改数据表表名
ALTER TABLE <旧表名> RENAME TO <新表名>;
修改字段的数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>;
修改字段名
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新字段类型>;
添加字段
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST|AFTER <已存在的字段名>];
删除字段
ALTER TABLE <表名> DROP <字段名>;`
修改字段的排列位置
ALTER TABLE <表名> MODIFY <字段> <数据类型> FIRST|AFTER [字段2];
更改表的存储引擎
ALTER TABLE <表名> ENGINE = <更改后的存储引擎名>;
删除表的外键约束
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>;
删除没有被关联的表
DROP TABLE [IF EXITS] 表1,表2,........ ;
删除被其他表关联的主表
需要先解除关联子表的外键约束,再删除该表。
ALTER TABLE <子表名> DROP FOREIGN KEY <外键约束名>;
DROP TABLE [IF EXITS] <主表名>;
MYSQL8数据库备份/恢复
备份所有数据库
mysqldump -u root -h host -p --all-databases > backdb.sql
备份多个数据库
mysqldump -u root -h host -p --databases dbname1, dbname2 > backdb.sql
备份指定的数据库
mysqldump -u root -h host -p dbname > backdb.sql
备份指定的数据库表
mysqldump -u root -h host -p dbname tbname1, tbname2 > backdb.sql
恢复数据库
mysql -u root -p dbname < dbname.sql