(MySQL学习笔记)1、SQL基础

本文介绍了数据库的基础概念,包括数据库作为数据容器的优势、基本术语以及表、行、列和主键的概念。详细讲解了SQL语言,强调其易学性和通用性,并分类介绍了DQL、DML、DDL和DCL。此外,还详细阐述了SQL中的数据类型,如整型、浮点型、定点型、字符型和日期型。最后,讨论了SQL变量的分类和使用方法,包括系统变量和自定义变量。
摘要由CSDN通过智能技术生成

1、数据库基础

数据库(DB):保存有组织的数据的容器

1.1 保存数据的容器

主要包括

  1. 数组、集合(内存):断电数据易失
  2. 文件、文件夹(外存、硬盘):不易查询
  3. 数据库:保存有组织的数据的容器

1.2 使用数据库的好处

  1. 易于实现数据的持久化

  2. 易于查询

  3. 数据的共享性高、冗余性低

  4. 有较高的数据独立性

    数据独立性:指应用程序与数据库的数据结构之间相互独立,体现为:逻辑独立性与物理独立性。由数据库的三级模式、两层映像结构保证

  5. 有统一的数据控制功能

1.3 基本术语

  • 数据库DB:保存有组织的数据的容器,长期存储在计算机内、有组织、可共享的大量数据的集合
  • 数据库管理系统DBMS:又称数据库软件,是位于用户与操作系统之间的一层数据管理软件,数据库是通过DBMS创建和操纵的。
  • 数据库系统DBS:由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成
  • 数据库管理员DBA:操作数据库软件的成员

1.4 表、行、列、主键

1.4.1 表(table)

定义:某种特定类型数据的结构化清单,即一种结构化的文件,用来存储某种特定类型的数据。

关键:数据都是存放在表中,表再放到库中。

注意:

  1. 存储在表中的数据可以是一种类型的数据,或一个清单(包含多种数据类型的数据)
  2. 表名:每个表都有唯一的名字,用来标识自己。
  3. 同一个数据库不能两次使用相同的表名,不同的数据库可以使用相同的表名

1.4.2 列(column)、数据类型

列(字段):表由字段组成。

每一列都存储着一条特定的信息(事物的一个属性),如:学生表,一个列存储学号,一个列存储姓名…

每个列都由相同的数据类型,数据类型定义列可以存储的数据种类

1.4.3 行(row)

行:表中的一个记录。表中的数据都是按行存储的,表中的行数为记录的总数。

行=记录=元组,用来描述一个具体的事物。

1.4.4 主键(primary key)

表中的每一行都应该有可以唯一标识自己的一列(或一组列),即主键。

注:主键是一列,其值可以唯一的区分每个行。即主键能唯一标识事物的信息。

  1. 任意两行都不能有相同的主键值
  2. 每一行都必须有一个主键值,主键列不允许出现null值

2、 什么是SQL

SQL:结构化查询语言,专门用来与数据库进行通信的语言

2.1 SQL的优点

  • 简单易学。所有语句都是由简单的英语单词组成,且单词数目不多
  • SQL不是某个特定数据库的专用语言。几乎所有的DBMS都支持SQL
  • SQL是一种强有力的语言,可进行非常复杂和高级的数据库操作

2.2 SQL语言分类

  • DQL数据查询语言:用于数据的查询

    • 查询:SELECT
  • DML数据操纵语言:用于添加、删除、修改、查询数据库记录,并检查数据完整性

    • 添加(插入):INSERT、修改(更新):UPDATE、删除:DELETE
  • DDL数据定义语言:用于逻辑结构(库、表、视图、索引)的创建、修改、删除

    • 创建:CREATE、修改:ALTER、删除:DROP
  • DCL数据控制语言:用于定义用户的访问权限和安全级别

    • 授权:GRANT、取消权限:REVOKE、提交:COMMIT、回滚:ROLLBACK

3、SQL数据类型

3.1 整型

数据类型字节
TinyInt1
SmallInt2
MediumInt3
Int4
BigInt8

设置无符号

CREATE TABLE tab_int (
	t1 INT,#默认   有符号
    t2 INT UNSIGNED #无符号
);

#若插入的数据超出临界值,则会报错误
INSERT INTO tab_int VALUES(12312331231,1111111111);

#有符号INT默认长度为11,无符号INT默认长度为10

3.2 浮点型 \定点型

3.2.1 浮点型

FLOAT4
DOUBLE8

3.2.2 定点型

DECIMAL(M,D)M+2

M代表 小数+整数的最大总长度(有效长度),D代表 保留几位小数

测试

CREATE TABLE tab_flo (
    t1 FLOAT(5 , 2 ),
    t2 DOUBLE(5 , 2 ),
    t3 DECIMAL(5 , 2 )
);
SELECT * FROM tab_flo;

INSERT INTO tab_flo VALUES(123.45,123.45,123.45);
INSERT INTO tab_flo VALUES(123.456,123.456,123.456);
INSERT INTO tab_flo VALUES(123.4,123.4,123.4);
INSERT INTO tab_flo VALUES(12.45,12.45,12.45);
INSERT INTO tab_flo VALUES(1234.45,1234.45,1234.45);#Error Code: 1264. Out of range value for column 't1' at row 1

结果:
在这里插入图片描述

3.3 字符型

使用char 和varchar 存储较短的字符串

字符串类型最多字符数存储需求说明
CHAR(M)M 默认为1M为0-255之间的整数固定长度的字符串
VARCHAR(M)M 不可省略M为0-65535之间的整数可变长度的字符产
ENUM存储枚举数据
SET

3.4 日期型

数据类型说明
DATE格式:YYYY-MM-DD
TIME格式:HH:MM:SS
DATETIMEDATE与TIME的组合
TIMESTAMP功能与DATETIME相同,但范围较小

3.5 二进制

BLOB主要用于存储声音、图像

4、SQL变量

4.1 分类

  • 系统变量:系统提供的,属于服务器层面,有默认值
    • 全局变量 GLOBAL
    • 会话变量 SESSION
  • 自定义变量:用户自定义的
    • 用户变量:当前会话有效
    • 局部变量:仅仅在其定义它的begin end中有效

4.2 使用语法

4.2.1 系统变量的使用

#查看所有的系统变量
SHOW VARIABLES;
#查看所有的全局变量
SHOW GLOBAL VARIABLES;
#查看所有的会话变量
SHOW SESSION VARIABLES;

#查看指定的某个系统变量值
SELECT @@autocommit;
SELECT @@global.autocommit;
SELECT @@session.autocommit;

#为某个具体的系统变量复制
SET GLOBAL autocommit = 0;
SET @@autocommit = 1;#默认为session级别
#等价
SET @@session.autocommit = 1

4.2.2 自定义变量的使用

#用户变量声明并初始化
SET @用户变量名 :=值;
SELECT @用户变量名 :=值;

#赋值 
SET @name = 值;#赋的值是什么类型,该用户变量就是什么类型
#或 
SELECT 字段 INTO @用户变量名 FROM 表;

#例:将个数赋值个@count
SELECT COUNT(*) INTO @count FROM employees;

#查看
SELECT @用户变量名;
#局部变量
#声明
DECLARE 变量名 类型;
#初始化
DECLARE 变量名 类型 DEFAULT 初始值;

#赋值
SET 局部变量名 = 值;
SELECT 字段 INTO 用户变量名 FROM 表;

4.3 注意

  1. 更改的全局变量在其他的sql连接中,依然有效。
  2. 服务器每次启动都将会为全局变量赋初始值,针对所有的会话(连接)都有效。但不能跨重启
  3. 会话变量 仅在当前的会话有效,而全局变量针对所有的会话都有效
  4. 局部变量 只能声明在begin end块中的第一句
  5. 用户变量加@,不限制类型 局部变量不用加@,须限制变量类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值