SQL语句分类:

DDL:Data Defination Language 数据定义语言

CREATE,DROP,ALTER

创建  删除 修改

DML:Data Maipulation Language 数据修改语言

INSERT,DELETE,UPDATE,SELECT

插入  删除  修改   查询

GRANT:权限新增

REVOKE:权限删除

数据类型:

字符型:

定长字符型:CHAR(#)不区分字符大小,BINARY(#)区分字符大小写,#号为可选项,可以指定长度

变长字符型:VARCHAR(#)不区分字符大小写,VARBINARY(#)区分字符大小写,#号为可选项,可以指定长度

对象存储:

TEXT:不区分大小

BLOB:区分字符大小写

内置类型:

ENUM:枚举类型

SET:集合

数值型:

精确数值型:

整型:int

tinyint:1byte

smallint:2bytes

mediumint:3bytes

int:4bytes

bigint:8bytes

十进制:decimal

近视数值型:

单精度浮点型:

float

双精度浮点型:

double

日期时间型:

日期:DATE

时间:TIME

日期时间:DATETIME

时间戳:TIMESTAMP

年份:YEAR(2),YEAR(4)

修饰符:

所有类型使用:

NOT NULL,非空约束

DEFAULT VALUE,设定默认值

PRIMARY KEY,主键

UNIQUE KEY,唯一键

数值型使用:

UNSIGNED,无符号,即正数

AUTO_INCREMENT,自增字段

数据库操作语句:

创建数据库:

CREATE DATABASE|SCHEMA [IF NOT EXISTS] 'DB_NAME';

例:

MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS mydb;
// 此条命令产生的效果为:如果mydb数据库不存在,就创建一个名为mydb的新数据库

删除数据库:

DROP DATABASE|SCHEMA [IF EXISTS] 'DB_NAME';

例:

MariaDB [(none)]> DROP DATABASE IF EXISTS mydb;
// 此条命令产生的效果为:如果mydb存在,就删除这个数据库

设置默认数据库:

USE DB_NAME;

MariaDB [(none)]> USE mydb;

设置字符集:

CHARACTER SET 'CHAR SET NAME';

例:

MariaDB [(none)]> CHARACTER SET gb2312; // 设置字符集为gb2312

查看支持的所有字符集:

SHOW CHARACTER SET;

例:

MariaDB [(none)]> SHOW CHARACTER SET;   // 查看可用字符集

设置排序规则:

COLLATE 'COLLATE NAME';

例:

MariaDB [(none)]> COLLATE big5_bin;     // 设置排序规则为big5_bin

查看支持的所有排序规则:

SHOW COLLATION;

例:

MariaDB [(none)]> SHOW COLLATION;       // 查看支持的所有排序规则

获取命令使用帮助:

HELP KEYWORD;

例:

MariaDB [(none)]> HELP CREATE DATABASE;  // 获取CREATE DATABASE命令的相关帮助信息

查看数据库信息:SHOW DATABASES;

查看表信息:SHOW TABLES;

NOTE:删除操作不可逆且不可恢复。

表操作语句:

创建表:

CREATE TABLE [IF NOT EXISTS] [db_name.]tb_name (col1 datatype 修饰符,col2 datatype 修饰符...) [ENGINE=''];

例:

MariaDB [mydb]> CREATE TABLE IF NOT EXISTS mytb1 (id int NOT NULL,name varchar
(100) NOT NULL,age int);
// db_name位数据库名,创建表时需要指定表属于哪个数据库,如果设置了默认数据库,则无需使用
此命令
// col1为列名
// datatype为数据类型
// 修饰符有NULL,NOT NULL,PRIMARY KEY,UNIQUE KEY等
//  ENGINE为数据引擎MariaDB [mydb]>  CREATE TABLE students(id int UNSIGNED NOT NULL PRIMARYKEY,name VARCHAR(20)NOT NULL,age Tinyint UNSIGNED);
//  定义id字段为无符号整数,并且要求为非空,且为主键
//  定义name字段为可变字符,长度限制为20,并且要求为非空
//  定义age字段为无符号Tinyint

可以定义单个字段为主键,也可以定义多个字段为主键,只要多个字段联合起来不相同即可

例:

MariaDB [mydb]>  CREATE TABLE tbl2(id int UNSIGNED NOT NULL,name VARCHAR(20) NOT NULL,age
tinyint UNSIGNED,PRIMARY KEY(id,name));
// PRIMARY KEY(id,name)
// 这里定义id和name同时为主键,只要id+name不重复即可

获取帮助:

MariaDB [mydb]>  HELP CREATE TABLE;

ENGINE即数据库引擎,也称之为表类型,查看表类型列表命令如下:

MariaDB [mydb]> SHOW ENGINES;

表格存储格式:

ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}

查看表:

SHOW TABLES [FROM db_name];

例:

MariaDB [mydb]> SHOW TABLES FROM mydb;

查看表结构:

MariaDB [mydb]>  DESC [DB_NAME.]tb_name;

例:

MariaDB [mydb]> DESC mydb.mytb1;

查看表创建命令:

MariaDB [mydb]>  SHOW CREATE TBALE tbl_name;

例:

MariaDB [mydb]>  SHOW CREATE TABLE mytb1;

查看表状态:

MariaDB [mydb]>  SHOW TABLE STATUS LIKE 'tbl_name'[\G]

例:

MariaDB [mydb]>  SHOW TABLE STATUS LIKE mytb1 \G;
// \G表示竖排显示

删除表:NOTE:删除操作不可逆且不可恢复。

DROP TABLE [IF EXISTS] tb_name;

例:

MariaDB [mydb]> DROP TABLE IF EXISTS mytb1;

修改表操作:

使用ALTER TABLE命令,这个命令下有很多子命令

添加字段:

ALTER TABLE tbl_name ADD col1 data_type [FIRST|AFTER col_name]

例:

MariaDB [mydb]> ALTER TABLE students ADD age ENUM('m','f') FIRST;
即在students表中添加一个字段age,其字符类型为枚举型,只能为m或f,且位于第一个字段

ADD子命令还可以单独添加字段的约束

例:

Maria DB [mydb]> ALTER TABLE students ADD UNIQUE KEY(name);

删除字段:

ALTER TABLE students DROP COLUMN col_name;

例:

MariaDB [mydb]> ALTER TABLE students DROP COLUMN age;
意为删除students表中的age字段

修改字段名和字段属性:(无法单独修改字段属性)

ALTER TABLE students CHANGE col_name col_name_new data_type options;

例:

MariaDB [mydb]> ALTER TABLE students CHANGE age ages int UNSIGGNED NOT NULL;
意为修改students表的字段age为ages,并且设置类型为int的无符号,不能为空

NOTE:需要注意的是,CHANGE命令修改字段属性时,必须修改字段名,不能只修改字段属性,而不修改字段名,但修改字段名时,可以不修改字段属性。

修改字段属性:

ALTER TABLE MODIFY col_name data_type options;

例:

MariaDB [mydb]> ALTER TABLE MODIFY age int;
只修改字段属性


索引:

索引是特殊数据结构,定义在查找时作为查找条件的字段;可加速查询速度,缺点是会占据额外空间

索引可以有额外名称;如果不设置名称,并且是单键索引,那么索引名称默认为字段名

创建索引:

CREATE INDEX index_name ON tbl_name (index_col_name,...);

例:

MariaDB [mydb]> CREATE INDEX myindex ON students (id);
// 这里是为students表的id字段创建索引,且命名为myindex
MariaDB [mydb]> CREATE INDEX myindex2 ON students (age,name);
// 这里是为students表达age和name字段创建联合索引,且命名为myindex2

删除索引:

DROP INDEX index_name ON tbl_name;

例:

MariaDB [mydb]> DROP INDEX myindex ON students;
// 这里是删除表students中的名为myindex索引

ALTER TABLE tbl_name DROP INDEX(col_name);

例:

MariaDB [mydb]> ALTER TABLE students DROP INDEX(age);
// 这里是删除表students中的age字段上的索引

添加索引:

ALTER TABLE tbl_name ADD INDEX(col_name);

MariaDB [mydb]> ALTER TABLE students ADD INDEX(age);
// 这里是给表students的age字段添加索引

查看索引:

SHOW INDEXES FROM [db_name.]tbl_name;

MariaDB [mydb]> SHOW INDEXES FROM mydb.students;
// 这里是显示出mydb数据库下的students表中的所有索引


数据操作:

插入数据:

INSERT [INTO] tbl_name [(col_name,...)] (VALUES | VALUE) (VAL1,...),(...),...

例:

MariaDB [mydb]> INSERT INTO students VALUES (1,'li','m'),(2,'wa','f');
可以一次性插入所有字段的数据
MariaDB [mydb]> INSERT INTO students (sid,name) VALUES (3,'zz'),(4,'dd');
也可以插入指定字段的数据

查询数据:

SELECT col1,col2,...FROM tbl_name [WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n];

ORDER BY 'col_name' 根据col_name升序排序

ORDER BY 'col_name' DESC 根据col_name降序排序

ORDER BY 'col_name' DESC LIMIT 4 根据col_name降序排序,只显示4个

ORDER BY 'col_name' DESC LIMIT 1,2 根据col_name降序排序,并且偏移1个,显示2个

col_name可用'*'指代所有字段

as:字段别名,col1 AS alias_name

例:

MariaDB [mydb]> select sid AS stuid,name AS stuname FROM students;
查询students表中sid和name的所有字段数据,并将sid临时改名为stusid,将name临时改名为stuname

操作符:

(1)<,>,>=,<=,==,!=

(2)BETWEEN...AND...

例:

MariaDB [mydb]> SELECT * FROM students WHERE sid>=2 and sid<=4;
MariaDB [mydb]> SELECT * FROM students WHERE sid BETWEEN 2 AND 4;
// 上面两个示例的作用相同,都是删选sid大于等于2,小于等于4的所有数据。

(3)LIKE

通配符:% 表示任意长度的任意字符;

_ 表示任意单个字符;

例:

MariaDB [mydb]> SELECT * FROM students WHERE name LIKE 'z%';
// 这里表示在students表中查找name字段为z开头的任意长度的任意字符的数据

(4)RLIKE

基于正则表达式作字符匹配

例:

MariaDB [mydb]> SELECT * FROM students WHERE name RLIKE '.*u.*';
// 这里表示在students表中查找name字段中包含u字母的数据

(5)IS NULL 为空

IS NOT NULL 为非空

例:

MariaDB [mydb]> SELECT * FROM students WHERE name IS NULL;
// 这里表示在students表中查找name字段为空的数据
MariaDB [mydb]> SELECT * FROM students WHERE name IS NOT NULL;
// 这里表示在students表中查找name字段为非空的数据

条件逻辑操作:

and 与

or 或

not 非

例:

MariaDB [mydb]> SELECT * FROM students WHERE sid >=2 AND sid <= 4;
// 这里表示查找students表中sid小于等于4且大于等于2的数据
MariaDB [mydb]> SELECT * FROM students WHERE sid >=2 OR name == 'zi';
// 这里表示查找students表中sid大于等于2或者name为zi的数据
MariaDB [mydb]> SELECT * FROM students WHERE NOT sid >=2;
// 这里表示查找students表中sid小于2的数据,即sid>=2取反

删除数据:

DELETE FROM tbl_name [WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m],n];

例:

MariaDB [mydb]> DELETE FROM students where sid == 3;
// 这里表示删除students表中sid为3的所有行数据

NOTE:需要注意的是,如果DELETE FROM tbl_name后不接条件语句,那么默认会删除整张表的数据。

更新数据:

UPDATE tbl_name SET col1=new_val1,col2=new_val2,...[WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m],n];

例:

MariaDB [mydb]> UPDATE students SET name='zi',age=16 WHERE id == 4;
// 这里表示修改students表中的id为4的行的name字段为zi,age为16

用户帐号及权限管理:

用户帐号格式:USERNAME@HOST

USERNAME:用户名

HOST:此用户访问mysqld服务时允许通过哪些主机远程创建连接:其中可以是IP,主机名,通配符(%和_);

创建用户:

CREATE USER USERNAME@HOST [IDENTIFIED BY 'PASSWORD'];

例:

MariaDB [mydb]> CREATE USER user1@localhost IDENTIFIED BY 'redhat';
这里表示创建一个用户名为user1且密码为redhat的用户,且此用户只能通过本机登录

删除用户:

DROP USER 'USERNAME@LOCALHOST;

例:

MariaDB [mydb]> DROP USER user1@localhost;
这里表示删除可以通过本机登录的用户user1

用户授权:

权限分类:管理,数据库,表,字段,存储例程(存储过程,存储函数,触发器)等;

GRANT priv_type,...ON [object_type] db_name.tb_name TO 'USERNAME@HOST' [IDENTIFIED BY 'PASSWORD'] [WITH GRANT OPTION];

意为:给予指定登录位置的指定用户在指定数据库的指定表中的指定权限;

选项:

priv_type:ALL | [PRIVILEGES],ALL表示所有权限

db_name.tb_name:

*.*:所有数据库的所有表;

db_name.*:制定库的所有表;

db_name.tb_name:指定库的指定表;

db_name.routing_name:制定库的存储例程;

WITH GRANT OPTION:意味着指定用户可以把自己的所有权限转授(复制)到其他的用户;

例:

MariaDB [mydb]> GRANT SELECT,DELETE ON mydb.students TO user1@localhost;
// 这里表示给只能在本机登录的user1用户赋予在mydb数据库中的students表的查询及删除权限

NOTE:需要注意的是,如果用户不存在,这可以在指定用户的时候加上IDENTIFIED BY PASSWORD即可创建新用户并同时指定密码

查看用户权限:

SHOW GRANTS FOR USERNAME@HOST;

查看指定用户的权限

SHOW GRANTS FOR CURRENT_USER;

查看当前用户的权限

例:

MariaDB [mydb]> SHOW GRANTS FOR user1@localhost
// 这里表示查看限制本机登录的用户user1的权限

回收用户权限:

REVOKE priv_type,...ON db_name.tb_name FROM USERNAME@HOST;

例:

MariaDB [mydb]> REVOKE DELETE ON mydb.students FROM user1@localhost;
// 这里表示从限制本机登录的用户user1权限中回收在mydb数据库中的students表的DELETE权限

注意:MariaDB服务进程启动时会读取mysql数据库中的所有授权表至内存中;

(1)GRANT或REVOKE等执行权限操作会保存于授权表中,MariaDB的服务进程会自动重读授权表;

(2)对于不能够或不能及时重读授权表的命令执行后,可手动让MariaDB的服务进程重读授权表;

重读授权表命令:FLUSH PRIVILEGES;

写的比较潦草,如有遗漏错误和争议之处,欢迎大家的批评指正和讨论,谢谢。

转载于:https://blog.51cto.com/11367661/2047994

MariaDB的简单使用相关推荐

  1. MariaDB 数据库迁移

    一.为什么要迁移 我的七月小说站点放在JCloud上,恕我直言,配合我的Aliyun服务器进行数据交互,那是相当的慢,没办法,京东云上面十几块钱的公网ip,也就这样了. 所以我决定把web服务器和数据 ...

  2. linux下Mariadb的二进制安装

    一.Mariadb的简单介绍 Mariadb是MySQL的一个开源分支,主要是社区在维护,并且完全兼容MySQL,并且可以很方便的称为MySQL的替代,Mariadb的诞生是出自MySQL创始人Mic ...

  3. linux查看mariadb安装卸载,MySQL——在Linux下安装和卸载MariaDB

    MySQL--在Linux下安装和卸载MariaDB 摘要:本文主要学习了如何在Linux系统中安装和卸载MariaDB数据库. 查看有没有安装过MariaDB 使用命令查看有没有安装过: 1 [ro ...

  4. CentOS 7下简单搭建个人博客——wordpress

    CentOS 7下简单搭建个人博客--wordpress 前言: CentOS 7及以上版本不能安装Mysql数据库,我们用的MariaDB数据库代替.mariadb的简单安装与配置可参考:https ...

  5. 关系型数据库和NOSQL的对比

    对比 nosql数据库 关系型数据库 常见 mongodb,redias Oracle,DB2,mysql,MariaDB 成本 简单易部署,基本都是开源软件,价格便宜 oracle需花费大量成本 查 ...

  6. CentOS7 配置搭建安装LNMP

    1. 关闭防火墙和selinux 打开文件selinux vim /etc/sysconfig/selinux 1 将文件中SELINUX=enforcing改为disabled,然后执行" ...

  7. Syslog日志服务器配置 For CentOS 7.8(Syslog+LogAnalyzer+LAMP)

    声明:本教程仅供学习.研究.测试使用,本文作者不承担任何法律责任! 本次中央日志服务器采用rsyslog提供日志接收服务,Mariadb作为后端数据库提供日志存储服务, 一.安装CentOS 7操作系 ...

  8. mysql 导出 客户端_我给手机安装了Mysql数据库,从此……

    [玩转Termux教程]: 1.Termux 初始化配置,新手必备 2.Termux 下安装 Python3以及 lxml 跳坑指南! 3.[Termux]手把手教你配置PHP+Nginx! -- 今 ...

  9. MySQL安装以及客户端的使用

    MySQL安装以及客户端的使用 安装: [root@yang ~]# wget -O /usr/src/mysql57-community-release-el7-10.noarch.rpm \ &g ...

最新文章

  1. npm 卸载_完全免费!GitHub发布软件包管理服务:NPM瑟瑟发抖
  2. 使用POI读取excel文件内容
  3. elementui下拉框选择图片_element ui下拉框如何实现默认选择?
  4. React中的CSS——styled-components
  5. 【华为云技术分享】ARMv8-A存储模型概述(2)
  6. 桌面环境选择_Fedora 30 正式版发布:引入 Deepin 桌面环境(DDE)
  7. ConcurrentHashMap 和 Collections.synchronizedMap(map) 比较
  8. c++简单程序实现——小公主养成记
  9. 今日头条引流小白入门视频解析下载支持今日头条快手抖音视频去水印软件批量处理去重消重去水印去logo...
  10. ThinkPad 笔记本BIOS设置手册
  11. 五人合伙最佳股份分配_五个人合伙,股份如何划分才合理?
  12. ftp 连接失败。500 OOPS: cannot change directory:
  13. BGP Aggregation – Suppress Map
  14. 在deepin上使用邮箱(网易yeah账号+deepin软件Balsa)
  15. 揭开色彩营销中隐藏在品牌运营下的“变脸”戏法!
  16. 声音经济@2023: 「夹缝」求生,「希望」不远
  17. 磁盘缓存和缓存命中率
  18. OSPFv2-Sham Link模拟实验(华为 DataCome)
  19. Flutter高仿微信-第31篇-单聊-表情
  20. Power PMAC运动控制器 —— 学习笔记6

热门文章

  1. L2-018. 多项式A除以B -PAT团体程序设计天梯赛GPLT
  2. 蓝桥杯 ADV-88 算法提高 输出正反三角形
  3. 配置项、基线以及软件配置控制委员会
  4. LeetCode383. Ransom Note
  5. iOS模拟器中修改textField键盘类型为中文输入和键盘弹出方法
  6. JAVA加勒比_【JAVA】synchronized关键字
  7. The content of element type web-app must match……等 问题之解决办法
  8. Windows 7下的Excel 2010同时打开多个独立的窗口
  9. [other] 代码量代码复杂度统计-lizard
  10. codevs3732==洛谷 解方程P2312 解方程