DBMS信息

显示DBMS的版本
select version();
显示DBMS状态
status;
显示DBMS资源状态
show status;
显示DBMS支持的权限
show privileges;
查看DBMS用户的权限
show grants for user_name;

DBMS变量

显示DBMS的变量名称及值
show variables;
显示DBMS的使用端口
show variables like 'port';
显示DBMS的编码
show variables like 'character%';
显示DBMS的数据文件存放路径
show variables like '%datadir%';
显示DBMS的的最大连接数
show variables like '%max_connections%';

数据库

显示DBMS的所有数据库;
show databases;
创建数据库
create database db_name;
删除数据库
drop database db_name;
选择数据库
use db_name; 显示当前使用的数据库
select database();
显示当前登录的用户名称
select user();
显示当前数据库支持及默认的存储引擎
show engines;
显示当前数据库的触发器信息
show triggers;

数据库表

显示当前数据库的表信息
show tables;
创建数据库表
create table table_name;
删除数据库表
drop table table_name;
显示当前数据库的表状态
show table status;
显示表结构信息
describe table_name; 或 desc table_name; 或 show columns from able_name;
显示表中的所有记录
select * from table_name;

查看状态

show table status;
show procedure status;
show function status;

查看创建属性

show create procedure procedure_name;
show create function function_name;
show create view view_name;
show create table table_name;

异常信息反馈

查看上一条执行语句的异常信息反馈(错误、提醒和警告)
show errors;
show warnings;

示例-1

1-1 创建数据库

[root@CentOS-7 ~]# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> create database sample;
Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sample |
| test |
+--------------------+
5 rows in set (0.00 sec) MariaDB [(none)]> use sample;
Database changed
MariaDB [sample]> show tables;
Empty set (0.00 sec) MariaDB [sample]>

1-2 创建表

  • Students表包含学号、姓名、年龄: Students(StudentID,StudentName,StudentAage)
  • Classes表包含课程编号、课程名称:Classes(ClassID,ClassName)
  • Grade表包含学号、所选的课程编号、成绩:StuentsClasses(StudentID,ClassID,Score)
CREATE TABLE Students
(
StudentID char(10) NOT NULL ,
StudentName char(50) NOT NULL ,
StudentAge int NULL
);
CREATE TABLE Classes
(
ClassID char(10) NOT NULL ,
ClassName char(50) NOT NULL
);
CREATE TABLE Grades
(
StudentID char(10) NOT NULL ,
ClassName char(10) NOT NULL ,
Score char(50) NOT NULL
);

1-3 插入数据

INSERT INTO Students(StudentID, StudentName, StudentAge) VALUES('st1', 'aaa', 11);
INSERT INTO Students(StudentID, StudentName, StudentAge) VALUES('st2', 'bbb', 22);
INSERT INTO Students(StudentID, StudentName, StudentAge) VALUES('st3', 'ccc', 33); INSERT INTO Classes(ClassID, ClassName)
SELECT '001', 'Java' UNION ALL
SELECT '002', 'Python' UNION ALL
SELECT '003', 'Linux' ; INSERT INTO Grades(StudentID, ClassName, Score)
SELECT 'st1', 'Java', '85' UNION ALL
SELECT 'st2', 'Java', '92' UNION ALL
SELECT 'st3', 'Java', '96' ;
INSERT INTO Grades(StudentID, ClassName, Score)
SELECT 'st1', 'Python', '88' UNION ALL
SELECT 'st2', 'Python', '81' UNION ALL
SELECT 'st3', 'Python', '97' ;
INSERT INTO Grades(StudentID, ClassName, Score)
SELECT 'st1', 'Linux', 'Unkown' UNION ALL
SELECT 'st3', 'Linux', 'Unkown' ;

1-4 查询数据

查询学生表格的结构和所有数据
desc Students;
select * from Students; 查询选修课程的学生人数
select count(distinct StudentID) from Grades; 查询年龄大于20的学生ID和姓名
select StudentName,StudentAge from Students where StudentAge > 20; 查询选修Linux课程的学生ID和姓名
select StudentID, StudentName from Students where StudentID in (select StudentID from Grades where ClassName='Linux'); 查询不选修Linux课程的学生ID和姓名
select StudentID, StudentName from Students where StudentID not in (select StudentID from Grades where ClassName='Linux'); 查询选修2门课程的学生ID和姓名
select StudentID, StudentName from Students where StudentID in (select StudentID from Grades group by StudentID having count(distinct ClassName)=2);

1-5 更改数据

将学生ID为st1的Python课程成绩修改为99
Update Grades set Score='99' where StudentID='st1'; 在Classes表格增加Effort列
alter table Classes add Effort Char(12); 在Classes表格删除Effort列
alter table Classes drop column Effort;

1-6 删除数据

删除表中的数据
delete from Grades where StudentID='st2' and ClassName='Python'; 删除表
drop tables Grades; 删除数据库
drop database sample;

不登陆MySQL界面,删除数据库

[root@CentOS-7 ~]# mysqladmin -u root -p drop sample
Enter password:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed. Do you really want to drop the 'sample' database [y/N] y
Database "sample" dropped
[root@CentOS-7 ~]#

示例-2

表Story中包含货物种类(list)A和B的库存总量(StoryCount)分别为997和1234;

表Sale中货物种类(list)A有2次出库数量(SaleNumber)记录分别为105和213;

表Sale中货物种类(list)B有3次出库数量(SaleNumber)记录分别为116、211和303;

建立数据表并用一条SQL语句求出货物A,B各剩下多少?

2-1 创建数据表

创建数据表Story结构并添加数据
CREATE TABLE Story(list VARCHAR(10), StoryCount INT);
INSERT INTO Story(list, StoryCount)
SELECT 'A','997' UNION ALL
SELECT 'B','1234' ; 创建数据表Sale结构并添加数据
CREATE TABLE Sale(list VARCHAR(10), SaleNumber INT);
INSERT INTO Sale(list, SaleNumber)
SELECT 'A','105' UNION ALL
SELECT 'A','213' UNION ALL
SELECT 'B','116' UNION ALL
SELECT 'B','221' UNION ALL
SELECT 'B','303' ; 查询表结构和所有数据
desc Story;
select * from Story;
desc Sale;
select * from Sale;

2-2 计算货物的剩余数量

MariaDB [demo]> select list, StoryCount from Story;
+------+------------+
| list | StoryCount |
+------+------------+
| A | 997 |
| B | 1234 |
+------+------------+
2 rows in set (0.00 sec) MariaDB [demo]> select list, sum(SaleNumber)SaleCount from Sale group by list;
+------+-----------+
| list | SaleCount |
+------+-----------+
| A | 318 |
| B | 640 |
+------+-----------+
2 rows in set (0.00 sec) MariaDB [demo]> select Story.list, Story.StoryCount - sum(Sale.SaleNumber) from Story, Sale where Story.list=Sale.list group by list;
+------+-----------------------------------------+
| list | Story.StoryCount - sum(Sale.SaleNumber) |
+------+-----------------------------------------+
| A | 679 |
| B | 594 |
+------+-----------------------------------------+
2 rows in set (0.00 sec) MariaDB [demo]>

2-3 删除数据表

DROP TABLE Story;
DROP TABLE Sale;

参考信息

MySQL命令大全

读书笔记--SQL必知必会--常用MySQL(MariaDB)命令的更多相关文章

  1. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  2. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  3. SQL语法语句总结(《SQL必知必会》读书笔记)

    一.SQL语句语法 ALTER TABLE ALTER TABLE 用来更新已存在表的结构. ALTER TABLE tablename (ADD|DROP column datatype [NULL ...

  4. 读书笔记--SQL必知必会--建立练习环境

    书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...

  5. 读书笔记--SQL必知必会12--联结表

    12.1 联结 联结(join),利用SQL的SELECT在数据查询的执行中联结表. 12.1.1 关系表 关系数据库中,关系表的设计是把信息分解成多个表,一类数据一个表,各表通过某些共同的值互相关联 ...

  6. MySQL必知必会1-20章读书笔记

    MySQL备忘 目录 目录 使用MySQL 检索数据 排序检索数据 过滤数据 数据过滤 用通配符进行过滤 用正则表达式进行搜索 创建计算字段 使用数据处理函数 数值处理函数 汇总数据 分组数据 使用子 ...

  7. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  8. 《mysql必知必会》读书笔记--存储过程的使用

    以前对mysql的认识与应用只是停留在增删改查的阶段,最近正好在学习mysql相关内容,看了一本书叫做<MySQL必知必会>,看了之后对MySQL的高级用法有了一定的了解.以下内容只当读书 ...

  9. 【SQL必知必会笔记(3)】SELECT语句的WHERE子句数据过滤操作

    上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ...

  10. 【SQL必知必会笔记(2)】检索数据、排序检索数据

    上个笔记中介绍了一些关于数据库.SQL的基础知识,并且创建我们后续练习所需的数据库.表以及表之间的关系,从本文开始进入我们的正题:SQL语句的练习. 文章目录 1.检索数据(SELECT语句) 1.1 ...

随机推荐

  1. 领域驱动和MVVM应用于UWP开发的一些思考

    领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中有了心得体会或遇到了问 ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(81)-数据筛选(万能查询)

    系列目录 前言 听标题的名字似乎是一个非常牛X复杂的功能,但是实际上它确实是非常复杂的,我们本节将演示如何实现对数据,进行组合查询(数据筛选) 我们都知道Excel中是如何筛选数据的.就像下面一样 他 ...

  3. IE8/9 JQuery.Ajax 上传文件无效

    IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...

  4. 深入浅出Redis-redis哨兵集群

    1.Sentinel 哨兵 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所 ...

  5. vs15 preview5 离线安装包

    1.介绍 vs15是微软打造的新一代IDE,全新的安装方式.官网介绍如下(https://blogs.msdn.microsoft.com/visualstudio/2016/10/05/announ ...

  6. 微信小程序前端源码逻辑和工作流

    看完微信小程序的前端代码真的让我热血沸腾啊,代码逻辑和设计一目了然,没有多余的东西,真的是大道至简. 废话不多说,直接分析前端代码.个人观点,难免有疏漏,仅供参考. 文件基本结构: 先看入口app.j ...

  7. 通过自定义特性,使用EF6拦截器完成创建人、创建时间、更新人、更新时间的统一赋值(使用数据库服务器时间赋值,接上一篇)

    目录: 前言 设计(完成扩展) 实现效果 扩展设计方案 扩展后代码结构 集思广益(问题) 前言: 在上一篇文章我写了如何重建IDbCommandTreeInterceptor来实现创建人.创建时间.更 ...

  8. Visual Studio 2013 添加一般应用程序(.ashx)文件到SharePoint项目

    默认,在用vs2013开发SharePoint项目时,vs没有提供一般应用程序(.ashx)的项目模板,本文解决此问题. 以管理员身份启动vs2013,创建一个"SharePoint 201 ...

  9. 为什么很多SaaS企业级产品都熬不过第一年

    因工作缘由,笔者与周边数位SaaS企业级应用的创始人.运营负责人有过深入接触,发现一个有趣的现象:刚起步时,蓝图远志.规划清晰,但是一路下来,却异常艰难,有些甚至熬不过第一年,就关门歇业. 2015年 ...

  10. Linux基础介绍【第一篇】

    Linux简介 什么是操作系统? 操作系统,英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心 ...