Day02 常用数据类型了解 增删改查sql命令,数据备份(导入导出sql文件) 以及练习题及答案_721

Day02 常用数据类型了解 增删改查sql命令,数据备份(导入导出sql文件) 以及练习题及答案

了解常用的数据类型

主要分三类:

  1. 数值类型
  2. 字符串类型
  3. 日期时间类型
数据类型名称大小描述
TINYINT1Byte小整数值,带符号的范围是-128到127。无符 号的范围是0到255
SMALLINT2bytes小的整数,带符号的范围是-32768到32767.无 符号的范围是0到65535
MEDIUMINT3bytes中等大小整数-8388608到8388607,0到 16777215
INT/INTEGER4bytes普通大小的整数,-2147483648到 2147483647,0到4294967295
BIGINT8bytes大整数,-9223372036854775808到 9223372036854775807,0到 18446744073709551615
FLOAT[(M,D)]4bytes小(单精度)浮点数,允许的 值-3.402823466E+38到-1.175494351E-38,0和 1.175494351E-38到3.402823466E+38,这些是理 论限制,基于IEEE标准。实际的范围根据硬 件或操作系统的不同可能稍微小些,M表示所 有位数,D表示小数位数,可以省略
DOUBLE[(M,D)]8bytes普通大小(双精度)浮点数,允许的 值-1.7976931348623157E+380 到-2.2250738585072014E-308,0和 2.2250738585072014E-38到 1.7976931348623157E+308.这些是理论限制, 基于IEEE标准。实际的范围根据硬件或操作 系统的不同可能稍微小些
DECIMAL[(M,D)]存储任何具有M位数字和D位小数的值
DATE日期,支持的范围为‘1000-01-01’到‘9999-12- 31’,MySQL以’YYYY-MM-DD’格式显示 DATE值,但允许使用字符串(‘20230721’ / ‘2023-07-21’ )或数字(20230721)为DATE列分 配值
DATETIME日期和时间的组合。支持的范围是‘上面加上 00:00:00’到‘上面第二个加上23:59: 59’.MySQL以YYYY-MM-DD HH:MM:SS“格式 显示DATETIME值,但允许使用字符串或数字 为DATETIME列分配值
TIMESTAMP时间戳,范围是’1970-01-01 00:00:00’到2037年
TIME时间,范围是‘-838:59:59’到‘838:59: 59’.MySQL以‘HH:MM:SS’格式显示TIME值, 但允许使用字符串或数字为TIME列分配值
YEAR两位或四位格式的年。默认是四位格式。在四 位格式中,允许的值是1901到2155和0000.在 两位格式中,允许的值是70-99和00-69,表示 从1970到2069年。MySQL以yyyy格式显示 YEAR值,但允许使用字符串或数字为YEAR 列分配值
CHAR(M)0-255 bytes固定长度字符串,当保存时在右侧填充空格以 达到指定长度。M表示列长度。M的范围是0 到255个字符
VARCHAR(M)0-65535 bytes变长字符串。M表示最大列长度。M的范围是 0到65535.(VARCHAR的最大实际长度由最长 的行的大小和使用的字符集确定。最大有效长 度是65535字节)
TINYBLOB0-255 bytes不超过255个字符的二进制数据
TINYTEXT0-255 bytes短文本字符串
BLOB[(M)]0-65535 bytes最大长度为65535(216 -1)字节的BLOB列,可以 给出该类型的可选长度M。如果给出,则 MySQL将列创建为最小的但是足以容纳M字 节长度的值的BLOB类型
TEXT[(M)]0-65535 bytes长字符串,最大长度为65535(216-1)字符的 TEXT列。可以给出可选长度M。则MySQL将 列创建为最小的但是足以容纳M字符长度的值 的TEXT类型。
MEDIUMBLOB0- 16777215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0- 16777215 bytes中等长度文本数据
LONGBLOB二进制形式的极大文本数据
LONGTEXT极大文本数据
数值类型示例:
1). 年龄字段 - 不会出现负数, 而且人的年龄不会太
大
age tinyint unsigned (0-255)
2). 分数 - 总分100分, 最多出现一位小数
score double(4,1)
日期时间示例:
1). 生日字段 birthday
birthday date
2). 创建时间 createtime
createtime datetime
字符类型示例:
1). 用户名 username ------> 长度不定, 最长不会
超过50
username varchar(50) -> 2 2
2). 性别 gender ---------> 存储值, 不是男,就是
女
gender char(10) -> 1 10
3). 手机号 phone --------> 固定长度为11
phone char(11)

char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。

创建表

create table [if not exists] tab_name(
col_name datatype [comment '注释'],
col_name datatype
);
# 创建一个 - 学生表:学生编号、学生姓名、出生日期
create table if not exists student (id int
comment '编号'
, name varchar(50) comment '姓
名'
, birth date comment '出生日期');

表操作(修改,DDL)

  • 添加列
alter table 表名 add [column] 字段名 类型;
  • 修改列
alter table 表名 modify [column] 字段名 类型;
  • 修改列名称和类型
alter table 表名 change [column] 原字段名 新字段名 新列类型 [comment(注释)] [约束];
  • 删除列
alter table 表名 drop [column] 字段名;
  • 修改表名
rename table 旧名 to 新名;
-- 或者
alter table 表名 rename to 新名;
  • 删除表
drop table [if exists] 表名;
# 删除表之后会创建一个空表

删除表的时候,表中的全部数据也都会被删除

  • 创建和某表一样的表
create table 表名 like 要复制的表;
# 当要复制的表不在当前数据库时
create table 表名 like 数据库名.要复制的表;

数据管理

1.插入数据 DML

insert into 表名[(字段名称1,字段名称2,...)] value(value 1,value 2, ...);
insert into 表名[(字段名称1,字段名称2,...)] values (value 1, value 2,...);
#如果前面有字段则按照前面的字段顺序添加,没有则按照默认的顺序添加

#插入多条数据
insert into 表名 value (), (), ();

2.查询数据DQL

# 无条件查询
select *(|字段1, 字段2, 字段3,...) from 表名;

#等值查询
select * from 表名 where 字段名 = value;

#设置列别名
select 字段名 [as] '别名' from 表名 WHERE 条件;

#剔除重复行
select distinct * from 表名;
#只是在显示的时候不显示重复的数据,数据未删除

3.修改数据

update 表名 set 字段 = value where 条
件;
# 修改满足条件的字段值

4.删除数据

delete from 表名 where 条件;
# 删除满足条件的行

数据备份

mysqldump [选项] 数据库名 [表名] > 地址

选项说明:

参数名缩写含义
–host–host–host
–port-P服务器端口号
–user-uMySQL 用户名
–password-pMySQL 密码
–databases-B指定要备份的数据库
–alldatabases-A备份mysql服务器上的所有数据库
–no-data-d不备份数据,默认为备份数据
–comments-i是否有信息备注,默认为打开的,使用–skip-comments 关闭

1.备份表结构

mysqldump -u root -p 数据库名 表12 >
地址
# -d 只备份表结构
mysqldump -u root -p -d `数据库名` dept > `地址`
# 数据+表结构一起备份
mysqldump -u root -p `数据库名` > `地址`
#
mysqldump -u root -p -d -skipcomments `数据库名` > `地址`

2.备份多个数据库

mysqldump -u root -p -d -databases
数据库1 数据库2 > 地址
mysqldump -u root -p -d -B `数据库名1`
`数据库名2` `数据库名3` `数据库名4` > `地址`
# -all-databases 备份所有数据库
mysqldump -u root -p -d -alldatabases / -A > `地址`

3.备份数据和结构

# 备份命令去掉 -d
mysqldump -u root -p -databases 数据
库1 数据库2 > 地址

4.将查询的结果集保存为文件

mysql -u root -p -e "select * from 数
据库.表名" > 地址
mysql -u root -p -e "select * from `表名`" > `地址`
mysql -u root -p -e "select * from `表名`" store > `地址`

5.还原数据结构和数据

# 登录选中数据库之后执行,将数据还原到该数据
库
source 地址; # SQL 语句
# 在服务外面使用 mysql 命令还原
mysql -u root -p 新数据库名 < 地址
mysql -u root -p `表名` < `地址`

练习

创建stroe数据库,在数据库中根据开发喵store业务 创建表,表结构如下,并插入以下数据,完成下面的 sql.

表1:goods

列名类型说明
good_noint商品编号
goods_namevarchar(50)商品名称
costdouble商品成本
pricedouble商品售价
countint商品库存
crate_timedatetime商品上架时间
category_noint商品分类编号

创建表:

 create table goods(
    -> good_no int comment"商品编号"
 	-> goods_name varchar(50) comment '商品名称'
    -> cost double comment '商品成本',
    -> price double comment '商品售价',
    -> count int comment '商品库存',
    -> crate_time datetime comment '商品上架时间',
    -> category_no int comment '商品分类编号');

插入数据

insert into goods (good_no,goods_name,cost,price,count,crate_time,category_no) values
    -> (1,'火腿肠',0.5,2.5,50,20230313-190005,1)
    -> (2,'薯片',1.5,3.5,30,20230107195000,1)
    -> (3,'鼠标垫',20.5,25.5,20,20230307195000,4),
    -> (4,'萝卜',0.8,1.5,50,20230308795000,2),
    -> (5,'白菜',0.2,0.8,50,20230309195000,2),
    -> (5,'车厘子',30,50,50,20230310195000,3),
    -> (7,'芒果',5,8,50,20230310195000,3),
    -> (8,'五粮液',1350,1700,60,20230312195000,5),
    -> (9,'鼠标',40,50,20,20230313195000,4);

表2: category

列名类型说明
noint商品分类编号
namevarchar(50)商品类别名称

创建表:

create table category(
    -> no int comment '商品分类编号',
    -> name varchar(50) comment '商品类别名称');

插入数据:

insert into category (no,name) values
    -> (1,'零食'),
    -> (2,'蔬菜'),
    -> (3,'水果'),
    -> (4,'电子产品'),
    -> (5,'酒水');

表3:account

列名类型说明
idint用户编号
phonevarchar(11)用户手机号
passwordvarchar(50)用户密码
typebit用户类型 0 管理员 1 会员
namevarchar(50)用户名
pointint用户积分
moneydouble用户余额
create_timedatetime用户创建时间

创建表:

 create table account (
    -> id int comment '用户编号',
    -> phone varchar(11) comment '用户手机号',
    -> password varchar(50) comment '用户密码',
    -> type bit comment '用户类型 0管理员 1会员',
    -> name varchar(50) comment '用户名',
    -> point int comment '用户积分',
    -> money double comment '用户余额',
    -> create_time datetime comment '用户创建时间');

插入数据:

insert into account (id,phone,password,type,name,create_time) values
    -> (1,111,111,0,'管理员',20230307165000)
    -> (2,222,222,1,'张三',0,350,20230311195000),
    -> (3,333,333,1,'李四',0,268.5,20230312195000),
    -> (4,444,444,1,'王五',0,956.3,20230313195000),
    -> (5,555,555,1,'孙六',2000,9,20230307175000);

表4:cart

列名类型说明
idint购物车编号
goods_noint商品编号
numint商品数量
account_idint用户编号
create_timedatetime加入购物车时间

创建表

create table cart(
    -> id int comment '购物车编号',
    -> goods_no int comment '商品编号',
    -> num int comment '商品数量',
    -> account_id int comment '用户编号',
    -> create_time datetime comment '加入购物车时间');

插入数据:

insert into cart(id,goods_no,num,create_time,account_id) values
    -> (1,1,2,20230311195000,2),
    -> (2,2,2,20230312195000,3),
    -> (3,4,10,20230313195000,3),
    -> (4,6,20,20230312195000,3),
    -> (5,9,1,20230312195000,2),
    -> (6,2,10,20230313195000,4);

练习题:

  1. 查询商品库存等于50的所有商品,显示商品编号,商 品名称,商品售价,商品库存。
select good_no,goods_name,price,count from goods where count = 50;
  1. 查询商品成本等于60的所有商品,显示商品编号,商 品名称,商品售价,商品库存。
select good_no,goods_name,price,count from goods where cost = 60;
  1. 修改购物车中id为5的num数量加一
update cart set num = num + 1 where id = 5; 会员等级表添加一列字段为 id,类型为int~~

4.会员等级表添加一列字段为 id,类型为int

  1. 修改购物车表的id字段为cart_id
alter table cart change id cart_id int;

6.查询购物车数量等于10的信息,显示购物车编号,商品编号,商品数量,创建时间,账户编号。

 select cart_id,goods_no,num,account.create_time,account.id from account,cart where num = 10;
  1. 删除用户表中账户余额等于9的用户
delete from account where money = 9;

8.查询购物车中用户id为3的所有信息

select * from cart where cart_id = 3;

9.查询goods表中第二页的数据,每页显示5条数据

select * from goods limit 5,5;

10.查询goods表中的数据,按照商品价格升序排序,如果商品价格一样按照成本降序排序,并显示第三页,每页显示3条数据。

select * from goods order by price, cost desc limit 6,3;

11.

12.思考:如何查询用户购物车的单个商品总价

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值