diff --git a/docs/MySQL/mysql是怎样使用的.md b/docs/MySQL/mysql是怎样使用的.md new file mode 100644 index 0000000..34c5fd2 --- /dev/null +++ b/docs/MySQL/mysql是怎样使用的.md @@ -0,0 +1,248 @@ +> 小孩子4919 + +# 第一章 MYSQL的安装启动和关闭 + +- windows上使用命令操作mysql + +```cmd +# MySQL80是服务名 +net start MySQL80 +net stop MySQL80 + +``` + +# 第二章 MYSQL初体验 + +## 2.1 客户端/服务器 + +- SQL(Structured Query Language): 结构化查询语言 + +## 2.2 bin目录下的可执行文件 + +- 采用命令行启动mysqld服务 + +```cmd +mysqld +# 指定数据库数据存储目录 +mysqld --datadir="C:/ProgramData/MySQL/Data" +# 查看运行日志 +mysqld --console +# 如果出现无法写入 可能需要使用管理员权限,因为数据放在了c盘 +``` + +- mysql客户端 + +```cmd +# -p何密码之间不能有空格 +# 在unix系统上,不适用u参数,会默认使用用户操作系统的账户进入mysql +mysql -hlocalhost -uroot -p123456 +mysql -h localhost -u root -p123456 +mysql --host=localhost --user=root --password=123456 +mysql -uroot -p123456 database_name +# 带上数据库名称进去默认是这个数据库 + +# 退出 +quit +exit +\q +``` +## 2.3 MYSQL语句注意事项 + +- 语句结束符 + +```bash +; +\g +\G +# \G会让一行中的每一列单行显示,对于列数多的情况下,看起来比较清晰 +``` + +- 语句可以换行 + +- 可以提交多个语句 + +- 使用\c放弃操作 + +- 没有大小写限制 + +- 一般用单引号表示字符串(双引号也可以但是,在ANSI_QUOTES模式中双引号有其他作用) + +# 第三章 MYSQL数据类型 + +## 3.1 数值类型 + +- TINYINT 2^8 1byte +- SMALLINT 2^16 2 +- MEDIUMINT 2^24 3 +- INT 2^32 4 +- BIGINT 2^64 8 +- FLOAT 2^32 4 +- DOUBLE 2^64 8 + +- 定点类型,将小数从小数点分开存储DECIMAL(M, D)MD分别表示小数左右数字十进制位数 + +## 3.2 日期时间类型 + +- YEAR 1byte 1901-2155 +- DATE 3Byte 1000-01-01~9999-12-31 +- TIME 3Byte -838:59:59~838:59:59 +- DATETIME 8Byte 1000-01-01 00:00:00~9999-12-31 23:59:59 +- TIMESTAMP 4Byte 1970-01-01 00:00:01~2038-01-19 03:14:07 +- DATETIME 5+sByte 1000-01-01 00:00:00[.000000]~9999-12-31 23:59:59[.000000] *mysql5.6.4后增加**后三个**对微秒支持,可拓展* +- TIMESTAMP 可根据时区变化,而且截止到2038 所以以后不用他 + +## 3.3 字符串类型 + +- 定长编码格式 ASCII 1Byte,UCS2 2Byte +- 变长编码格式 UTF-8 1-4Byte,GB2312 1-2Byte +- mysql的UTF-8是对多3byte,utf8mb4是1-4Byte + +| 类型 | 描述 | +|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| char(M) | 0-255的长度,定长,不够的字符用空格填充 | +| varchar(M) | 变长,0-255:字符长度L * 编码的所占字节数W + 1Byte(这里用来写位置吧)
大于255位置大小变成2Byte,一般最大**容量(不是长度)**为65535,但是mysql规定单行数据不能超过65535Byte,所以肯定是小于65535Byte的,utf8mb4一个字符4Byte,所以。。。65535/4 | +| **more TEXT** | 此长度不受mysql单行最大长度限制 | +| TINYTEXT | 2^8-1Byte + 1Byte地址 | +| TEXT | 2^16 + 2Byte地址 | +| MEDIUMTEXT | 2^24 + 3Byte地址 | +| LONGTEXT | 2^32 + 4Byte地址 | +| ENUM & SET | ENUM('str1', 'star2', 'str3') SET('str1', 'str2', 'str3') | +| | | + +## 3.4 二进制类型 + +- BIT存2进制位,最大64 +- BINARY和VARBINARY区别前者定长后者变长参考varchar +- BLOB有四种:TINY*,*,MEDIUM*, LONG*,一般不用数据库存文件,存文件系统的路径 + +# 第四章 数据库的基本操作 + +## 4.1 查看数据库 + +```sql +SHOW DATABASES; +``` + +## 4.2 创建数据库 + +```sql +CREATE DATABASE database_name; -- 如果表存在会报错 +/* 如果不存在再创建 */ +CREATE DATABASE IF NOT EXISTS database_name; +``` + +## 4.3 切换默认数据库 + +```sql +USE database_name; +-- 有些账户没有这个数据库的权限 切换会报错 +``` + +## 4.4 删库 + +```sql +DROP DATABASE database_name; +-- 如果数据库不存在会报错 +DROP DATABASE IF EXISTS database_name; +``` + +# 第五章 表操作 + +## 5.1 查数据库的表 + +```sql +SHOW TABLES FROM database_name; +-- 如果有默认的数据库 可以直接查看 +SHOW TABLES; +``` + +## 5.2 创建表 + +```sql +CREATE TABLE IF NOT EXISTS table_name ( + 列明1 数据类型 [列属性], + 列明2 数据类型 [列属性], +) COMMENT '这里是表的注释'; +``` + +## 5.3 删除表 + +```sql +DROP TABLE table_name; +DROP TABLE IF EXISTS table_name; +``` + +## 5.4 查看表结构 + +```sql +DESCRIBE table_name; +DESC table_name; +EXPLAIN table_name; +SHOW COLUMNS FROM table_name; +SHOW FIELDS FROM table_name; +-- 以上效果一样 +-- 查看建表语句 + SHOW CREATE TABLE table_name; +``` + +## 5.5 直接使用某个数据库中的某个表 + +```sql +SHOW CREATE TABLE database_name.tablename; +``` + +## 5.6 修改表 + +### 5.6.1 修改表名,移动表 + +```sql +-- 修改表明 +ALTER TABLE old_table_name RENAME TO new_table_name; +RENAME TABLE database_name.old_table_name TO database_name.new_table_name; +RENAME TABLE table_a TO table_a_new, table_b TO table_b_new, ...; +RENAME TABLE old_table_name TO new_table_name; +-- 移动表 +ALTER TABLE db_a.table_a RENAME TO db_b.table_a; +RENAME TABLE db_a.table_a TO db_b.table_a; +``` + +### 5.6.2 增加列 + +```sql +ALTER TABLE table_name ADD COLUMN 字段名 字段类型 [其他属性]; +-- 增加到第一列 +ALTER TABLE table_name ADD COLUMN 字段名 字段类型 [其他属性] FIRST; +-- 增加到指定列的后面 +ALTER TABLE table_name ADD COLUMN 字段名 字段类型 [其他属性] AFTER 已存在的列名; +``` + +### 5.6.3 删除列 + +```sql +ALTER TABLE 表名 DROP 列名; +``` + +### 5.6.4 修改列信息 + +```sql +ALTER TABLE 表名 MODIFY 列名 新数据类型 [新属性]; +ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型 [新属性]; +-- 修改列排序 +ALTER TABLE 表名 MODIFY 列名 列类型 列属性 FIRST; +ALTER TABLE 表名 MODIFY 列名 列类型 列属性 AFTER 指定列名; +``` + +### 5.6.5 多个修改操作 + +```sql +ALERT TABLE 表名 操作1, 操作2, ...; +``` + +# 第六章 列的属性 + + + + + +-- + diff --git a/docs/select.md b/docs/MySQL/select.md similarity index 100% rename from docs/select.md rename to docs/MySQL/select.md