目录
一、SQL语句
二、数据库简介
三、关系型数据库
四、MySQL 安装
五、MySQL 管理
5.1 用户设置
5.1.1 创建用户
5.1.2 用户授权
5.2 管理命令
六、MySQL 数据结构
6.1 Text 类型
6.2 Number 类型
6.3 Date 类型
七、MySQL 库&表操作
7.1 库操作
7.1.1 创建库
7.1.2 删除库
7.1.3 选择库
7.2 表操作
7.2.1 创建表
7.2.2 删除表
7.2.3 查询表
7.3 数据操作
7.3.1 插入数据
7.3.2 查询数据
7.3.3 更改数据
参考:
MariaDB / MySQL数据类型-阿里云开发者社区 (aliyun.com)
MariaDB 教程_w3cschool
MySQL 教程 | 菜鸟教程 (runoob.com)
MariaDB Server Documentation - MariaDB Knowledge Base
可以把 SQL 分成两个部分:数据操作语言(DML)和数据定义语言(DDL)
SQL 适用于执行查询的语法。但是 SQL 语言也包含用于增删改查的语法。
增删改查语句构成 SQL 的 DML 部分:
SELECT - 查询
UPDATE - 更改
DELETE - 删除
INSERT INTO - 增加
创建删除表格,定义索引(键),规定表间链接和设定约束的 DDL 语句:
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
数据库(DataBase)是按照数据结构来组织、存储和管理数据的仓库。
每个数据库都有一个或多个不同的API用于对数据的增删改查。
RDBMS(Relational DataBase Management System),关系型数据库。
关系型数据库的一些术语:
数据库(DataBase):数据库是表的集合,可以理解为用来存放数据表的仓库。
数据表(Table):表是数据的矩阵,看起来就像一个简单的Excel表格。
列(Column):一列相同类型的数据。
行(Row):一组相关的数据。
主键(Primary Key):主键是唯一的,一个数据表中只能包含一个主键,可以使用主键来查询数据。
外键(Foreign key):外键用于关联两个表。
复合键(Composite key):复合键将多个列作为一个索引键,一般用于符合索引。
索引(Index):使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
在 CentOS 7 之后的MySQL被其分支MariaDB代替,在存储引擎方面采用XtraDB来代替MySQL的InnoDB。
查看系统中的是否自带MariaDB:
如果有,可以选择卸载(因为系统自带的版本可能会比较旧,存在兼容性问题)
安装 Mariadb:
初始化 Mariadb:
设置开机启动:
验证:
初始化root登录密码:
登录数据库:
在MySQL(MariaDB)中,添加用户有两种方式:
切换到mysql库:
添加sky用户,密码为skybiubiu:
以skydb库为例子:
通过GRANT命令进行授权,授予sky用户SELECT,INSERT,UPDATE操作权限:
USE 数据库名 - 选择要操作的数据库
SHOW DATABASES - 查看所有数据库
SHOW TABLES - 查看指定库的所有表
SHOW COLUMNS FROM 数据表 - 显示数据表的属性,属性类型,主键信息,NULL,默认值等信息
SHOW INDEX FROM 数据表 - 显示数据表的详细索引信息,包括主键。
SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] - 查看表状态
有三种主要的类型:Text(文本)、Number(数字)和 Date/Time(日期/时间)类型。
数据类型
描述
CHAR(size)
保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。
VARCHAR(size)
保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT 类型。
TINYTEXT
存放最大长度为 255 个字符的字符串。
TEXT
存放最大长度为 65,535 个字符的字符串。
BLOB
用于 BLOBs(Binary Large OBjects)。存放最多 65,535 字节的数据。
MEDIUMTEXT
存放最大长度为 16,777,215 个字符的字符串。
MEDIUMBLOB
用于 BLOBs(Binary Large OBjects)。存放最多 16,777,215 字节的数据。
LONGTEXT
存放最大长度为 4,294,967,295 个字符的字符串。
LONGBLOB
用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。
ENUM(x,y,z,etc.)
允许您输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。注释:这些值是按照您输入的顺序排序的。可以按照此格式输入可能的值: ENUM('X','Y','Z')
SET
与 ENUM 类似,不同的是,SET 最多只能包含 64 个列表项且 SET 可存储一个以上的选择。
TINYINT(size)
-128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。
SMALLINT(size)
-32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。
MEDIUMINT(size)
-8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。
INT(size)
-2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。
BIGINT(size)
-9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。
FLOAT(size,d)
带有浮动小数点的小数字。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DOUBLE(size,d)
带有浮动小数点的大数字。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DECIMAL(size,d)
作为字符串存储的 DOUBLE 类型,允许固定的小数点。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED 属性,那么范围将从 0 开始,而不是某个负数。
DATE()
日期。格式:YYYY-MM-DD注释:支持的范围是从 '1000-01-01' 到 '9999-12-31'
DATETIME()
*日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'
TIMESTAMP()
*时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的秒数来存储。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC
TIME()
时间。格式:HH:MM:SS注释:支持的范围是从 '-838:59:59' 到 '838:59:59'
YEAR()
2 位或 4 位格式的年。注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。
方法一:登入MySQL中,通过SQL语句创建。
IF NOT EXISTS - 如果不存在该数据库则创建。
方法二:在bash中,利用mysqladmin命令创建。
同上两种删除库的方法:
登入MySQL中,通过SQL语句删除:
在Bash,通过mysqladmin命令删除:
进入mysql,使用SQL语句选择库:
登入MySQL中,通过SQL语句创建:
示例:
注意:<code>`</code>是反单引号,ESC下面那个,可加可不加。
NOT NULL - 该字段不能为空。
AUTO_INCREMENT - 自增,常用于主键,数值会自动加1。
PRIMARY KEY - 定义主键,可使用多列来定义主键,列间以逗号分隔。
ENGINE - 设置存储引擎。
CHARSET - 设置编码。
查看库中所有表:
查看一个某个表头的详情:
DESCRIBE 可以简写为 DESC。
语法:
Clause - 从哪个表里找。
LIMIT N - 设定返回的记录数。
OFFSET M - 查询数据的偏移量,默认为0。
效果:
因为我插入了两次数据,所以有两条一样的,留着下面更改的时候用。
将7.3.2中BookID为2的Title改为 I'm SkyBiuBiu
SQL语法: