MySQL5.7数据库-增删改查操作

数据库介绍

数据库简称DB,实际上就是一个文件集合,是一个存储数据的仓库,本质就是一个文件系统,数据库上按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查等操作。

数据库存储数据特点

  • 持久化存储
  • 速度快
  • 保证数据的有效性
  • 对程序支持非常友好,容易扩展

数据库的分类

  • 关系型数据库: 可以保证现实生活中的各种关系数据,数据中存储数据以表为单位;主流关系型数据库:MySQL、Oracle、SQL Server等
  • 非关系型数据库:通常用来解决某些特定的需求,比如高并发访问。主流非关系型数据库:Redis、Mongodb、memacache

语法基础

SQL介绍

SQL是结结构化查询语言,是一种用来操作RDBMS(关系型数据库管理系统)的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过SQL操作oracle, sql server, mysql等关系型数据库

SQL语句主要分为

  • DDL语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。
  • DML语句:数据操纵语句,用于添加、删除、更新、和查询数据库记录,并检查数据完整性
  • DCL语句:数据控制语句,用于控制不同数据段直接许可和访问级别的语句。

数据完整性

在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束。

数据类型

整数类型有符号范围无符号范围
TINYINT(size)-128~1270~255
SMALLINT(size)-32768~327670~65535
MEDIUMINT(size)-8388608~83886070~16777215
INT(size)-2147483648~21474836470~4294967295
BIGINT(size)-9223372036854775808~92233720368547758070~18446744073709551615
小数类型描述
FLOAT(size,d)带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DOUBLE(size,d)带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DECIMAL(size,d)作为字符串存储的 DOUBLE 类型,允许固定的小数点。(定点数类型)
字符串类型
字符串类型字节大小示例
CHAR(size)0-255char(3)输入’ab’,实际存储为’ab ‘,输入’abcd’,实际存储为’abc’
VARCHAR(size)0-65535varchar(3)输入’ab’,实际存储为’ab’,输入’abcd’,实际存储为’abc’
枚举类型

枚举类型英文为ENUM,对1255个成员的枚举需要1个字节存储;对于25565535个成员,需要2个字节存储。最多允许65535个成员。创建方式:enum(“M”,“F”);

日期类型
数据类型描述
DATE()日期。格式:YYYY-MM-DD注释:支持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’
DATETIME()日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’
TIME()时间。格式:HH:MM:SS 注释:支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’
YEAR()2 位或 4 位格式的年。4 位格式:1901 到 2155。2 位格式:70 到 69,表示从 1970 到 2069
TIMESTAMP()时间戳。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC

注意

  • decimal表示定点小数,如decimal(5,2)表示共存5位数,小数占2位。不写则默认为decimal(10,0)
  • char表示固定长度的字符串,如char(3),如果填充’ab’时会补一个空格为’ab ’
  • varchar表示可变长度的字符串,如varchar(3),填充’ab’时就会存储’ab’
  • 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径
  • 枚举类型不区分大小写
约束
  • 主键约束(primary key):它能够唯一确定表中的一条记录,也就是我们通过给某个字段添加约束,就可以使得字段不重复且不为空。
  • 自增约束(auto_increment)
  • 惟一约束(unique):此字段的值不允许重复
  • 非空约束(not Null):此字段不允许填写空值
  • 默认约束(default):当不填写此值时会使用默认值,如果填写时以填写为准
  • 外键约束(foreign key):对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常

SQL语句

操作数据库(DDL)

数据库连接
mysql -uroot -p
enter password : 密码

在这里插入图片描述

退出数据库
exit
quit

在这里插入图片描述

查看已经创建的数据库
show databases;

在这里插入图片描述

查看数据库版本
select version()

在这里插入图片描述

注意

  1. mysql不严格区分大小写
  2. 分号作为结束符,必须写
创建数据库
  • 当创建的数据库的名字中含有``,直接使用create database 数据库名字;是不符合数据库创建的标准

  • 当创建数据库中有数据库名字有单横线时,需要使用``将数据库名字进行包裹起来,如下

create database 数据库名字;
create database 数据库名字 charset=utf8;
create database `数据库名字`;
create database if not exists `数据库名字` charset=utf8;

在这里插入图片描述

查看创建数据库的命令
show create database 数据库名;

在这里插入图片描述

查看当前使用的数据库
select database();

在这里插入图片描述

使用数据库
use 数据库名字;

在这里插入图片描述

删除数据库
drop databases 数据库名字;

在这里插入图片描述

操作数据表

查看当前数据库中所有的表
show tables;

在这里插入图片描述

创建表
create table 数据表名(字段 类型 约束[字段 类型 约束])

在这里插入图片描述

查看表的描述
desc 数据表名

在这里插入图片描述

查看表的创建语句
show create table 数据表名;

在这里插入图片描述

练习
  • 创建 students 表(id、name、age、high、gender、cls_id)
  • 创建 classes 表(id、name)
-- students如下:
-- primary key : 主键
-- not null : 不允许为空
-- auto_increment : 自增
-- tinyint : 小整型
-- unsigned : 无符号的
-- default : 默认值
-- enum : 枚举类型
-- engine=InnoDB default charset=utf8 : 指定引擎和指定字符集编码
create table students(id int primary key not null auto_increment, name varchar(10), age tinyint unsigned default 18, high float(5,2), gender enum("男", "女", "保密") default "保密", cls_id int) engine=InnoDB default charset=utf8;

在这里插入图片描述

-- classess如下:
create table classes(id int primary key not null auto_increment, name varchar(30)) engine=InnoDB default charset=utf8;

在这里插入图片描述

添加表字段
alter table 数据表名 add 字段 类型
-- alter table classes add age tinyint;

在这里插入图片描述

修改表字段
-- 不重命名
alter table 数据表名 modify 字段 类型; 
-- alter table classes modify age int;

-- 将字段重命名
alter table 数据表名 change 原字段名 新字段名 类型及约束;
-- alter table classes change age age_int tinyint;

在这里插入图片描述

在这里插入图片描述

删除表字段
alter table 数据表名 drop 字段;
-- alter table classes drop age_int;

在这里插入图片描述

练习
• 添加字段
  • 字段名称:birthday   
  • 字段类型:DATETIME  
alter table classes add birthday datetime;

• 修改字段
	• 字段类型:DATE
alter table classes modify birthday date;

• 修改字段
	• 字段名称:birth
	• 字段类型:DATE	
alter table classes change brithday birth date;

• 删除该字段
alter table classes drop birth;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

操作数据

插入数据
整行插入
- 当使用整行插入数据时,必须要一一对应,否则将会出错,当ID为自增时,也是需要插入的,如下:
insert into 数据表名 values(值1,值2,值3);
insert into students values(1, "Small-J", 18, 175.12, '男', 1);

在这里插入图片描述

指定列中插入数据
insert into tablename(字段1,字段2) values (值1,值2);
insert into students values(2,"Senven-J", 19, 175.15, '男', 2);

在这里插入图片描述

指定列中插入多条数据
insert into tablename(字段1,字段2) values (值1,值2),(值1,值2);
insert into students(name, high, cls_id) values ('Small-J2', 178.12, 2);

在这里插入图片描述

练习
-- students表中添加整行数据
insert into students values(1, "Small-J", 18, 175.12, '男', 1);

-- students表中添加name,gender两个字段的数据
insert into students (name, gender) values ('demo', 2);

-- students表中同时添加多行数据
insert into students (name, gender) values ('demo1', 3), ('demo2',2);

在这里插入图片描述

在这里插入图片描述

修改数据
修改数据
update 数据表名 set 字段1=新, 字段-新值[where 条件];
练习
-- 将姓名全部修改为jack
update students set name="jack";

-- 将性别为女的名字修改为rose
update students set name="rose" where gender="女";

-- 将id为3的年龄修改为22,并且性别改为男
update students set age=22, gender="男" where id=3;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

删除数据
delete from 数据表名 [where 条件];
练习
-- 将姓名为rose的数据删除
delete from students where name="rose";

-- 清空表数据
delete fromd students;

在这里插入图片描述

在这里插入图片描述

查询数据
查询整个表数据
select * from 数据表名 -- 在实际应用开发中,不推荐使用
查询指定字段数据
select 字段1,字段2 from 数据表名;
select name, gender from students;
查询指定字段数据,并给字段起别名
select 字段1 as 别名, 字段2 as 别名 from 数据表名;
select name as "姓名", gender as "性别" from students;
查询指定字段并去重
select distinct 字段1 from 数据表名;
练习
-- 查询students表所有数据
select * from students;

-- 查询students表中name与gender字段的数据
select name, gender from studnets;

查询students表中name字段的数据并且去重
select distinct name as "姓名" from students;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值