Mysql数据库基础

SQL基础

对数据库进行查询和修改操作的语言叫做SQL(Structured Query language, 机构化查询语言)。

SQL是一种数据库查询和程序设计的语言,用于存取数据以及查询,更新和管理关系数据库系统。

1、数据定义语言(Date Definition Language, DDL)

用来创建和删除数据库以及表 等对象

  • DROP : 删除
  • CREATE : 创建
  • ALTER : 修改

2、数据操作语言(Date Manipulation Language, DML)

用来变更表中的记录

  • SELECT : 查询表数据
  • INSERT : 向表中插入新数据
  • UPDATE : 更新表数据
  • DELETE : 删除表数据

3、数据查询语言(Date Query language , DQL)

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

4、数据控制语言(Date Control language, DCL)

用来确认或者取消对数据库中的数据进行的变更。还可以对数据库中的用户设定权限

  • GRANT : 赋予用户操作权限
  • REVOKE : 取消用户的操作权限
  • COMMIT : 确认对数据库中的数据进行的变更
  • ROLLBACK : 取消对数据库中的数据进行的变更

5、数据库所有的命令可以跨行书写,但是必须一“ ; ” , 英文的分号结束

数据库操作

1、查看数据库

在MYSQL中,使用 SHOW DATABASES 语句来查看或显示当前用户权限范围以内的数据库

//语法格式
SHOW DATABASES [LIKE '数据库名'];
//常用查看所有数据库
SHOW DATABASES;
SHOW DATABASES LIKE '%A';  	//查看以A结尾的数据库
SHOW DATABASES LIKE 'A%';	//查看以A开头的数据库
SHOW DATABASES LIKE '%A%';	//查看包含A的数据库	

LIKE “数据库名” : 可选项,用于匹配指定的数据库名称,完全匹配和部分匹配,数据库名用’ ’

2、创建数据库

在MYSQL中,使用CREATE DATABASE 语句来创建数据库

MYSQL不允许在同一系统下创建两个相同名称的数据库

CREATE DATABASE [IF NOT EXISTS] <数据库名>
	[[DEFAULT] CHARACTER SET <字符集名>]
	[[DEFAULT] COLLATE <校对集名>];

数据库名 : 数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头

if not exists : 在创建数据库之前进行判断,只有数据库不存在时才执行创建操作。

[default] character set : 指定数据库字符集,不指定使用系统默认字符集

[default] collate : 指定字符集的默认校对规则

CREATE DATABASE IF NOT EXISTS test01;

3、修改数据库

只能对数据库使用的字符集和校对规则进行修改,数据库的这些特性都存储在db.opt文件中

ALTER DATABASE [数据库名]
	[[DEFAULT] CHARACTER SET <字符集名>] | [[DEFAULT] COLLATE <校对集名>];

alter database 用于更改数据库的全局特性

4、删除数据库

DROP DATABASE [IF EXISTS] <数据库名>;

if exists : 用于防止当数据库不存在时发生的错误

drop database : 删除数据库中所有的表格并同时删除数据库

5、选择数据库

USE <数据库名>;

在mysql中,use语句用来选择当前的操作的数据库,直到遇到下一个use

use语句用来完成数据库到数据间的跳转

当使用 create database 后,数据库不会作为当前数据库,需要使用use指定

6、注释

#单行注释
-- 单行注释,-- 注释符后加个空格才生效
/*多行注释
	mysql 不限制注释的数量
*/

数据类型

mysql数据类型大概分为5中

  • 数值类型

    整数类型和浮点数类型统称为数值数据类型

    整数类型 :TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT

    浮点数类型 : FLOAT、DOUBLE

    定点数类型 : DECLMAL

  • 日期/时间类型

    YEAR、TIME、DATE、DATETIME、TIMESTAMP

  • 字符串类型

    CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM、SET、…

  • 二进制类型

    BIT、BINARY、BINARY、VARBINARY、BLOB、MEDIUMBLOB、LONGBLOB

1、整数类型

整数类型又称数值型数据,主要用来存储数字

不同的整数类型有不同的取值范围,并且需要不同的存储空间,应根据实际需要选择合适的类型,这样有利于提高查询的效率和节省存储空间

类型名称 说明 存储需求
TINYINT -128〜127 0 〜255
SMALLINT -32768〜32767 0〜65535
MEDIUMINT -8388608〜8388607 0〜16777215
INT (INTEGER) -2147483648〜2147483647 0〜4294967295
BIGINT -9223372036854775808〜9223372036854775807 0〜18446744073709551615
TINYINT			1个字节	
SMALLINT		2个字节	
MEDIUMINT		3个字节	
INT(integhr)	4个字节	
BIGINT			8个字节	

整数类型字段可以添加 AUTO_INCREMENT 自增约束条件

提示: 显示宽度和数据类型的取值范围无关的。显示宽度只是指明MySQL最大可能显示的数字个数,数值的位数小于指定的宽度是会有空格填充。如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能够显示出来

2、小数类型

MySQL中使用浮点数和定点数来表示小数

浮点类型分为两种:

​ 单精度浮点数 : FLOAT 双精度浮点数: DOUBLE

​ 定点类型 : DECIMAL

FLOAT					4个字节
DOUBLE					8个字节
DECIMAL(M, D) /DEC		M+2个字节

浮点数取值范围 M(1~255) 和 D(1~30) M表示宽度,D表示小数位数

decimal 默认D为0,M为10;

注意:

​ 不论是定点还是浮点类型,如果用户指定的精度超出精度范围,则会四舍五入进行处理

​ 在MySQL中,定点数以字符串形式存储,在对精度要求比较高的时候,使用decimal类型比较好

​ 两个浮点数进行减法和比较运算时也容易出问题,尽量避免做浮点数的比较

3、日期和时间类型

每一个类型都有合法的取值范围,当指定不合法的值时,系统将“零”值出入数据库中

类型名称 日期格式 日期范围 存储需求
YEAR YYYY 1901 ~ 2155 1 个字节
TIME HH:MM:SS -838:59:59 ~ 838:59:59 3 个字节
DATE YYYY-MM-DD 1000-01-01 ~ 9999-12-3 3 个字节
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 8 个字节
TIMESTAMP YYYY-MM-DD HH:MM:SS 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC 4 个字节
YEAR		YYYY					1个字节
TIME		HH:MM:SS				3个字节
DATE		YYYY-MM-DD				3个字节
DATETIME	YYYY-MM-DD HH:MM:SS		8个字节
TIMESTAMP	YYYY-MM-DD HH:MM:SS		4个字节
  • YEAR

    year 类型是一个单字节类型,表示年

    • 以4位字符串或4位数字表示year, 范围’1901’ ~ ‘2155’

    • 以2位字符串格式表示year : ‘00’~‘69’ ->2000~2069 ‘70’ ~ ‘99’ -> 1970~1999

      ​ 超过取值范围的值被转换为2000

    • 以两位数字表示YEAR, 1~69 ->2001~2069 70~99 -> 1970~1999

  • TIME

    HH:MM:SS HH表示小时,MM表示分钟,SS表示秒

    TIME 类型的取值范围为 -838:59:59~838:59:59,小时部分如此大的原因是 TIME 类型不仅可以用于表示一天的时间(必须小于 24 小时),还可能是某个事件过去的时间或两个事件之间的时间间隔(可大于 24 小时,或者甚至为负)

  • DATE

    DATE 类型用于仅需要日期值时,没有时间部分,在存储时需要 3 个字节。日期格式为 ‘YYYY-MM-DD’,其中 YYYY 表示年,MM 表示月,DD 表示日。

  • DATETIME

  • TIMESTAMP

4、字符串类型

字符串类型用来存储字符串数据,还可以存储图片和声音的而精致数据。字符串可以区分或者不区分大小写的串比较,还可以使用正则表达式进行匹配查找

MySQL 中的字符串类型有 CHARVARCHARTINYTEXTTEXTMEDIUMTEXTLONGTEXTENUMSET 等。

CHAR(M)		固定的长度非二进制字符串
VARCHAR(M)	变长非二进制字符串
TINYTEXT	非常小的非二进制字符串
TEXT		小的非二进制字符串
MEDIUMTEXT	中等大小的非二进制字符串
LONGTEXT	大的非二进制字符串
ENUM		枚举类型,只能有一个枚举字符串值
SET			一个设置,字符串对象可以有零个或多个SET成员

VARCHAR 和 TEXT 类型是变长类型,其存储需求取决于列值的实际长度,而不是取决于类型的最大可能尺寸。

  • CHAR 、VARCHAR

    CHAR(M) 为固定长度字符串,在定义时指定字符串列长。当保存时,在右侧填充空格以达到指定的长度。M 表示列的长度,范围是 0~255 个字符。

    VARCHAR(M) 是长度可变的字符串,M 表示最大列的长度,M 的范围是 0~65535。VARCHAR 的最大实际长度由最长的行的大小和使用的字符集确定,而实际占用的空间为字符串的实际长度加 1。

  • TEXT

    EXT 列保存非二进制字符串,如文章内容、评论等。当保存或查询 TEXT 列的值时,不删除尾部空格。

    TEXT 类型分为 4 种:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。不同的 TEXT 类型的存储空间和数据长度不同。

    • TINYTEXT 表示长度为 255(28-1)字符的 TEXT 列。
    • TEXT 表示长度为 65535(216-1)字符的 TEXT 列。
    • MEDIUMTEXT 表示长度为 16777215(224-1)字符的 TEXT 列。
    • LONGTEXT 表示长度为 4294967295 或 4GB(232-1)字符的 TEXT 列。
  • E

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值