数值类型
整型
作用:可以用于存储用户的年龄、游戏的等级等,只能存整数。
分类:tinyint smallint mediumint int bigint这四类,并不是
有符号 :
有正负数
无符号 :
没有负数 类型后面使用unsigned和zerofill修饰符
tinyint(最短整型,后面(+宽度,默认存在为4,显示宽度) 最多存储1个字节或者8个bit
smallint 2个字节 后面(+宽度,默认存在为6,显示宽度)
mediumint 3个字节 后面(+宽度,默认存在为9,显示宽度)
int 4个字节 后面(+宽度,默认存在为11,显示宽度)
bigint 5个字节 后面(+宽度,默认存在为20,显示宽度)
将有符号变成无符号:
unsigned:
mysql> create table t6(id bigint(2) unsigned);
zerofill:
mysql> create table t2 (
-> id1 int zerofill,
-> id2 int(6)-显示宽度 zerofill
-> );
存储数据大小范围:
1个字节 2个字节 3个字节 4个字节 8个字节
8bit 16 24 32 64
11111111
无符号:范围运算公式 0到(2^n)-1
比如:
tinyint:0到255
bigint: 0到2^64-1
有符号:范围运算公式 -2^(n-1)到2^(n-1)-1
比如:
tinyint:-128到127
显示宽度:
类型后面小括号内的数字是显示宽度,不能限制插入数值的大小
比如:bigint(2) 2是显示宽度
浮点型 :单精度float(4)和双精度double
作用:用于存储用户的身高、体重、薪水等
float(5.3) 5宽度 3精度
宽度不算小数点
mysql> create table t12(id float(6,2));
double(5,3)
0~24:单精度float,从第7位有效位,进行四舍五入存储(实际操作是5舍6入)
25~30:双精度double,从第16位有效位,进行四舍五入存储 (实际操作是5舍6入)
定点型
定点数在MySQL内部以字符串形式存储,比浮点数更精确,适合用来表示货币等精度高的数据。
decimal(5,3)
位类型
BIT(M)可以用来存放多位二进制数,M范围从1~64,如果不写默认为1位
对于位字段可以使用函数读取:
bin()显示为二进制
hex()显示为十六进制
mysql> create table test_bit (id bit(4)); //4bit能存储的最大值为15
mysql> desc test_bit;
+-------+--------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+-------+
| id | bit(4) | YES | | NULL | |
+-------+--------+------+-----+---------+-------+
mysql> insert into test_bit values(4);
mysql> select * from test_bit;
+------+
| id |
+------+
| |
+------+
mysql> select bin(id),hex(id) from test_bit;
+---------+---------+
| bin(id) | hex(id) |
+---------+---------+
| 100 | 4 |
+---------+---------+
1 row in set (0.00 sec)
库操作
创建库:create database 库名
进入/切换库:use 库名
查看所在库:select database();
查看所有库:show databases;
系统数据库
information_schema: 虚拟库,主要存储了系统中的一些数据库对象的信息,例如用户表信息、列信息、权限信息、字符信息等
performance_schema和sys: 主要存储数据库服务器的性能参数
mysql: 授权库,主要存储系统用户的权限信息
表操作
创建表 create table +表名;
语法:
create table 表名(
字段名1 类型[(宽度) 约束条件], 多个字段用逗号隔开
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
)[存储引擎 字符集];
==在同一张表中,字段名是不能相同
==宽度和约束条件可选
==字段名和类型是必须的
查看表 show tables; show create table class;详细查看
查看表状态 show table status like '+表名' \G
查看表结构 desc class;
查看表的创建过程 show create table t1
查看表内容
使用\G结尾,按记录显示,每条记录显示一次
修改表
修改表名称
rename table 原名称 to 新名称;
alter table 原名称 rename 新名称;
添加字段 alter table class add gender enum 枚举
删除表 drop table class
删除表字段alter table cless drop ename;
修改字段
modify : 不可以改名
alter table info modify name char(20) after age;
change :可以改名
alter table info change name ename char(20) ;
添加记录:
insert into info(ename,age) values("tom",24);
insert into info(ename,age) values("tom",24),("jim",25),("alan",30);
insert into info set name=("zy"),age=18; 添加单条记录
更新:
更新记录:update info set grade=4 where ename="alan";
查询 select * from class
删除记录
delete from info where id=170301;
delete from info ; 将表内所用记录删除
删除表 drop table class;
删除库 drop database +库名;
命令行操作数据库(脚本)
# mysql -u root -p1 -e "use db2;create table t3(name char(20),pass char(100));insert into t3 set name='hw',pass=password('123')";