数据库--mysql(3)-- 数据操作初步&数据类型

五、数据操作初步

数据都是存储在数据表中。

数据的基本操作有4种:

增( 插入 inset )

删( 删除delete )

改( 修改update)

查( 查询select )

即所谓的CRUD操作:

Create ( 创建 )

Retieve ( 获取 )

Update ( 更新 )

Delete ( 删除 )

5.1、插入数据

语句形式:

insert  into 表名(字段名1,字段名2, ... ) values (数据 1,数据2,... ) ;

说明:

① 字段名和数据是“一一对应”的,包括:数量一致,顺序一致,类型匹配。

② 对于要写入的数据,字符串和时间日期类型,要用单引号引起来。

③ 可以省略”字段列表”部分,此时就需要给出跟字段数量一样多的数据,类似这样:

 	insert  into 表名values (数据1,数据2,.... ) ;

在这里插入图片描述

可以添加任意项:

在这里插入图片描述

补充:

导入其他数据库文件: source 文件路径(可以直接拖拽,写路径时,要精确到文件)
在这里插入图片描述

5.2、查询数据

语句形式:

select 字段名1, 字段名2, ..... from 表名[where 条件1  and 条件2];

说明:

① select 后的字段列表用于设定要从表中取出的哪些字段的值,(字段名字不用按照存储顺序写)。

② select 后可以只使用一个“ * ”号表示职出该表中所有字段的值。

③ where条件表示取出的数据所应满足的条件,比如:

● where id<10表示取出那些字段id的值小于10的行。

● where age > 60表示职出那些字段age的值大于60的行。

④ where条件可以不写,就取出所有行的数据。

5.3、删除数据

语句形式:

delete from 表名[where 条件1 and 条件2];

说明:

① 删除数据指的是删除表的某些行,比如原来有10行,可以将其中的3行删除,则剩下7行。

② where 条件表示删除数据所应满足的条件,含义跟select中的一样。

③ where 条件可以不写,如果不写,则会删除所有数据–通常都不会这么用。

5.4、修改数据

语句形式:

update 表名 set 字段名1 = 新值1,字段名2 = 新值 2,… [where 条件]; .

说明:

① 修改数据指的是修改表的某些行的某些字段。

② where 条件表示修改数据所应满足的条件,含义跟select中的一样。

③ where 条件可以不写,如果不写,则会修改所有数据 —— 通常都不会这么用。

六、数据类型

6.1、数据类型(列类型)总览

在这里插入图片描述
可见,mysql中的数据类型,总体分3大类:

数字型:

时间型:

字符型:

其中,在sql语句中,数字型数据不需要用****单引号引起来,而时间型和字符型数据需要用****单引号引起来。

6.2、整型

整型数据类型包括:

tinyint : 微整型

smallint :小整型

mediurmint :中整型

int :整型

bigint :大整型

不同大小范围的整型信息如下所示:

在这里插入图片描述
默认整数类型是带符号( - 号)的,即可以有正负值,比如: .

create table zhengxing1 (num1 int, num2 tinyint);

此时,num1 和num2中都可以存储负数(但都不能超出范围)

不带符号的整数类型设置形式如下:

create table zhengxing2(num1 int unsigned, num2 tinyint unsigned);

6.3、小数型

小数类型分为浮点小数定点小数

6.3.1、浮点小数

浮点小数是“不精确的小数”,包括float 和double。

float:

占用4字节存储空间,可称为“单精度浮点数”,约7位有效数字。

double :

占用8字节存储空间,可称为“双精度浮点数”,约17位有效数字。

6.3.2、定点小数

浮点小数是“精确的小数” —— 它通过内部技巧,突破了“有些小数无法用二进制精确表示”的局限。

其设定方式通常是这样的: decimal(M, D);

其中M表示该小数的总的有效位数(最大65) , D表示该小数的小数点后的位数。
在这里插入图片描述

6.4、日期时间型

日期时间类型包括如下几种:

date类型:

表示日期,格式类似这样: ‘000-00-00’

time类型:

表示时间,格式类似这样: ‘00:00:00’

datetime类型: .

表示日期时间,格式类似这样: ’ 0000-00-00 0:00:00’

timestamp类型:

表示“时间戳”,其实就是一个整数数字,该数字是从是“时间起点”到现在为止的“秒数”。

“时间起点”是: 1970-1-1 0:0:0

timestamp类型的字段,无需插入数据,而是会自动取得当前的日期时间(表示当前时刻)。

而且,此类型字段会在数据被更新时,也同样自动取得当前的日期时间(表示修改的时刻)。

特别总结:它在insertupdate某行数据的时候,能够自动获得当前时间。

year类型:

表示年份,格式为: ‘0000’

注意:

时间类型的字面值,通常用单引号引起来。

在这里插入图片描述

New()函数的使用:
在这里插入图片描述

更新数据,以对比datatime类型的数据和timestamp类型的数据的区别:
在这里插入图片描述
timestamp类型在一个表中只能用一个字段!

6.5、字符串型

字符串类型常用的包括: char, varchar, text, enum, set分述如下:

6.5.1、定长字符char和变长字符varchar

定长字符类型 char

适用于存储的字符长度为固定长度的字符,比如中国邮政编码,中国身份证号码,手机号码等。

设定形式:

字段名称char(字符个数)

其特点是:

① 存储的字符长度固定,最长可设定为255个字符。

② 如果实际写入的字符不足设定长度,内部会自动用空格填充到设定的长度。

③ 相对varchar类型,其存职速度更快。

变长字符类型 varchar:

适用于存储字符长度经常不确定的字符,比如姓名,用户名,标题,内容,等大多数场合的字符。

设定形式:

字段名称varchar(字符个数)

其特点是:

① 存储的字符长度是写入的实际长度,但不超过设定的长度。最长可设定为65532 (字节)。

(1) 注: 由于其最长的限制是字节数,因此存储中文和英文的实际字符个数是不同的;

(2) 英文:一个字符占一个字节;

(3) 中文(gbk编码) : 一个字符占2个字节;

(4) 中文(utf8编码) : 一个字符占3个字节;

② 如果实际写入的字符不足设定的长度,就按实际的长度存储。

③ 相对于char字符串,其存取速度相对更慢。

补充:

一个表中有一个字段为c1,其类型为char(10),另有一个字段为c2,类型为varchar,问:

c2最多可以设置多长?

① 一个表中的行也有一个“最大字节长度的限制”,一行最多存储65532字节。

② 则此时,c2最多可以设置65532-10 = 65522 (长度设定)。

③ 如果c2中存储的全是英文字符,就可以存储65522个。

④ 如果存储中文:

gbk :最多65522/2 = 32761个

utf8 :最多65522/3 = 21840个

6.5.2、 text长文本类型

适用于存储“较长的文本内容”比如文章内容。最长可存储65535个字符。

如果还需要存储更长的文本,可以使用mediuntext (1600万左右)或longext (40亿左右)。

设定形式:

字段名称 text

text类型的字段不能设置默认值。

text类型虽然是字符类型,但是不能设置长度。

text类型数据,不存储在中。
在这里插入图片描述

6.5.3、 enum和set类型

enum类型和set类型都是用于存储“有给定值的可选字符”,比如类似表单中的单选,多选,下拉列表。

● enum类型(单选类型枚举类型) :

enum类型通常用于存储表单中的**“单选项”**的值。

设定形式:

enum(选项值1,选项值2,选项值3…)

这些选项值都对应了相应的“索引值”,类似索引数组的下标,但是从1开始的。

即这些选项的索引值分别为: 1,2,3, 4,…

enun类型最多可设定65535个选项。

示例:

create table tab1 (id, int, edu(‘大学’, ‘中学’,’小学’,‘其他’) );

insert into tab1 (id, edu) values(1, ’大学’)

或:

insert into tab1 (id, edu)values (1, 2); //表示中学

● set类型 (多选类型) :

set类型通常用于存储表单中的**“多选项”**的值。

设定形式:

set(选项值1, 选项值2’****, 选项值3 ,…)

这些选项值都对应了相应的“索引值”,其索引值从1开始,并“依次翻倍”。

即这些选项的索引值分别为: 1,2,4, 8,16, … (其实就是2 的n次方)

enum 类型最多可设定64个选项值。

示例:

create table tab2 (aihao(‘篮球’, ’排球’, ’足球’, ‘中国足球’) ); #对应索引值为1,2,4,8

insert into tab2( aihao ) values (‘篮球’ );

或:

insert into tab2 ( aihao ) values(‘篮球,排球’);//(中间不能有空格!!!!!

或:

insent into tab2 ( aihao ) values(‘篮球,足球,排球’);

或:

insert into tab2 ( aihao) values(2); //表示排球(2)

或:

insert into tab2 ( aihao) values (3), //表示“篮球,排球”(1+2)

或:

insert into tab2 ( aihao) values (7); //表示“篮球排球。足球”(1+2+4)
在这里插入图片描述

使用索引值插入结果:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值