MySQL数据库基础1--未完待续

前言

一、MySQL 基础认知

1.数据库访问方式

2.什么是数据库?

3.数据库应用中的术语

4.数据库概念类型

关系型数据库:

非关系型数据库:

二.MYSQL数据库操作

1.数据库构成

(1)数据库(Database)

(2)数据表(Table)

(3)字段 / 列(Column/Field)

(4)记录 / 行(Row/Record)

(5)数据(Data)

2.MySQL 数据类型

(1)整数类型

(2)浮点数类型和定点数类型

(3)字符串类型

(4)日期与时间类型

3.数据库操作

(1)连接数据库

(2)数据库操作

创建数据库

删除数据库

选择数据库

显示MySQL管理的所有数据库

查看当前打开的数据库

(3)数据表操作

创建数据表

修改表名

删除表

查看表结构

(4)修改字段

修改字段的数据类型

修改字段名

增加字段

删除字段

(5)字段约束

主键约束(PRIMARY KEY)

自增约束(AUTO_INCREMENT)

外键约束(FOREIGN KEY)

唯一约束(UNIQUE)

非空约束(NOT NULL)

默认约束(DEFAULT)

无符号约束(UNSIGNED)

(6)插入语句

(7)update更新

案例:数据库基础练习题(题目)


前言

        MySQL 是目前全球最流行、使用最广泛的开源关系型数据库,是后端开发、数据分析、运维、测试岗位的必备核心技能。小到个人博客,大到阿里、腾讯、字节等大厂核心业务,都在大量使用 MySQL。

一、MySQL 基础认知

1.数据库访问方式

2.什么是数据库?

        数据库专业的来说,其实就是一种电子的仓库,是专门储存数据和管理数据的一种处所,用户可以对数据库中的数据进行新增、更新或者删除等操作。 举个例子,现在每一个人都有很多朋友和同学,为了方便联系,我们在通讯录,建立有关姓名和电话,这个通讯录就是数据库,有时候我们会修改某个电话号码。

3.数据库应用中的术语

4.数据库概念类型

        数据库根据其特点和应用场景的不同,可以分为多种类型,主要包括关系型数据库和非关系型数据库两大类。

关系型数据库:

        采用表格的形式来存储数据,数据以行和列的形式组织,表与表之间可以建立关联。常见的关系型数据库有MySQL、Oracle、SQL Server等。关系型数据库注重数据的一致性和完整性,适用于复杂的事务处理和需要严格数据结构的应用。


非关系型数据库:

        不采用表格的形式来存储数据,而是采用键值对、文档、列族、图形等多种数据存储模型。非关系型数据库注重性能和灵活性,适用于高性能、大规模数据存储和分布式部署的场景。常见的非关系型数据库有MongoDB、Redis、Cassandra等。

二.MYSQL数据库操作

1.数据库构成

数据库服务器 → 数据库 → 数据表 → 字段 → 记录 → 数据

(1)数据库(Database)

  • 一个独立数据仓库
  • 用来统一管理多张相关数据表
  • 一台 MySQL 服务器可以有多个数据库

(2)数据表(Table)

  • 数据库里真正存数据的二维表格
  • 结构和 Excel 表格一样:行 + 列
  • 是数据库最基础存储单元

(3)字段 / 列(Column/Field)

  • 表中每一列就是一个字段
  • 代表数据的属性:id、姓名、年龄、性别、手机号
  • 每个字段有:字段名、数据类型、约束

(4)记录 / 行(Row/Record)

  • 表中每一行就是一条完整数据
  • 一条记录对应一个实体信息,比如一个学生、一个用户

(5)数据(Data)

  • 字段里实际存储的值
  • 比如:张三、20、男、138xxxx

初始化安装mysql数据库后,  会默认创建4个系统数据库:

2.MySQL 数据类型

        使用MySQL数据库存储数据时,不同的数据类型决定了 MySQL存储数据方式的不同。为此,MySQL数据库提供了多种数据类型,其中包括整数类型、浮点数类型、定点 数类型、日期和时间类型、字符串类型、二进制…等等数据类型。

重点讲解以下三类:数值、日期/时间和字符串(字符)类型。

(1)整数类型

        根据数值取值范围的不同MySQL 中的整数类型可分为5种,分别是TINYINT、SMALUNT、MEDIUMINT、INT和 BIGINT。

类型

大小

范围(有符号)

TINYINT

1 Bytes

(-128127)

SMALLINT

2 Bytes

(-32 76832 767)

MEDIUMINT

3 Bytes

(-8 388 6088 388 607)

INTINTEGER

4 Bytes

(-2 147 483 6482 147 483 647)

BIGINT

8 Bytes

(-9,223,372,036,854,775,8089 223 372 036 854 775 807)

适用场景

(2)浮点数类型和定点数类型

        在MySQL数据库中使用浮点数和定点数来存储小数。浮点数的类型有两种:单精度浮点数类型(FLOAT)和双精度浮点数类型(DOUBLE)。而定点数类型只有一种即DECIMAL类型。

类型

大小

范围(有符号)

FLOAT

4 Bytes

(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

DOUBLE

8 Bytes

(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

DECIMAL

DECIMAL(M,D) ,如果M>D,M+2否则为D+2

依赖于MD的值

        平常用的float,double 在SQL中也有,形式为float(M,D)、和double(M,D) M表示有效数字,D表示小数点后几位表示,不过一般用decimal(M,D)表示精确数值。

(3)字符串类型

        在MySQL中常用CHAR 和 VARCHAR 表示字符串。当数据为CHAR(M)类型时,不管插入值的长度是实际是多少它所占用的存储空间都是M个字节;而VARCHAR(M)所对应的数据所占用的字节数为实际长度加1。

类型

大小

用途

CHAR

0-255 bytes

定长字符串

VARCHAR

0-65535 bytes

变长字符串

TINYBLOB

0-255 bytes

不超过 255 个字符的二进制字符串

TINYTEXT

0-255 bytes

短文本字符串

BLOB

0-65 535 bytes

二进制形式的长文本数据

TEXT

0-65 535 bytes

长文本数据

MEDIUMBLOB

0-16 777 215 bytes

二进制形式的中等长度文本数据

MEDIUMTEXT

0-16 777 215 bytes

中等长度文本数据

LONGBLOB

0-4 294 967 295 bytes

二进制形式的极大文本数据

LONGTEXT

0-4 294 967 295 bytes

极大文本数据

        CHAR(M) 类型一般需要预先定义字符串长度。如果不指定(M),则表示长度默认是1个字符。VARCHAR(M) 定义时, 必须指定 长度M,否则报错。

(4)日期与时间类型

        MySQL提供的表示日期和时间的数据类型分别是 :YEAR、DATE、TIME、DATETIME 和 TIMESTAMP。

类型

大小bytes)

范围

格式

用途

DATE

3

1000-01-01/9999-12-31

YYYY-MM-DD

日期值

TIME

3

'-838:59:59'/'838:59:59'

HH:MM:SS

时间值或持续时间

YEAR

1

1901/2155

YYYY

年份值

DATETIME

8

1000-01-01 00:00:00/9999-12-31 23:59:59

YYYY-MM-DD HH:MM:SS

混合日期和时间值

TIMESTAMP

4

1970/1/1  0:00:002038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038119日 凌晨 03:14:07

YYYYMMDD HHMMSS

混合日期和时间值,时间戳

3.数据库操作

一个关系型数据库,一般以表的形式显示:

(1)连接数据库

mysql [-h 主机名 -P 端口号] -u 用户名 -p 密码

(2)数据库操作

创建数据库
create database 数据库名称;
删除数据库
drop database 数据库名;
选择数据库
use 数据库名;

显示MySQL管理的所有数据库
SHOW DATABASES;

查看当前打开的数据库
SELECT DATABASE();

(3)数据表操作

CREATE TABLE 表名 (属性名 数据类型 完整性约束条件,

                                       属性名 数据类型 完整性约束条件,        

                                       属性名 数据类型 );

MySQL命令终止符为分号 ;

创建数据表
CREATE TABLE table_name (column_name column_type);
修改表名
Alter table 旧表名 rename 新表名;
删除表
DROP TABLE table_name ;
delete from table_name where field1=new-value;

查看表结构


两种方法:

DESC table_name;
show columns from  table_name;

查看备注信息,显示数据表的属性,属性类型,主键信息,是否为NULL,默认值等其他信息。

show full columns from table_name;

显示数据表的详细索引信息,包括primary key(主键)。

show index from table_name;

tables:表名;

Non_unique:索引能否重复;

Key_name:索引的名称;

Seq_in_index:索引中的序列号,从一开始;

Column_name:列名称;

Collation:列以什么方式存储在索引中。'A'(升序) 或NULL(无分类); Cardinality:索引总唯一的数目的估计值;

Sub_part:如果列只是被部分地编入索引,则为被编入索引地字符地数目。如果整列被编入索引,则为NULL;

Packed:指示关键字如何被压缩。如果没有被压缩,则为NULL; NULL:如果列中含有NULL,则含有YES。如果没有,则该列含有NO;

Index_type:用过地索引方法;

Comment:多种拼注。

(4)修改字段

修改字段的数据类型
Alter table 表名 modify 属性名 数据类型;
修改字段名
Alter table 表名 change 旧属性名 新属性名 新数据类型;
增加字段
Alter table 表名 add 属性名 数据类型 [完整性约束条件]; 
alter table 表名 add foreign key (user_id)  references 主表表名 (字段名);
删除字段
Alter table 表名 drop 属性名;

(5)字段约束

约束条件

说明

PRIMARY KEY

标识该属性为该表的主键

FOREIGN KEY

标识该属性为该表的外键

NOT NULL

标识该属性不能为空

UNIQUE

标识该属性的值是唯一的

AUTO_INCREMENT

标识该属性的值自动增加

DEFAULT

为该属性设置默认值

主键约束(PRIMARY KEY)
  • 每张表只能存在一个主键
  • 主键的作用主要用于保证记录的唯一性
  • 主键约束默认添加非空约束(NOT NULL)
  • 主键值必须唯一
单字段主键:         字段名 数据类型  primary key (默认值)
多字段联合主键:     字段名 数据类型  primary key (字段1,字段2…)
自增约束(AUTO_INCREMENT)
  • 自增约束必须配合主键使用
  • 默认情况下,起始值为1,每次的增加量为1
外键约束(FOREIGN KEY)
  • 值必须为指向的表的主键值。
  • 外键约束主要用于实现一对一,一对多,多对多关系
constraint 外键名 foreign key(字段名1)references 主表名(主列1)
  • 主表(父表):主键所在
  • 从表(子表):外键所在

父表和子表必须使用相同的存储引擎。

外键和参考列的数据类型必须相同。

外键列和参考列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。


唯一约束(UNIQUE)
  • 唯一约束可以保证记录的唯一性
  • 唯一约束的字段可以为空值(NULL)
  • 每张表可以有多个唯一约束
非空约束(NOT NULL)
  • 字段默认为可以为NULL,非空约束的字段不能为NULL
默认约束(DEFAULT)
  • 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。
无符号约束(UNSIGNED)
  • 通过UNSIGNED修饰的整型数只能保存正数

(6)插入语句

insert into table_name(field1, field2,...fieldN) values (value1, value2,...valueN);

可以通过这个,查看数据表数据:

select * from 表名;

(7)update更新

update table_name set field1=new-value1, field2=new-value2;

案例:数据库基础练习题(题目)

在命令行中完成以下操作,写出对应的SQL语句(不需要执行结果):

mysql -u root -p

一、数据库操作

创建一个名为 mydb 的数据库。

create database mydb;

查看所有数据库。

 show databases;

使用 mydb 数据库。

use mydb

查看当前使用的数据库。

select database();

二、创建表

创建班级表 classes,包含:

class_id(整数,主键)

class_name(变长字符串20,非空,唯一)

teacher(变长字符串20,默认值 'TBD')

 create table classes(

    -> class_id int primary key,

    -> class_name varchar(20) not null unique,

    -> teacher varchar(20) default'TBD' );

创建学生表 students,包含:

stu_id(整数,主键)

name(变长字符串20,非空)

gender(固定长度字符串1,默认值 '男')

score(定点数,总位数5,小数2位)

class_id(整数)

create table students(

    -> stu_id int primary key,

    -> name varchar(20) not null,

    -> gender char(1) default'男',

    -> score decimal(5,2),

-> class_id int );

三、查看表结构

查看 students 表的结构。

 desc students;

show columns from students;

查看 students 表的详细列信息(包括注释)。

show full columns from students;

查看 students 表的索引信息。

show index from students;

四、修改表结构

为 students 表增加一个字段 phone,类型 CHAR(11)。

alter table students add phone char(11);

将 students 表中的 gender 字段类型改为 VARCHAR(2)。

alter table students modify gender varchar(2);

将 students 表中的 phone 字段改名为 mobile(类型不变)。

 alter table students change phone mobile char(11);

删除 students 表中的 birth_date 字段(假设已存在)。

alter table students drop birth_date;

将 students 表名改为 stu_info(最后可以改回来)。

 alter table students rename stu_info;

五、插入数据

向 classes 表插入以下三行数据:

(1, '软件技术1班', '王老师')

(2, '大数据2班', '李老师')

(3, '人工智能3班', '张老师')

insert into classes values(1,'软件技术1班','王老师'),(2,'大数据2班','李老师'),(3,'人工智能3班','张老师');

向 students 表插入以下五行数据:

(101, '张三丰', '男', 485.5, 1)

(102, '李思思', '女', 492.0, 1)

(103, '王祖贤', '女', 478.0, 2)

(104, '赵子龙', '男', 505.0, 3)

(105, '孙尚香', '女', 467.5, 2)

insert into students(stu_id,name,gender,score,class_id) values(101,'张三丰','男',485.5,1),(102,'李思思','女',492.0,1),(103,'王祖贤','女',478.0,2),(104,'赵子龙','男',505.0,3),(105,'孙尚香','女',467.5,2);

六、查询验证

查询 students 表中的所有数据。

select * from students;

查询 classes 表中的所有数据。

 select * from classes;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值