3.mysql数据库
3.4 表和数据的基础操作
3.4.1. 创建表 create
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);
注意:
(1)在同一张表中,字段名是不能相同
(2)宽度和约束条件可选
(3)字段名和类型是必须的
3.4.2. 插入数据 insert into
(1)写入一条数据
(2)写入多条数据
(3)指定字段写入
3.4.3. 查数据 select
select 字段名 from 表 where 判断条件
3.4.4. 查看表结构 decs/show create table
(1)desc 表名;可以查看字段、类型、长度和部分约束
(2)show create table 表名; 可以查看字段、类型、长度、存储引擎、编码、约束。
3.4.5. 删除数据 delete
mysql> delete from 表名 where 判断条件;
没有条件判断,会删除表中所有数据(慎用)
3.4.6. 删除表 drop
mysql> drop table 表名;
使用if判断,表存在则删除
使用if判断,表不存在删除时有告警,但不报错
3.5 数据类型
3.5.1. 数值类型
MySQL支持所有标准SQL数值数据类型。
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。
关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。
MySQL支持的整数类型有TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。
对于小数的表示,MYSQL分为两种方式:浮点数和定点数。浮点数包括float(单精度)和double(双精度),而定点数只有decimal一种,在mysql中以字符串的形式存放,比浮点数更精确,适合用来表示货币等精度高的数据。
1)整数
建数据库:
建表:
建表时,数据类型默认是无符号的,需要定义无符号使用unsigned。
表结构中int(11)中的11表示:最多可以显示11位数据,例如:-2147483648
tinyint(3) unsigned中的3表示:没有符号的tinyint类型最多可以显示3位数据,例如:255
添加正常数据:
unsigned约束数据,加负数,出现警告。数据添加成功,但添加的数据是0
tinyint数据类型,添加数据超过255。添加成功,但添加的数据是255.
int类型在数据结构中显示11位,添加11位数据,添加成功,实际添加2147483647
2)小数
float(255,30):表示数据类型是float最大长度是255,小数点后面最多30位。
double(255,30):表示数据类型是double最大长度是255,小数点后面最多30位。
通常float已经足够使用
建表:
因数据类型限制,多出的数据四舍五入处理
float默认显示5位长度,double默认显示15位长度
3)DECIMAL数据类型(了解)
decimal数据类型最多可以显示30位小数,默认显示整数
注意:通常int和float已经足够使用。
3.5.2. 字符串类型
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
CHAR列的长度固定为创建表是声明的长度,范围(0-255);而VARCHAR的值是可变长字符串范围(0-65535)。CHAR存取速度快,VARCHAR节省空间。
建表:
varchar(5):约定长度5是数据的最大存储长度。
添加数据
char存储数据时,会去掉数据末尾的空格。varchar会保留数据末尾的空格
使用Navicat查看数据库:
3.5.3. 日期和时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
TIMESTAMP类型有专有的自动更新特性,
1)建表
2)添加数据
(1)now():当前时间
(2)timestamp数据类型没有赋值时,自动填充当前时间。
修改其它数据时,timestamp数据类型自动更新为当前时间
让datetime、date和time拥有不能为空,自动填充,自动更新的功能。可以给他们赋予和timestamp一样的约束。
NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
(3)插入数据时,日期类型可以使用两种格式:带引号和不带引号
3)查询时,日期类型可以使用两种格式:带引号和不带引号。
3.5.4. 枚举型:enum和set类型
ENUM中文名称叫枚举类型,它的值范围需要在创建表时通过枚举方式显示。ENUM只允许从值集合中选取单个值,而不能一次取多个值。例如:性别、国籍
SET和ENUM非常相似,也是一个字符串对象,里面可以包含0-64个成员。根据成员的不同,存储上也有所不同。set类型可以允许值集合中任意选择1或多个元素进行组合。对超出范围的内容将不允许注入,而对重复的值将进行自动去重。例如:兴趣爱好、常用功能等。
1)enum类型
建表:
添加数据:
2)set类型
建表:
添加数据:
注意:set类型添加数据时,数据组合用引号括起来,各个数据直接用逗号分开。