MySQL之数据表的初阶操作

目录

创建表

查看某个表的具体结构

 删除表

修改表结构

新增一个属性

 修改表名

修改表的字符集

 删除某一列 

修改某一列的属性或者类型 

         插入表的数据 insert

插入一行数据

多行插入

查询表的数据 selecto

 查找全行全列

查找指定列

查询字段表达式

​编辑 

 查询字段取别名

 去重查询

 按结果集排序

分页查询

条件查询where

 关于NULL的条件查询

区间查询between...and..

 包含查询 in

 模糊查询like

       修改表的数据

修改一行一列

 修改一行多列

修改多行数据

修改全部行的数据 

       删除表的数据delete 


前言:要进行数据表 的操作,前提是一定要选择数据库

创建表

属性类型

数值类型 

  •  INT对应普通整型 -2^31~2^31
  • BIGINT对应长整型 -2^63~2^63
  • DECIMAL(4,2),就表示这个双精度浮点数长度是4,小数部分2位,90.12就可以,但是100.1就不行

字符串类型

  • 文本字符串就是我们打开文件能看懂的字符串,二进制我们看不懂,比如*.java就是字符串,*.class文件就是二进制字符串 
  • varchar(10),表示存储的字符串是可变的,其最大长度为10,char(10),表示字符串不可变,什么数据存储进去就是长度就是10

日期类型

  • 有个时间戳的概念,就是现在的时间距离1970年1月1日0点的秒数,是一个长整型的数据
  • select now();表示展示现在系统的时间
  • 我们在输入日期类型的时候也要按照这个规格 yyyy-MM-DD hh:mm:ss
  • 只有年月日的话,那么时分秒都是00:00:00
  • 如果只有时分秒,那么就被当成年月日输入

 实例

 

  • comment表示给当前属性添加备注 ,表示这个属性有什么意义

查看有当前数据库的数据表

 show tables;

  • 其实数据就对应操作系统的文件夹,数据表就是文件夹中的文件 

  • *.frm文件保存了数据表的结构(数据表中有那些属性,属性类型等)
  • .*ibd文件存储了具体的数据以及索引信息 

  • 查看数据库文件存储的路径,一般默认都是在C:\ProgramData\MySQL\MySQL Server 5.7\Data\ 

查看某个表的具体结构

desc 表名;

查看注释信息

show create table 表名;

 删除表

drop table [if  exists] 表名;

  • 这跟删库一样,都是危险操作
  • 但是存在恢复操作 公司每个数据库都是定期备份,当发生错误的时候可以还原
  • MySQL自带的binlog机制,通过binlog恢复数据(每在数据库进行一个修改操作,都会在binlog文件中记录这一动作)
  • 特殊的磁盘恢复工具

修改表结构

新增一个属性

alter table 表名 add 新属性名称 新属性类型;

 修改表名

alter table 旧表名 rename 新表名;

修改表的字符集

alter table 表明 convert to character set 字符集;

 删除某一列 

alter 表名 drop 列名称;

修改某一列的属性或者类型 

alter table 表名 change 原字段名称 新字段名称 类型[约束];

  • 也可以用这个语句来只改类型,就是新字段名和原字段名保持相等 

插入表的数据 insert

插入一行数据

insert into 表名(属性名称....) values(对应的属性值)

单行插入部分数据

  •  若有的属性没有插入,默认值就是NULL

单行插入全列数据

  • 在插入的时候不指定列名,那么就是单行全列插入,如果values中不写全,就会报错

多行插入

多行部分列插入

insert into 表名(属性名....)values(属性值),(属性值)....;

 多行全列插入

insert into 表名 values (属性值),(属性值)....;

查询表的数据 select

 查找全行全列

seletc * from 表名

  • 一般不推荐,因为效率很低

查找指定列

select 列名称,列名称..... from 表名;

  •  seletc得到的数据相当于一张临时表,以二维表的形式展示数据,这张表的数据不会对数据库里的内容造成影响

查询字段表达式

 

 查询字段取别名

select 列名 as 新名词 from 表名;

 去重查询

select distinct 列名称 from 表名

select distinct 列名称1,列名称2...组合属性去重,就是这几个列完全一模一样才算重复元素 

 按结果集排序

select 列名称 from表名 order by 列名称[asc|desc],

默认是升序asc

 desc是降序

 关于NULL的排序

  •  NULL在排序中,最小的值

按多个列的条件去排序

  •  先按照chinese升序(前提),如chinese相同,就按照math降序排序

分页查询

select 属性名称 from 表名 limit n;

  •  这样就是输出前三行的数据

select 属性名称... from 表名 limit n,offset s;

  • limit n表示输出n行,offest s,表示从s+1行开始输出
  • 如果n大于行数,那么就全部输出
  • 如果s大于行数,就输出找不到,  

条件查询where

查询所有成绩大于200的同学的姓名和总成绩

  • where不能用别名来作为判断条件,但是order by支持别名
  • 因为order by执行顺序是已经把结果查出来了,只是给查出的数据排序(select查出来的结果对order by已经可见了)
  • where的执行顺序是在select之前的,因为只有先满足where,才能选择出来,所以执行where的时候,seelect还没执行

 关于NULL的条件查询

   

  •  mysql中的null不包含在< <= > >=.null=null也不支持,我们有专门的运算符去判断, 

  • 如果数据中有一个是NULL,那么比如像+的这种操作得到的数据就是一个NULL 

区间查询between...and..

查询一个语文成绩在85到95分同学姓名和语文成绩

 包含查询 in

查询数学成绩是20,90.5,90的同学姓名和数学成绩 

 模糊查询like

查询名字中包含羊的name 

%字符%

查询名字中第二是羊,且名字长度为3

_字符_

修改表的数据

update 表名 set 列名=(表达式——根据这个表达式来确定修改的行)

修改一行一列

将孙悟空的math成绩+10;

 修改一行多列

将猪八戒的math和english的成绩+10 

修改多行数据

修改所有名字有羊的math加五分

  • 满足条件的有3行数据,但是修改的只有2行,因为null不参与+这种运算,所以修改的就是2行

修改全部行的数据 

不带where条件,就默认修改所有行的数据

删除表的数据delete 

delete from 表名 where +条件

  •  如果不加where,就是全表删除,原理是一行行进行delete,delete删除慢,可以恢复,可以加条件
  • truncate table 表名 ,这个就是直接将标准的数据清除,删除快,数据不可恢复,不能加条件,相当于把这个表的文件大小变成0
  • drop一个表,就是直接将表的文件删除了

表的约束以及设计(数据库三范式) 

数据库的约束:对于某一列的值能添加那些内容做出一定的限制,这种限制就叫做约束,如果没有任何约束的话,会存在很大的安全隐患

约束类型

NULL约束 

  • not null表示不能将空值写入

如何在创建表之后添加非空约束呢? 

  •  因为非空这种是属于表的结构,所以使用alter +change 
  • 在修改为非空的时候,必须要将当前表中值为null的行删除或者修改成非空

唯一约束 unique

  • 唯一约束表示的就是这个属性的字段只能出现一次,不能重复,但是在表中唯一约束的属性可以有多个
  • 约束对应唯一键,索引

查看唯一约束 

唯一约束存储null的情况 

  • null不受唯一键的约束  

创建表之后修改某个字段为唯一约束

alter table 表名 add unique(属性); 

默认值约束default

  • 规定了默认值,在插入数据的时候,若没有指定该列,则使用默认值插入数据
  • 若显示对默认值插入null,不会触发默认值

 主键约束 primary key-索引

  • 一张表只能有一个主键,primary key=unique+not null 
  • 主键可以由多个列共同组成——联合主键
  • 在Mysql中同时设置not null和unique就会自动被设置为主键

删除主键

alter table 表名 drop primary key;

创建表之后添加主键

alter table 表名 add primary key(属性);

创建联合主键 

alter table 表名 add primary key(属性);或者在创建表的时候在最后一行写

  •  复合主键,只有所有的属性相同才被认为是相同的,部分相同不算相同

auto_increment自增主键

1可以显示插入null或者不写,自动触发自增功能

 2关于自增主键删除之后的自增情况

  • 新增的主键是以出现过的最大值为基值+1  

3显示给自增主键插入一个值

  •  新增的自增主键是以出现过最大的值为基值+1

4truncate删除表后的自增主键情况

  •  truncate删除表,会重置自增主键

外键约束 foreign key

涉及多个表之间的联系,比如有一个学生表,有一个班级表,学生表中应该有一个属性是班级信息,不然不知道是那个班的

  • 如果在学生表插入class_id,在班级表中也必须id对应的值才行,不然就会报错 

  • 英文class表有对应的班级号为1的班级,所以在学生表中插入class_id为1的数据成功,因为是先有的班级,才有的班级对应的学生,这种约束就是外键约束  

关于外键约束的删除

  • 要删除一个班级,先要将班级中每个同学都解除跟这个班级的联系,不然就不能删除这个班级 

Check约束

对于MySQL来说就是直接忽略,其语义是只能选择给定的值

  • 比如sex属性只能输入男或者女
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL数据表的基本操作包括创建数据表、插入数据、查询数据、更新数据和删除数据。创建数据表时,需要指定表名和字段名,并为每个字段指定数据类型和约束条件。可以使用CREATE TABLE语句来创建数据表。插入数据时,使用INSERT INTO语句,指定要插入的数据和表名。查询数据可以使用SELECT语句,可以指定查询条件和排序规则。更新数据可以使用UPDATE语句,根据指定的条件更新字段的数值。删除数据可以使用DELETE FROM语句,根据指定的条件删除数据行。这些基本操作可以帮助用户在MySQL数据库中进行数据管理和交互,是数据库操作的基础知识。 另外,MySQL数据表的基本操作还包括对表结构的修改和索引的创建。可以使用ALTER TABLE语句对表结构进行修改,包括添加、修改和删除字段等操作。创建索引可以加快数据的检索速度,可以使用CREATE INDEX语句来创建索引。除此之外,还可以使用DESCRIBE语句来查看数据表的结构,使用SHOW TABLES语句来查看数据库中的数据表列表。这些操作可以帮助用户更好地管理和维护MySQL数据库中的数据表。 总之,对于MySQL数据表的基本操作,包括创建数据表、插入数据、查询数据、更新数据、删除数据、修改表结构和创建索引等操作,是数据库管理和交互的基础,对于数据库开发和管理都是非常重要的知识点。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

库里不会投三分

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值