mysql基础使用
登录mysql
| 参数 |
说明 |
| -u |
用户名 示例为 root |
| -p |
密码 回车后输入 |
查看数据库
创建数据库
切换(打开)数据库
查看表
创建表
| 参数 |
说明 |
int |
整数 |
not null |
不能为空 |
auto_increment |
自增 |
primary key |
主键 |
varchar(20) |
字符串长度为20 |
id name age |
字段名 |
1 2 3 4 5
| create table user( id int not null auto_increment primary key, name varchar(20) not null, age int not null );
|
常见数据类型
mysql 官方文档 8.0
整数类型
| 类型 |
字节 |
范围 |
tinyint |
1 |
带符号范围-128 ~ 127;无符号0 ~ 255 |
smallint |
2 |
带符号范围-215 ~ 215-1;文字无符号0 ~ 216-1 |
mediumint |
3 |
带符号范围-223 ~ 223-1;无符号0 ~ 224-1 |
int |
4 |
带符号范围-231 ~ 231-1;无符号0 ~ 232-1 |
bigint |
8 |
带符号范围-263 ~ 263-1;无符号0 ~ 264-1 |
可选属性:
- M:显示宽度,取值范围在 0 ~ 255 之间, 显示宽度并不限制数值的大小,只是显示的宽度
- ZEROFILL:使用 0 填充, 默认是使用空格填充
- UNSIGNED:无符号,不能为负数,默认是有符号的,可以省略不写
1 2 3 4
| create table t1( id int(10) zerofill );
|
浮点数类型
| 类型 |
字节 |
范围 |
| float |
4 |
表示单精度浮点数 |
| double |
8 |
表示双精度浮点数 |
| decimal(M, D) |
8/4 |
表示定点数 |
参数说明:
小数:有符号 float(4,2) 表示的范围是-99.99 ~ 99.99,无符号的 float(4,2) 表示的范围是0 ~ 99.99,MySQL在保存值时会进行四舍五入
1 2 3 4 5 6
| create table t1( f1 float(5, 2), f2 double(5, 2), f3 real(5, 2) );
|
定点数类型
| 类型 |
字节 |
范围 |
| decimal |
8/4 |
依赖于 M 和 D 的值 |
参数说明:
小数:有符号 decimal(5, 2) 表示的范围是-999.99 ~ 999.99,无符号的 decimal(5, 2) 表示的范围是0 ~ 999.99, DECIMAL 的存储空间并不是固定的,由精度值M决定,总共占用的存储空间为M+2个字节。也就是说,在一些对精度要求不高的场景下,比起占用同样字节长度的定点数,浮点数表达的数值范围可以更大一些。定点数在MySQL内部是以 字符串 的形式进行存储,这就决定了它一定是精准的。当 DECIMAL 类型不指定精度和标度时,其默认为 decimal(10,0)。当数据的精度超出了定点数类型的精度范围时,则MySQL同样会进行四舍五入处理
1 2 3 4
| create table t1( f1 decimal(5, 2) );
|
字符串类型
char和varchar
| 类型 |
说明 |
| char(L) |
固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255 |
| varchar(L) |
可变长度字符串,L表示字符长度,最大长度65535个字节 |
| text(L) |
可变长度字符串,L表示字符长度,最大长度65535个字符 |
| mediumtext(L) |
可变长度字符串,L表示字符长度,最大长度16777215(224 - 1)个字符 |
| longtext |
可变长度字符串,最大长度4294967295(232 - 1)个字符 |
char:定长字符串,长度为0~255字节。在保存字符串时会用空格补齐长度,在检索时也会去掉尾部的空格,所以 char 类型存储的字符串末尾不能有空格
varchar:变长字符串,长度为0~65535字节。在保存字符串时不会用空格补齐长度,在检索时也不会去掉尾部的空格,所以 varchar 类型存储的字符串末尾可以有多个空格
1 2 3 4 5
| create table t1( f1 char(5), f2 varchar(5) );
|
说明:
关于varchar(len),len到底是多大,这个len值,和表的编码密切相关:
- varchar 长度可以指定为 0 到 65535 之间的值,但是有 1 - 3 个字节用于记录数据大小,所以说有效字节数是 65532
- 当我们的表的编码是
utf8 时,varchar(n) 的参数 n 最大值是 65532 / 3 = 21844 (因为utf中,一个字符占用3个字节)
- 如果编码是
gbk,varchar(n) 的参数 n 最大是 65532 / 2 = 32766(因为 gbk 中,一个字符占用2字节)
日期类型和时间类型
| 类型 |
字节 |
说明 |
| date |
3 |
日期,格式为 YYYY-MM-DD |
| time |
/ |
时间,格式为 HH:MM:SS |
| year |
/ |
年份,格式为 YYYY |
| datetime |
8 |
日期和时间,格式为 YYYY-MM-DD HH:MM:SS |
| timestamp |
4 |
时间戳,格式为 YYYY-MM-DD HH:MM:SS |
TIMESTAMP 类型通常占用4个字节的存储空间,而 DATETIME 类型则需要8个字节。
TIMESTAMP 类型的精度可以指定,范围从0到6,默认精度为6。
这意味着 TIMESTAMP 可以存储到微秒级别的时间戳,
而 DATETIME 类型则不能指定精度
enum和set类型
| 类型 |
说明 |
| enum(‘a’, ‘b’, ‘c’) |
枚举类型,只能从 ‘a’, ‘b’, ‘c’ 中选择一个 |
| set(‘a’, ‘b’, ‘c’) |
集合类型,可以选择 ‘a’, ‘b’, ‘c’ 中的任意一个或多个 |
ENUM
ENUM 类型也叫作枚举类型, ENUM 类型的取值范围需要在定义字段时进行指定。
- 设置字段值时,
ENUM 类型只允许从成员中选取单个值,不能一次选取多个值。
- 其所需要的存储空间由定义
ENUM 类型时指定的成员个数决定。
- 当
ENUM 类型包含 1 ~ 255 个成员时,需要 1 个字节的存储空间;
- 当
ENUM 类型包含256~65535个成员时,需要 2 个字节的存储空间;
ENUM 类型的成员个数的上限为 65535 个
SET
SET 表示一个字符串对象,可以包含0个或多个成员,但成员个数的上限为 64 。
- 设置字段值时,可以取取值范围内的 0 个或多个值。
- 当
SET 类型包含的成员个数不同时,其所占用的存储空间也是不同的。
SET 类型在存储数据时成员个数越多,其占用的存储空间越大。
- 注意:
SET 类型在选取成员时,可以一次选择多个成员,这一点与 ENUM 类型不同
插入数据
| 参数 |
说明 |
| user |
表名 |
| name |
字段名 |
| age |
字段名 |
| values |
值 |
| (‘张三’, 18) |
值 |
values 后面括号中的值要和字段名一一对应
1
| insert into user(name, age) values('张三', 18);
|
查询数据
更新数据
| 参数 |
说明 |
user |
表名 |
name |
字段名 |
李四 |
字段值 |
where |
条件(修改满足条件的记录) |
1
| update user set name='李四' where id=1;
|
删除数据
| 参数 |
说明 |
user |
表名 |
where |
条件(删除满足条件的记录) |
1
| delete from user where id=1;
|
删除表
删除数据库
退出mysql