目录
[(1) 语法](#(1) 语法)
[(4) 重命名某列](#(4) 重命名某列)
在前面我们已经学习完了我们的数据结构,而今天我们就要开始我们MySQL的学习了,在我们进行了解之前大家记得安装我们MySQL,而我们这里要将的MySQL版本是8.0x版本的大版本,如果没有安装大家可以去安装以下
MySQL安装地址https://dev.mysql.com/downloads/installer/
一、链接服务器
如果大家已经安装完MySQL了,接下来我们要在我们电脑自带的命令行客户端上使用我们的MySQL,我们就要链接我们的服务器,而我们链接服务器的语句为
mysql -uroot -p
之后我们再输入我们安装MySQL时创建的密码,这样我们就可以使用我们的MySQL了。

好了这样一切的准备工序已经完成了,可以正式开始我们今天的学习:库的操作
二、库的操作
1、查看数据库
sql
show databases;
databases是复数形式
大小写不敏感

2、创建数据库
(1)语法
sql
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_option] ...
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
| ENCRYPTION [=] {'Y' | 'N'}
}
注意:
- 大写部分表示关键字。
- db_name:表示自定义的数据库名。
- {} 大插号表示必须选。
- | 表示任选其中一个。
- [] 中括号表示是可选项。
- CHARACTER SET:指定数据库采用的字符集编码。
- COLLATE:指定数据库字符集的校验规则。
- ENCRYPTION:数据库是否加密。
(2)创建一个简单的数据库db_test

这里告诉我们创建成功了,那么我们来查询一下数据库看是否真的创建了

我们发现他的确创建了一个db_test的数据库。
接下了我们在来创建一个数据库db_test_1,这回我们使用我们上述语法中'[]'里的一条语句IF NOT EXISTS,这个语句是用来判断我们要创建的数据库是否存在的,不存在就会创建,如果存在就不会创建并且给我们警告。
比如我们还要创建db_test,他就会给我们一条警告

而这条警告是什么我们可以利用 show warnings;进行查询

他会告诉我们不能创建db_test数据库因为他已经存在了 。而我们创建db_test_1就没有问题

(3)创建指定字符集编码的数据库
**在上面我们发现创建数据库时还可以利用****CHARACTER SET:指定数据库采用的字符集编码,**那么接下来我们就创建这样的一个库db_test_2;


(4)创建指定字符集的校验(排序)规则的数据库
在上面我们发现创建数据库时还可以利用COLLATE:指定数据库字符集的校验(排序)规则,那么接下来我们就创建这样的一个库db_test_3;


而最后这种完整形式的创建数据库的语法,就是我们推荐的创建形式
3、查看创建语句
sql
show create database db_name;
而这里我们也可以看到我们的创建规则是否创建成功了

为了准确我们再创建一个数据库改变他的 字符集的校验规则

当然这些规则肯定是不能随便进行修改的,我们是可以查询有什么样的规则的
查看数据库支持的字符集编码:show charset;
查看数据库支持的校检(排序)规则:show collation;
当然数据库在我们不进行指定的时候他也是有系统默认字符集和排序规则
查看系统默认字符集

查看系统默认排序规则

4、修改数据库
(1) 语法
sql
ALTER {DATABASE | SCHEMA} [db_name]
alter_option ...
alter_option: {
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
| [DEFAULT] ENCRYPTION [=] {'Y' | 'N'}
| READ ONLY [=] {DEFAULT | 0 | 1}
}
将db_test_4的数据库字符集改成gbk

5、删除数据库
(1)语法
sql
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
删除db_test_4数据库


三、数据类型
1、数据值类型
|---------------------------|-----------|------------------------------------------------------------------------------------------------------------------------|
| 类型 | 大小 | 说明 |
| BIT[(M)] | 默认bit | 位值类型。M表示每个值的位数,取值范围为1~64。如果省略M,则默认为1 |
| TINYINT[(M)] | 1byte | 取值范围 -2^7~2^7-1,无符号取值范围 2^8-1 |
| BooL | lbyte | TINYINT(1)的同义词。值为零被认为是假,非零值被认为是true |
| SMALLINT[(M)] | 2byte | 取值范围 -2^15 ~2^15-1,无符号取值范围 2^16-1。 |
| MEDIUMINT[( M)] | 3byte | 取值范围 -2^23~2^23-1,无符号取值范围 2^24-1 |
| INTE(M)] | 4byte | 取值范围 -2^31~2^31-1,无符号取值范围 2^32-1 |
| INTEGER[(M)] | 4byte | INT[(M)]的同义词 |
| BIGINT[(M)] | 8byte | 取值范围-2^63~2^63-1,无符号取值范围2^64-1 |
| FLOAT[(M,D)] | 4byte | 单精度浮点型,M是总位数,D是小数点后面的位数,大约可以精确到小数点后7位 |
| DOUBLE[(M,D )] | 8byte | 双精度浮点型,M是总位数,D是小数点后面的位数,大约可以精确到小数点后15位。 |
| DECIMAL[(M[ ,D])] | 动态 | 不存在精度损失,M是总位数,D是小数点后的位数。DECIMAL的最大位数(M)65,最大小数位数(D)为30。如果省略M,则默认为10,如果省略D,则默认为0。M中不计算小数点和负数的-号,如果D为0,则值没有小数点和小数部分。 |
2、字符串类型
|----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------|
| 类型 | 说明 |
| CHAR[(M)] | 固定长度字符串,M表示长度,以字符为单位,取值范围0~255,M 省略则长度为 1 |
| VARCHAR(M) | 可变长度字符串,M表示字符最大长度,的范围0~65535,有效字符个数取决于实际字符数和使用的字符集 |
| TINYTEXT | 小文本类型,最大长度为 255(2^8-1)个字符,有效字符个数取决于使用的字符集 |
| TEXTL(M)] | 文本类型,最大长度为 65535(2^16-1)个字符,有效字符个数取决于使用的字符集 |
| MEDIUMTEXT | 中文本类型,最大长度为 16,777,215(2^24-1)个字符,有效字符个数取决于使用的字符集 |
| LONGTEXT | 大文本类型,最大长度为4,294,967,295即4GB(2^32-1)个字符,有效字符个数取决于使用的字符集 |
| BINARY[(M)] | 固定长度二进制字节,于CHAR类似,但存储的是二进制字节而不是字符串。M表示长度,以字节为单位,取值范围0~255,M省略则长度为1 |
| VARBINARY(M) | 可变长度二进制字节,于VARCHAR类似,但存储的是二进制字节而不是字符串。M 表示长度,以字节为单位 |
| TINYBLOB | 小二进制字节类型,最大长度为255(2^8-1)个字节 |
| BLOB[(M)] | 二进制字节类型,最大长度为65535(2^16-1)个字节 |
| MEDIUMBLOB | 中二进制字节类型,最大长度为16,777,215(2^24-1)个字节 |
| LONGBLOB | 大二进制字节类型,最大长度为4,294,967,295即4GB(2^8-1)个字节 |
| ENUM('valuel','valu e2',···) | 1、枚举 2、从值列表'value1','value2'或·'(空字符串)和 NULL中选一个值 3、最多可以有 65,535 个不同的元素 5、单个元素的最大长度是M<=255或(Mxw)<=1020,其中M是元素字符长度,w 是字符集中字符所需的最大字节数 |
| SET('value1','value2',···) | 1、集合 2、从值列表'value1','value2'中选零个或多个值 3、最多64个元素 4、单个元素的最大长度是M<=255或(Mxw)<=1020,其中M是元素字符长度,w 是字符集中字符所需的最大字节数 5、SET值在内部表示为整数 |
3、日期类型
|------------------------|-----------|-----------------------------------------------------------------------------------------------------------------------------------|-------------------------|
| 类型 | 大小 | 说明 | 0值 |
| TIMESTAMP[(fsp)] | 4byte | 1、时间戳类型 2、支持范围 1970-01-01 00:00:01.000000)~20388-01-1903:14:07.499999 | 0000-00-0000:00:00 |
| DATETIME[(fsp)] | 8byte | 1、日期类型和时间类型的组合 2、支持范围 1000-01-01 00:00:00.000000~9999-12- 3123:59:59.499999 3、显示格式为 YYYY-MM-DD hh:mm:ss[.fraction] | 0000-00-00 00:00:00 |
| DATE | 3byte | 1、日期类型 2、支持范围 1000-01-01~9999-12-31 3、显示格式为 YYYY-MM-DD | 0000-00-00 |
| TIME[( fsp)] | 3byte | 1、时间类型 2、支持范围-838:59:59.000000~838:59:59.000000 3、显示格式为 hh:mm:ss[.fraction] | 00:00:00 |
| YEAR[(4)] | 1byte | 1、4位格式的年份 2、支持范围 1901~2155 3、显示格式为 YYYY | 0 |
对于这么多类型其实我们主要记住加红的即可
四、表的操作
在对表进行操作之前我们要选择一个数据库,在这个数据库中进行表的创建和各种操作

1、查看表
查看当前数据库中的所有表
sql
show tables;
没有表显示空结果集

2、创建表
(1)语法
sql
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name(
field datatype [约束] [comment '注解内容']
[, field datatype [约束] [comment '注解内容']]...
) [engine 存储引擎] [character set 字符集] [collate 排序规则];
- TEMPORARY:表示创建的是一个临时表
- field:列名
- datatype:数据类型
- comment:对列的描述或说明
- engine:存储引擎,不指定则使用默认存储引擎
- characterset:字符集,不指定则使用默认字符集
- collate:排序规则,不指定则使用默认排序规则


3、查看表结构
sql
desc 表名;

- Field:表中的列名
- Type:列的数据类型
- Null:该列的值是否允许为Null
- Key:该列的索引类型
- Default:该列的默认值
- Extra:扩展信息
4、修改表
(1)语法
sql
ALTER TABLE tbl_name [alter_option [, alter_option] ...];
alter_option: {
table_options
| ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name]
| MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| RENAME COLUMN old_col_name TO new_col_name
| RENAME [TO | AS] new_tbl_name
- tbl_name:要修改的表名
- ADD:向表中添加列
- MODIFY:修改表中现有的列
- DROP:删除表中现有的列
- RENAME COLUMN:重命名表中现有的列
- RENAME[TO|AS]new_tbl_name:重命名当前的表
(2)添加一列
FIRST : 新增的列添加到表的第一列
AFTER : 新增的列添加到某列之后

(3)修改某列的长度

(4) 重命名某列

(5)删除某个字段

(6)修改表名

5、删除表
(1)语法
sql
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...
TEMPORARY:表示临时表
tbl_name:将要删除的表名

好了,今天的分享就到这里了还请大家多多关注,我们下一篇见!