首页 > 数据库 >MySQL基础

MySQL基础

时间:2024-06-18 16:04:32浏览次数:28  
标签:语句 00 01 字节 数据库 基础 MySQL 长度

数据库基础知识

数据库基础概念

(1)数据库(Database,简称DB):数据库是存放数据的仓库,是长期储存在计算机内、有组织有结构的、可共享的数据集合。

(2)数据库管理系统(Database Management System,简称DBMS):数据库管理系统是为数据库的建立、使用和维护而配置的数据库管理软件,它位于用户与操作系统之间,以保证数据库的安全性和完整性。如MySQL就是DBMS。

(3)数据库应用系统(Database Application Systems,简称DBAS):数据库应用系统是基于数据库的应用软件,例如QQ、微信、淘宝、股票信息系统、学生管理系统、财务管理系统等。DBAS由两部分组成,分别是数据库和应用程序。数据库由数据库管理系统创建,二应用程序可以由任何支持数据库编程和程序设计语言编写,如Java、C#\PHP等语言。

数据库系统的构成图

SQL语言的组成

1.数据查询语言(Data Query Language,DQL)主要用于查询数据。
例如,使用SELECT语句可以查询数据库中的一条数据或多条数据。
2.数据操作语言(Data Manipulation Language,DML)主要用于对数据进行添加、修改和删除操作。
例如,INSERT语句、UPDATE语句、DELETE语句。

3.数据定义语言(Data Definition Language,DDL)主要用于定义数据库、表等。
例如,CREATE语句、ALTER语句、DROP语句等。
4.数据控制语言(Data Control Language,DCL)主要用于控制用户的访问权限。
例如,GRANT语句、REVOKE语句、COMMIT语句、ROLLBACK语句。

SQL语言的主要特点

1.SQL语言功能强大,风格统一,直观简捷,易学易用
SQL语言集四类功能语言于一体,可以独立完成数据库生命周期中的全部活动,包括建立数据库、定义关系模式、录入数据、查询、更新、维护数据、数据库重构、数据库安全性控制等一系列操作要求,这为数据库应用系统开发提供了良好的环境,例如用户在数据库投入运行后,还可根据需要随时地逐步地修改模式,并不影响数据库的运行,从而使系统具有良好的可扩充性。

2.高度非过程化
非关系数据模型的数据操纵语言是面向过程的语言,用其完成某项请求,必须指定存取路径。而用SQL语言进行数据操作,用户只需提出“做什么”,而不必指明“怎么做”,因此用户无需了解存取路径,存取路径的选择以及SQL语句的操作过程由DBMS自动完成,这不但大大减轻了用户负担,而且有利于提高数据独立性。

3.面向集合的操作方式
SQL语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。非关系数据模型采用的是面向记录的操作方式,任何一个操作其对象都是一条记录,例如查询所有平均成绩在80分以上的学生姓名,用户必须说明完成该请求的具体处理过程,即如何用循环结构按照某条路径一条一条地把满足条件的学生记录读出来。

4. 既是自含式语言,又是嵌入式语言,以同一种语法结构提供两种使用方式
作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C#、JAVA、PHP)程序中,供程序员设计程序时使用。而在两种不同的使用方式下,SQL语言的语法结构基本上是一致的,这种以统一的语法结构提供两种不同的使用方式的作法,为用户提供了极大的灵活性与方便性。

MySQL的常用命令

命令简写具体含义
(\?)显示帮助信息
clear(\c)清除当前输入语句
connect(\r)连接到服务器,可选参数数据库和主机。
delimiter(\d)设置语句分隔符。
ego(\G)发送命令到mysql服务器,并显示结果。
exit(\q)退出MySQL
go(\g)发送命令到mysql服务器。
help(\h)显示帮助信息
notee(\t)不能将数据导出到文件中
print(\p)打印当前命令
prompt(\R)改变mysql提示信息。
quit(\q)退出MySQL
rehash(\#)重建完成散列,用于表名自动补全。
source(\.)执行一个SQL脚本文件,以一个文件名作为参数。
status(\s)从服务器获取MySQL的状态信息。
tee(\T)设置输出文件,将所有信息添加到给定的输出文件。
use(\u)选择一个数据库使用,参数为数据库名称。
charset(\C)切换到另一个字符集
warnings(\W)每一个语句之后显示警告。
nowarning(\w)每一个语句之后不显示警告。

MySQL数据类型

整数型

数据类型字节数无符号数的取值范围有符号数的取值范围
TINYINT10~255-128~127
SMALLINT20~65535-32768~32767
MEDIUMINT30~16777215-8388608~8388607
INT40~4294967295-2147483648~2147483647
BIGINT80~18 446 744 073 709 551 615-9 223 372 036 854 775 808~
9 223 372 036 854 775 807

无符号数据类型:使用unsigned关键字修饰,取值范围不包含负数。

示例:“int”有符号int类型;“int unsigned”无符号int类型。

浮点数型和定点数型

数据类型字节数无符号数的取值范围有符号数的取值范围
FLOAT40 和
1.175 494 351E-38 ~
3.402 823 466E+38
-3.402 823 466E+38 ~
-1.175 494 351E-38
DOUBLE8

0 和
2.225 073 858 507 201 4E-308 ~

1.797 693 134 862 315 7E+308

-1.797 693 134 862 315 7E+308 ~
-2.225 073 858 507 201 4E-308

DECIMAL(M,D)

或DEC(M,D)

 M+2

0 和
2.225 073 858 507 201 4E-308 ~

1.797 693 134 862 315 7E+308

-1.797 693 134 862 315 7E+308 ~
-2.225 073 858 507 201 4E-308

1.在MySQL中使用浮点数类型和定点数类型来表示小数,浮点数类型包括单精度浮点数(float
型)和双精度浮点数(double型),定点数类型就是decimal型;


2.m为全长(小数点和符号不计),d为小数点后长度, m和d又称为精度和标度;


3.decimal型的取值范围与double相同,但是decimal的有效取值范围由m和d决定,而且decimal型的字节数是m+2,即定点数的存储空间是根据其精度决定的。

日期和时间型

数据类型字节数

取值范围

日期格式零值
YEAR11901~2155YYYY0000
DATE41000-01-01~9999-12-3YYYY-MM-DD0000-00-00
TIME3-838:59:59~838:59:59HH:MM:SS00:00:00
DATETIME81000-01-01 00:00:00~
9999-12-31 23:59:59
YYYY-MM-DD
HH:MM:SS
0000-00-00 00:00:00
TIMESTAMP41970-01-01 00:00:01~
2038-01-19 03:14:07
YYYY-MM-DD
HH:MM:SS
0000-00-00 00:00:00

YEAR型格式:4位字符串或数字,如输入'2020'或 2020,插入到数据'或'20200121',插入数据库中的日期都为2020-01-21。 日期中的分隔符“-”,还可以用“.”“,”“/”等符号替代。


TIME型格式:字符串'HH:MM:SS'、'HHMMSS'或数字 HHMMSS,例如:输入'34:54:54'、'345454'或345454,插入数据库中的时间为:34:54:54(34小时54分54秒) ;特殊格式: 'D HH:MM:SS',D表示日,可以取 0~34 之间的值,插入数据时,小时的值等于 D×24+HH。例如:输入'2 11:30:50',插入数据库中的时间为59:30:50

DATETIME型格式1:'YYYY-MM-DD HH:MM:SS'或'YYYYMMDDHHMMSS'或
YYYYMMDDHHMMSS 。例如:输入'2014-01-22 09:01:23' 或 '20140122090123'或
20140122090123,插入数据库中的值都为 2014-01-22 09:01:23


DATETIME型格式2:'YY-MM-DD HH:MM:SS'或'YYMMDDHHMMSS'或
YYMMDDHHMMSS,YY取值范围为 '00'~'99' ('00'~'69' 范围的值会被转换为2000~2069范围的值,'70'~'99' 范围的值会被转换为1970~1999范围的值)。例如:插入'14-01-22 09:01:23' 或 '140122090123'或140122090123 ,插入数据库中的都为 2014-01-
22 09:01:23


TIMESTAMP(时间戳)型格式:与DATETIME相同,但取值范围比DATETIME小。特别注意:当无任何输入,或输入NULL时,实际保存的是系统当前日期和时间。

系统函数应用
NOW()获取当前系统的日期和时间
CURRENT_TIMESTAMP
CURDATE()获取当前系统日期
CURRENT_DATE
CURTIME()获取当前系统时间
CURRENT_TIME

字符串型

字符串型存储范围类型说明
CHAR0-255字符固定长度字符串
VARCHAR0-65535 字节可变长度字符串
TINYTEXT0-255字节短文本字符串
TEXT0-65 535字节长文本数据
MEDIUMTEXT0-16 777 215字节中等长度文本数据
LONGTEXT0-4 294 967 295字节极大文本数据
BIT1-64个bit用来存储bit值:0或1
BINARY0-255字节固定长度的二进制文本数据
VARBINARY0-65535字节可变长度的二进制文本数据
TINYBLOB0-255字节不超过 255 个字符的二进制字符串
BLOB0-65 535字节二进制形式的长文本数据
MEDIUMBLOB0-16 777 215字节二进制形式的中等长度文本数据
LOGNGBLOB0-4 294 967 295字节二进制形式的极大文本数据

CHAR类型和VARCHAR类型

基本语法:列名称 char(L) 或varchar(L)
语法说明:L表示字符串的最大长度,即最大字符数(中文与英文字母一样)。实际需要多少存储空间(字节数)取决于所使用的字符集,一个英文字母或常用字符通常占用一个字节,一个中文在gbk编码方式占用2个字节、在utf8编码方式占用3个字节的空间。
char:存储固定长度的字符串,如果字符串长度不足L,则存储时在右边填充空格补齐,以达到指定长度L。
varchar :存储可变长度的字符串,长度可以在0到L之间变化,存储时需要额外增加一个或两个字节存储字符串长度,超过255的长度需要额外增加2个字节。
char和varchar后面如果有空格:char会自动去掉空格后存储,但取值时会把存值后面的空格去除掉;varchar存储时不会去掉空格,取值时后面有空格会保留,但在进行字符串比较时,会去掉空格进行比较。
相同点:在存储或检索过程中都不进行大小写转换。

BINARY和VARBINARY类型

binary和varbinary类型类似于char和varchar,不同的是它们存储的是二进制字节字符串。
基本语法:列名称 binary(L) 或者 varbinary(L)
语法说明:L表示字符串的最大长度,即最大字节数。实际存储时,一个英文字母或常用字符通常占用一个字节,一个中文占用3个字节。
binary:存储固定长度的字符串,如果不足最大长度L,则存储时在右边填充"\0"补齐,以达到指定长度L。例如,指定列数据类型为binary(3),当插入a时,实际存储的值为"a\0\0",当插入ab时,实际存储的值为"ab\0",无论插入的值是否达到指定的长度,实际存储空间均为指定的长度。
varbinary:存储可变长度的字符串,长度可以在0到L之间变化,实际存储空间为插入值的实际长度加1或2,超过255的长度加2。例如,指定列数据类型为varbinary(10),如果插入的值长度只有6,则实际存储空间为6加1。

TEXT、BLOB和BIT(位)类型

blob是一个二进制大对象,可以容纳可变数量的数据;有4种blob类型,它们只是可容纳值的最大长度不同。有4种text类型,这些对应4种blob类型,有相同的最大长度和存储需求。

text与blob均为大数据类型:当内容很多的时候,会保留一个指针在记录中,这个指针指向了磁盘中的一块区域;
text只能储存纯文本文件,blob可以储存图片、声音文件等二进制数据;
在大多数情况下,可以将text列视为varchar列,可以将blob列视为足够大的varbinary列。 而varbinary常用于存放小图标。

bit列存储的值只有0和1;如果手工指定bit值,则可以使用b'value'格式,比如b'111'和 b'10000000'分别代表7和128。

标签:语句,00,01,字节,数据库,基础,MySQL,长度
From: https://blog.csdn.net/2301_82066425/article/details/139773433

相关文章

  • 前端面试题-基础篇(一)
    最近在准备面试,搜集了一些偏基础的面试题,简单记录一下。1、列举一些常用的ES6新特性1、const、let(块级作用域{})不存在变量提升,不能在变量声明之前使用,且只在当前作用域有效,避免了全局命名冲突let用来声明变量,const用来声明常量,const声明的值不能被修改(对于引用类型,指的是......
  • Golang语言基础超详细教程&备忘录
    作者的话:这篇文章是之前刚从Java转到Go,学习时编写的,力求全面且详细。本文是基础内容,适合初学者,也适合老手用来当备忘录。和网上其他文档不同的是,我陆陆续续将很多小的知识点也补进来了,后续也会继续补充。这篇文章开始是我写在本机,然后又改写到自己的个人博客,现在有誊写到CSDN,......
  • sklearn解释和详细基础教程
    Scikit-learn(简称sklearn),是一个基于Python的开源机器学习库,广泛用于数据挖掘和数据分析。以下是对sklearn的解释和基础教程的详细说明:Scikit-learn解释Scikit-learn建立在其他几个流行的科学计算库之上,包括NumPy、SciPy和matplotlib。它提供了一个统一的界面来使用机器学......
  • MySQL动态权限详解
    MySQL数据库系统在管理用户访问控制时,除了传统的静态权限之外,还引入了动态权限的概念。动态权限机制为系统管理员提供了更为灵活和细致的权限管理方式,允许根据运行时环境和特定组件的需求来定义和授予权限。本文将深入探讨MySQL动态权限的特性和应用方法。动态权限的基本概念......
  • 【MySQL】复合查询和内外连接
    文章目录MySQL复合查询和内外连接1.复合查询1.1多表查询1.2自连接1.3子查询单行子查询多行子查询多列子查询from中使用子查询合并查询2.内外连接1.INNERJOIN2.LEFTJOIN3.RIGHTJOIN4.FULLJOIN5.CROSSJOINMySQL复合查询和内外连接1.复合查询1.1......
  • JQuery基础28_选择器2
    一、作用筛选具有相似特征的元素(标签)二、基本操作学习1、事件绑定//1.获取b1按钮$("#b1").click(function(){alert("abc");});2、入口函数$(function(){});window.onload和$(function)区别window.onload只能定义一......
  • MySQL:创建账户及修改密码
    1、创建账户MySQL5.8:grantallprivilegeson*.*totst@%identifiedby'123456';MySQL8.0:createuser'tst'@'%'identifiedby'123456';grantallprivilegeson*.*to'tst'@'%'withgrantoption;......
  • JQuery基础28_入门1
    一、概念一个JavaScript框架。简化JS开发jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨 是“writeLess,DoMore”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便......
  • mysql数据库名带下划线等特殊字符时,分权限报错
    原文链接:mysql数据库名带下划线分权限报错_mob64ca12f24f3a的技术博客_51CTO博客 MySQL数据库名带下划线分权限报错解析在使用MySQL进行数据库操作时,我们经常会遇到数据库名带下划线导致权限报错的情况。这是因为MySQL对于数据库名中的下划线有特殊的处理机制,容易导致权限控制......
  • MySQL入门学习.子查询.IN
        IN子查询是MySQL中一种常见的子查询类型,用于在查询中确定一个值是否在另一个查询的结果集中。IN子查询的特点是简洁明了,它可以在一个查询中方便地检查一个值是否在一组值中,非常适用于需要进行条件验证或关联查询的情况。   在MySQL中,有以下几种常见的......