数据库概述与mysql 数据基础操作

mysql 数据库基础及增删改查命令

一 数据库概述

1.1 什么是数据库


1.1.1数据(Data)

  • 描述事物的符号记录
  • 包括数字,文字,图形,图像,声音,档案等
  • 以”记录“ 形式,按统一的格式进行存储

1.1.2 表

  • 将不同的记录组织在一起
  • 用来存储具体数据

1.1.3 数据库(DataBase)

  • 数据库是表的集合,是存放数据的仓库.
  • 以一定的组织方式存储的相互有关的数据集合
  • 是按照数据结构来组织,存储和管理数据的仓库
  • 数据库里存放的不是视频,音频,图片,文件等,而是存放的是数据的数据 metedata(元数据),存放的是对数据的描述信息。

1.1.4 数据库管理系统 (DataBase Management System)

是实现对数据库资源有效组织,管理和存取的系统软件

数据亏的建立和维护功能,数据定义功能,数据操纵功能,数据库运行管理功能,通信功能


1.1.5 数据库系统(DataBase System)

是一个人机系统,由硬件,OS,数据库,DBMS,应用软件和数据库用户组成。带有数据库并整合数据库管理软件的计算机系统,即DB+DBMS

image-20210825091333992


1.2 数据库的分类与应用

第二代数据库是关系型数据库(RDBMS)

第三代数据库统称为非关系型数据(NOSQL)

SQL Oracle 甲骨文
SQL MySQL 甲骨文
SQL SQL Server 微软
SQL DB2 IBM
noSQL Redis 开源软件
noSQL Memcache 开源软件
noSQL MongoDB 开源软件

1.3 关系数据库

1.3.1 关系数据库简介

  • 关系数据库系统时基于关系模型的数据库系统
  • 关系模型的数据结构使用简单易懂的二维数据表
  • 关系模型可用简单的”实体-关系“ (E-R) 图来表示
  • E-R 图中包含了实体(数据对象)关系,属性三个要素

查看源图像

  • 实体

    • ​ 也成为了实例,对应现实世界中可区别其他对象的“事件”或“事务”

    • ​ 如用户,账户

  • 属性

    • 实体所具有的某一特性,一个实体可以具有多个属性
    • 如用户中,每个都有用户ID,用户姓名,用户地址
  • 联系

    • 实体之间的对应关系称为联系,也称为关系
    • 如用户和账户之间存在 “存钱” 的关系

所有实体及实体之间联系的集合构成一个关系数据库


1.3.2 关系数据库的存储结构

  • 关系数据库的存储结构是二维表格
  • 在每个二维表中
    • 每一行称为一条记录,用来描述一个对象的信息
    • 每一列称为一个字段,用来描述对象的一个属性


1.4 非关系型数据库介绍

  • 非关系型数据库也称为NoSQL(Not Only SQL)
    存储数据不以关系模型为依据,不需要固定的表格式
  • 非关系型数据库的优点
    • 数据库可高并发读写
    • 对改良数据高效率存储与访问
    • 数据库具有高扩展性与高可用性
  • 常用的非关系数据库:Redis,mongoDB 等


1.5 mysql 数据库介绍

  • 一款深受欢迎的开源关系型数据库

  • Oracle 旗下的产品

  • 遵守GPL 协议,可以免费使用与修改

特点:

  1. 性能卓越,服务稳定
  2. 开源,无版权限制,成本低
  3. 多线程,多用户
  4. 基于C/S(客户端/服务器)架构
  5. 安全可靠

mysql 目前常用版本为 5.6 和 5.7 以及8.0




二 数据库管理

2.1 数据库常用的数据类型

2.1.1 整型

类型 范围(有符号) 范围(无符号) 用途
tinyint -128~127 0~255 微小整数
smallint -32768~32767 0~65535 小整数
mediumint -223~223-1 0~224-1 中整数
int -231~231-1 0~232-1 大整数
bigint -263~263-1 0~264-1 极大整数
float -3.402823466E+38到-1.175494351E-38 1.175494351E-38到3.402823466E+38 单精度浮点数(M,D)
double -1.7976931348623157E+308到-2.2250738585072014E-308 2.2250738585072014E-308到1.7976931348623157E+308 双精度浮点数(M,D)

2.1. 2 浮点型

MySQL数据类型 含义
float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位
double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位

2.1.3 精准数据类型

decimal是MySQL中存在的精准数据类型,语法格式“DECIMAL(M,D)”。其中,M是数字的最大数(精度),其范围为“1~65”,默认值是10;D是小数点右侧数字的数目(标度),其范围是“0~30”,但不得超过M。

如 decimal (5,2 ) :5 个有效长度数字,小数点后面有 2 位


2.1.4 字符串

MySQL数据类型 含义
char(n) 固定长度,最多255个字符
varchar(n) 固定长度,最多65535个字符
tinytext 可变长度,最多255个字符
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符

1.char(n) 若存入字符数小于n,在后面填补空格,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此

2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),

所以varchar(4),存入3个字符将占用4个字节


2.1.5 日期时间类型

MySQL数据类型 含义
date 日期 '2008-12-2'
time 时间 '12:25:36'
datetime 日期时间 '2008-12-2 22:06:44'
timestamp 自动存储记录修改时间


2.2 SQL 语言

SQL 语句用于维护管理数据库,包括数据查询,数据更新,访问控制,对象管理等功能

2.2.1 指令、SQL指令。基本的用法:

  • 操作指令不区分大小写(库名/表名、密码、变量值等除外)。
  • 每条SQL指令以 ; 结束或分隔。
  • 字符串使用 单引号,如果字符串本身也包括单引号,则使用两个单引号
  • 不支持 Tab 键自动补齐。
  • \c 可废弃当前编写错的操作指令。

2.2.2 sql 语言分类

  • DDL数据定义语言(create,alter,drop): 用于创建数据库对象,如库,表,索引等

  • DML数据操作语言(insert,update,delete): 用于对表中的数据进行管理

  • DQL 数据查询语言(select:):用于从数据表中查询符合条件的数据记录

  • DCL数据控制语言(grant,revoke):用于设置或者更改数据库用户或角色权限

  • DTL 数据事务语言(commit,rollback,savepoint) (事务:多个命令组合,一个命令不成功,所有命令都不成功 ):用来保证数据的平稳性和可预测性



三: 数据库命令

3.1 连接和退出mysql 数据库

命令格式

连接数据库:mysql [-h 服务器ip或域名 -u 用户名 -p 密码 数据库名称 ]

退出数据库: exit 或者 quit


3.1.1 非交互式进入数据库

mysql -h 192.168.23.103 -u root -pabc123    

image-20210825110224941


3.1.2 交互式进入数据库

mysql -h 192.168.23.103 -u root -p

image-20210825110500846



3.2 创建,切换,查看,删除数据库

创建数据库 : create database 数据库名;

切换/使用数据库:** use 数据库名;

查看数据库:show databases;

查看当前数据库: select database();

删除数据库:drop database 库名;


示例

3.2.1 查看与创建数据库

show databases;
create database class;
show databases

#数据库命名规则:
#(数字,字母,下划线,不能纯数字;区分大小写;不能使用关键词或特殊符号)

image-20210825111557981


3.2.2 使用与查看当前数据库

use mysql;
select database();
use class;
select class();

image-20210825111810823


3.2.3 删除数据库

show databases;
drop database class;
show databases;

image-20210825112139010



3.3 数据表操作

3.3.1 创建数据表,查看数据库中有哪些数据表

创建数据表:

create table 数据库名称.数据表名称(字段名1 数据类型(宽度) 约束条件, 字段名2 数据类型(宽度) 约束条件, .......);

查看当前库中有哪些表

show tables;


create table school.class(id int primary key auto_increment,student char(20),teacher char(20));
use school;

 show tables;
image-20210825114346206

3.3.2 查看数据表字段结构

查看表结构

desc 数据库名.表名;

desc 表名;

desc class;
desc school.class;

image-20210825120540585


3.3.3 修改表名和表结构

格式

alter table 库名.表名 执行动作 [first];

动作 意义
add 添加字段
modify 修改字段类型
change 修改字段类型
drop 删除字段
rename 修改表名

添加字段格式

新字段默认添加在字段结尾,使用first 可以将新字段添加再开头

alter table 库名.表名 add 字段名 类型(宽度) 约束条件 [after 字段名 | first ];


 desc  class;
alter table class  add address  char(10)
 desc  class;
 
 alter table class  add  num  int  first;
desc  class;

image-20210825132923970

image-20210825133043009


修改表字段类型

格式:

修改的字段类型不能与已存储的数据冲突,也可以用来调整字段顺序

alter table 库名.表名 modify 字段名 类型(宽度) 约束条件 [after 字段名 | first ];


desc class;
alter table class modify student varchar(20) after teacher ;
desc class;

image-20210825133651276


修改字段名

格式

(也可以用来修改字段类型)
alter table 库名.表名 changer 源字段名 新字段名 类型(宽度)约束条件 [after 表字段 | first ] ;


desc class;
alter table class   change  num   age int(3) after id ;
desc class;

![image-20210825134404551]image-20210825230135854


删除字段

格式:

表中有多条记录时,所有列的此字段的值都会被删除

alter table 库名.表名 drop 字段名;


 desc class;
alter table class drop address;
 desc class;

image-20210825134805379


修改表名

表对应的文件名,也被改变表记录不受影响

alter table 表名 rename 新表名;


 show tables;
 alter table class rename class2021;
 show tables;

image-20210825135018589


3.3.4 删除数据表

格式:

drop table 库名.表名;


 show tables;
drop tables class2021;
 show tables;

image-20210825143137614



3.4 表记录操作

3.4 .1向表中插入数据

方法一:

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

方法二:

insert into [数据库名.]表名 values(字段1值,字段2值)


insert into school.class(id,student,teacher) values(1,zhangsan,wanglaoshi);  #此条报错
insert into school.class(id,student,teacher) values(1,'zhangsan','wanglaoshi');
insert into school.class(student,teacher) values('lisi','wanglaoshi');
insert into school.class    values( 5,'wangwu','houlaoshi');
insert into school.class    values( 'zhaoliu','houloashi');  #此条报错

image-20210825122256085

image-20210825122015773

3.4.2 查询数据表的记录

直接查询表记录

格式:

select 字段名1,字段名2 ....... from 数据表;

select * from 数据表; “ * ” 表示所有的字段

select * from 数据表 \G 在命令后加上 \G ,表示按列显示(注意,此命令后面不要加分号 ; )


select * from class;
select * from class\G

image-20210825123934209
报错‘No query specified ’ 是因为命令 "select * from class \G" 后面加了分号 ;


按条件查询表数据

格式

select 字段名1,字段名2 ....... from 数据表 where 条件1 and/or 条件2 ....;


 select id from class where student='zhangsan';
 select id from class where student='zhangsan' or teacher='houlaoshi';
 select id from class where student='zhangsan' and  teacher='wanglaoshi';

image-20210825124836679


显示查询结果的后几行

格式

select * from 数据表 limit n; 显示头2行

select * from 数据表 limit n,m; 显示第n 行后面的m 行


先查询表中有哪些数据

select * from num;

image-20210825130128119


演示查询结果

select * from num limit 3;
select * from num limit 3,5;

image-20210825130408834



3.4.3 删除表记录

格式:

delete from 表名 [where 条件表达式];

删除时如果不加上条件表达式,则删除整个表数据


 delete from num where number=3;
 select * from num;
 delete from num ;
  select * from num;

image-20210825131459711


3.4.4 update 修改,更新表记录

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


update class2021 set teacher=('wanglei') where id=1;
select * from class2021;

image-20210825135858187

posted @ 2021-08-25 14:24  知己一语  阅读(97)  评论(0编辑  收藏  举报