这是一个芝士满满的MySQL基础

MySQL基础

前言:

随着互联网技术的高速发展,网民数量的增加带动了网上购物、微博,网络视频等产业的发展。那么,随之而来的就是庞大的网络数据量

大量的数据正在不断产生,那么如何安全有效地存储、检索,管理它们呢?于是对数据的有效存储高效访问方便共享安全控制等问题成为了信息时代一个非常重要的问题。

使用数据库可以高效且条理分明地存储数据,它使人们能够更加迅速和方便地管理数据,主要体现在以下几个方面。

  • 数据库可以对数据进行分类保存,并且能够提供快速的查询。例如,我们平时使用百度搜索内容时,百度也是基于数据库和数据分类技术来达到快速搜索的目的。
  • 可以很好地保证数据有效、不被破坏,而且数据库自身有避免重复数据的功能,以此来降低数据的冗余。
  • 数据库可以满足应用的共享和安全方面的要求,把数据放在数据库中在很多情况下也是出于安全的考虑。
  • 数据库技术能够方便智能化地分析,产生新的有用信息。

MySQL是什么

随着时间的推移,开源数据库在中低端应用中逐渐流行起来,占据了很大的市场份额。开源数据库具有免费使用、配置简单、稳定性好、性能优良等特点,而MySQL数据库正是开源数据库中的杰出代表。
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL 数据库管理系统具有很多的优势,下面总结了其中几种。

  1. MySQL 是开放源代码的数据库

任何人都可以获取该数据库的源代码。这就使得任何人都可以修正 MySQL 的缺陷,并且任何人都能以任何目的来使用该数据库。MySQL 是一款可以自由使用的数据库。

  1. MySQL 的跨平台性

MySQL 不仅可以在 Windows 系列的操作系统上运行,还可以在 UNIX、Linux 和 Mac OS 等操作系统上运行。因为很多网站都选择 UNIX、Linux 作为网站的服务器,所以 MySQL 的跨平台性保证了其在Web应用方面的优势。虽然微软公司的SQL Server数据库是一款很优秀的商业数据库,但是其只能在Windows系列的操作系统上运行。因此,MySQL数据库的跨平台性是一个很大的优势。

  1. 功能强大且使用方便

MySQL 是一个真正的多用户、 多线程 SQL 数据库服务器。它能够快速、有效和安全的处理大量的数据。相对于 Oracle 等数据库来说,MySQL 的使用是非常简单的。MySQL主要目标是快速、健壮和易用。
MySQL 与常用的主流数据库 Oracle、SQL Server 相比,主要特点就是免费,并且在任何平台上都能使用,占用的空间相对较小。
4.MySQL 使用标准的 SQL 数据语言形式。

SQL是什么

对数据库进行查询和修改操作的语言叫做 SQL(Structured Query Language,结构化查询语言)。SQL 语言是目前广泛使用的关系数据库标准语言,是各种数据库交互方式的基础。
SQL 包含以下 4 部分:

  1. 数据定义语言(Data Definition Language,DDL)

用来创建或删除数据库以及表等对象,主要包含以下几种命令:
drop(DROP):删除数据库和表等对象
create(CREATE):创建数据库和表等对象
alter(ALTER):修改数据库和表等对象的结构

  1. 数据操作语言(Data Manipulation Language,DML)

用来变更表中的记录,主要包含以下几种命令:
select(SELECT):查询表中的数据
insert(INSERT):向表中插入新数据
update(UPDATE):更新表中的数据
delete(DELETE):删除表中的数据

  1. 数据查询语言(Data Query Language,DQL)

用来查询表中的记录,主要包含select(SELECT) 命令,来查询表中的数据。

  1. 数据控制语言(Data Control Language,DCL)

用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对数据库中的用户设定权限。主要包含以下几种命令:
grant(GRANT):赋予用户操作权限
revoke(REVOKE):取消用户的操作权限
commit(COMMIT):确认对数据库中的数据进行的变更
rollback(ROLLBACK):取消对数据库中的数据进行的变更

SQL的基本书写规则

在写 SQL 语句时,只要遵守下面几个书写规则,就可以避免很多错误。

  1. SQL 语句要以分号;结尾

SQL 语句是逐条执行的,一条 SQL 语句代表着数据库的一个操作。
我们通常在句子的句尾加注标点表示这句话结束,中文句子以句号。结尾,英文以点号.结尾,而 SQL 语句则使用英文分号;结尾。

  1. SQL 语句不区分大小写

SQL 不区分关键字的大小写。例如,不管写成 SELECT 还是 select,解释都是一样的。表名和列名也是如此。

  1. 单词需要用半角空格或者换行来分隔

SQL 语句的单词之间必须使用半角空格(英文空格)或换行符来进行分隔。没有分隔的语句会发生错误,无法正常执行。

SQL语法操作

SQL库操作

数据库可以看作是一个专门存储数据对象的容器,每一个数据库都有唯一的名称,并且数据库的名称都是有实际意义的,这样就可以清晰的看出每个数据库用来存放什么数据。在 MySQL 数据库中存在系统数据库和自定义数据库,系统数据库是在安装 MySQL 后系统自带的数据库,自定义数据库是由用户定义创建的数据库。

1.创建数据库
-- 选项说明
-- character_set_client
-- 这是用户告诉MySQL查询是用的什么字符集。
create database 库名 [character set utf8];
-- if not exists : 数据库不存在时创建
-- 不存在不会报错
create database if not EXISTS 库名;

数据库命名规则:

可以由字母、数字、下划线、@、#、$
唯一性
不能使用关键字如 create select
不能单独使用数字

2.查看数据库
show databasses;

information_schema:主要存储了系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息和分区信息等。
mysql:MySQL 的核心数据库,主要负责存储数据库用户、用户访问权限等 MySQL 自己需要使用的控制和管理信息。常用的比如在 mysql 数据库的 user 表中修改 root 用户密码。
performance_schema:主要用于收集数据库服务器性能参数。
sys:sys 数据库主要提供了一些视图,数据都来自于 performation_schema,主要是让开发者和使用者更方便地查看性能问题。

3.修改数据库

在 MySQL 数据库中只能对数据库使用的字符集进行修改

alter database 数据库名 charset 字符集名;
4.删除数据库

当数据库不再使用时应该将其删除,以确保数据库存储空间中存放的是有效数据。删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将一同被删除。

drop database [ if exists ] 数据库名;
-- 选项[ if exists ]:当库不存在时不会报错

使用 DROP DATABASE 命令时要非常谨慎,在执行该命令后,MySQL 不会给出任何提示确认信息。DROP DATABASE 删除数据库后,数据库中存储的所有数据表和数据也将一同被删除,而且不能恢复。

5.选择数据库

MySQL 中就有很多系统自带的数据库,那么在操作数据库之前就必须要确定是哪一个数据库。

在 MySQL 中,USE 语句用来完成一个数据库到另一个数据库的跳转。

use 数据库名;

MySQL表操作

表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段

数据表属于数据库,在创建数据表之前,应使用语句“USE<数据库>”指定操作在哪个数据库中进行,如果没有选择数据库,就会抛出 No database selected 的错误。

1. 创建表
create table 表名(
字段名1 类型[(宽度) 字段约束],
字段名2 类型[(宽度) 字段约束],
字段名3 类型[(宽度) 字段约束]
);
'''
注意:
1. 在同一张表中,字段名是不能相同
2. 宽度和约束可选
3. 字段名和类型是必须的
'''
2. 修改表
(1)alter table 表名 执行动作;

修改数据表的前提是数据库中已经存在该表。修改表指的是修改数据库中已经存在的数据表的结构。

# 语法:alter table 表名 执行动作;

# 添加字段(add)
    alter table 表名 add 字段名 数据类型;
    alter table 表名 add 字段名 数据类型 first;
    alter table 表名 add 字段名 数据类型 after 字段名;
# 删除字段(drop)
	delete from# 删除表里全部数据
    alter table 表名 drop 字段名;
# 修改数据类型(modify)
    alter table 表名 modify 字段名 新数据类型;
# 修改字段名(change)
    alter table 表名 change 旧字段名 新字段名 新数据类型;
# 表重命名(rename)
    alter table 表名 rename 新表名;
(2)INSERT:插入数据

数据库与表创建成功以后,需要向数据库的表中插入数据。在 MySQL 中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行数据。

# 1. 插入完整数据(顺序插入)
# 语法一:
INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(1,2,3…值n);

# 语法二:
INSERT INTO 表名 VALUES (1,2,3…值n);

# 2. 指定字段插入数据
INSERT INTO 表名(字段1,字段2,字段3) VALUES (1,2,3);

# 3. 插入多条记录
INSERT INTO 表名 VALUES
(1,2,3…值n),
(1,2,3…值n),
(1,2,3…值n);
(3)UPDATE:修改数据
update 表名 set 字段1=1,字段2=2,... where 条件;
# 注意:update语句后如果不加where条件,所有记录全部更新
(4) DELETE:删除数据
delete from 表名 where 条件;
# 注意:delete语句后如果不加where条件,所有记录全部清空
3. 查看表结构命令

创建完数据表之后,经常需要查看表结构(表信息)。在 MySQL 中,可以使用describe( DESCRIBE) 和show create table( SHOW CREATE TABLE) 命令来查看数据表的结构。

(1)describe(DESCRIBE)
  1. describe(DESCRIBE):以表格的形式展示表结构
    DESCRIBE/DESC 语句会以表格的形式来展示表的字段信息,包括字段名、字段数据类型、是否为主键、是否有默认值等,语法格式如下:
describe 表名;
-- 或简写成
desc 表名;

Null:表示该列是否可以存储 NULL 值。
Key:表示该列是否已编制索引。PRI 表示该列是表主键的一部分,UNI 表示该列是 UNIQUE 索引的一部分
Default:表示该列是否有默认值,如果有,值是多少。
Extra:表示可以获取的与给定列有关的附加信息,如 AUTO_INCREMENT 等。

(2)show create table
  1. show create table(SHOW CREATE TABLE):以SQL语句的形式展示表结构
    HOW CREATE TABLE 命令会以 SQL 语句的形式来展示表信息。和 DESCRIBE 相比,SHOW CREATE TABLE 展示的内容更加丰富,它可以查看表的存储引擎和字符编码;另外,你还可以通过\g或者\G参数来控制展示格式。
show create table 表名;
(3)SELECT:数据表查询语句

在 MySQL 中,可以使用 SELECT 语句来查询数据。查询数据是指从数据库中根据需求,使用不同的查询方式来获取不同的数据,是使用频率最高、最重要的操作。

select * from 表名 [where 条件];
select 字段1,字段2 from 表名 [where 条件];
where子句

where子句在sql语句中扮演了重要角色,主要通过一定的运算条件进行数据的筛选,在查询,删除,修改中都有使用。

算数运算符
请添加图片描述
比较运算符

请添加图片描述
逻辑运算符请添加图片描述

4. 删除表

在 MySQL 数据库中,对于不再需要的数据表,我们可以将其从数据库中删除。

在删除表的同时,表的结构和表中所有的数据都会被删除,因此在删除数据表之前最好先备份,以免造成无法挽回的损失。

使用 DROP TABLE 语句可以删除一个或多个数据表,语法格式如下:

drop table [if exists] 表名1 [ ,表名2, 表名3 ...];

表名1, 表名2, 表名3 …表示要被删除的数据表的名称。DROP TABLE 可以同时删除多个表,只要将表名依次写在后面,相互之间用逗号隔开即可。
IF EXISTS 用于在删除数据表之前判断该表是否存在。如果不加 IF EXISTS,当数据表不存在时 MySQL 将提示错误,中断 SQL 语句的执行;加上 IF EXISTS 后,当数据表不存在时 SQL 语句可以顺利执行,但是会发出警告(warning)。

数据类型

数字类型:

整数类型:INT,SMALLINT,TINYINT,MEDIUMINT,BIGINT
浮点类型:FLOAT,DOUBLE,DECIMAL
比特值类型:BIT

请添加图片描述

字符串类型:

普通字符串: CHAR,VARCHAR

存储文本: text

存储二进制数据: BLOB

存储选项型数据:ENUM,SET请添加图片描述

char:定长,即指定存储字节数后,无论实际存储了多少字节数据,最终都占指定的字节大小。默认只能存1字节数据。存取效率高。
varchar:不定长,效率偏低 ,但是节省空间,实际占用空间根据实际存储数据大小而定。必须要指定存储大小 varchar(50)
enum用来存储给出的多个值中的一个值,即单选,enum(‘A’,‘B’,‘C’)
set用来存储给出的多个值中一个或多个值,即多选,set(‘A’,‘B’,‘C’)

字段约束

非空约束(NOT NULL)

非空约束(NOT NULL)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。

默认值(DEFAULT)

默认值约束(Default Constraint),用来指定某列的默认值。在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认值。

唯一约束(UNIQUE KEY)

唯一约束(Unique Key)是指所有记录中字段的值不能重复出现。例如,为 id 字段加上唯一性约束后,每条记录的 id 值都是唯一的,不能出现重复的情况。如果其中一条记录的 id 值为‘0001’,那么该表中就不能出现另一条记录的 id 值也为‘0001’。

主键(PRIMARY KEY)

主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。为了便于更快的查找到表中的记录,都会在表中设置一个主键。

auto_increment

约束字段为自动增长,被约束的字段必须同时被key约束。一般用于主键

时间类型数据

日期 : DATE
日期时间: DATETIME,TIMESTAMP
时间: TIME
年份 :YEAR

时间格式

date"YYYY-MM-DD"
time"HH:MM:SS"
datetime"YYYY-MM-DD HH:MM:SS"
timestamp"YYYY-MM-DD HH:MM:SS"

注意:
1.datetime :以系统时间存储
2.timestamp :以标准时间存储但是查看时转换为系统时区,所以表现形式和datetime相同

  • 日期时间函数

now() 返回服务器当前日期时间,格式对应datetime类型
curdate() 返回当前日期,格式对应date类型
curtime() 返回当前时间,格式对应time类型

  • 时间操作

时间类型数据可以进行比较和排序等操作,在写时间字符串时尽量按照标准格式书写。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值