美文网首页
【深入浅出MySQL-02 概述】

【深入浅出MySQL-02 概述】

作者: 昵称该起什么好呢 | 来源:发表于2018-12-12 21:18 被阅读0次

SQL是结构化查询语言(Structure Query Language)的缩写,主要分为三个类别:DDL(Data Definition Languages)、DML(Data Manipulation Language)、DCL(Data Control Language)

DDL

数据定义语言,定义了不同的数据段、数据库、表、列、索引等数据库对象。

1. 创建数据库

使用如下命令创建数据库:

create database dbname

如果想知道有哪些数据库,则可以使用如下的命令

show databases;

除了自己创建的数据库之外,有一些数据库是MySQL自己原生提供的:

- information_schema:主要存储系统中的一些数据库对象信息,比如用户表信息、列信息、权限信息、字符集信息、分区信息

- mysql:存储了系统的用户权限信息

- test:测试数据库

定义好数据之后,使用如下的命令来切换数据库

use dbname;

使用如下数据库来查看数据库中的数据表

show tables

2. 删除数据库

删除数据库使用如下语法

drop database;

3. 创建表

创建数据表的语法如下:

create table my_table (

    column_name_1 column_type_1 constraints,

    column_name_2 column_type_2 constraints,

    ...

    column_name_n column_type_n constraints,

)

表创建完毕后,如果需要查看表的定义,可以使用如下命令

desc tablename

desc语句不够清晰,如果想查看更清晰的语句可以使用如下命令

show create table account \G;

\G可以使记录按照字段竖向排列

4. 删除表

使用如下命令删除表

drop table tablename;

5. 修改表

表结构的更改需要使用alter table 语句

修改表字段类型

alter table tablename modify [column] column_definition [first | after column_name]

增加字段

alter table tablename add [column] colulmn_definition [first|after column_name]

删除字段

alter table tablename drop [column] column_name;

字段改名

alter table tablename change [column] old_column new_cloumn column_definition [first | after column]

修改字段排列顺序

新增加的字段默认是在表的最后位置

更改表名

alter table table rename new_name;

DML

数据操纵语言,用于添加、删除、更新、查询数据库记录,并检查数据完整性。

插入记录

insert into table (field1, field2, field3,...) values (value1, value2, value3, ...);

可以一次性插入多条记录

更新记录

update table set field1=value1,field2=value2,... [where condition]

删除记录

delete from table [where condition]

查询记录

(1)查询

select * from table [where condition];

这里的*表示所有的字段,也可以显式的指明字段

select field1, field2, field3,... from table [where condition]

(2) 查询去重

select distincrt field1,field2,field3,.... from table [where condition]

(3)条件查询

sql中支持这些条件表达式

>,>=,<,<=,=,!=

此外,多个条件之间可以使用and,or等逻辑运算符进行连接

(4)排序和限制

select field1,field2,field3,.... from table order by field1 [desc|asc],field2 [desc|asc],...

其中desc和asc是排序顺序关键字,desc表示按照字段进行降序,asc表示按照字段进行升序。

如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序

如果只希望结果显示一部分,可以使用如下语法

select * from table limit offset_start,row_count

offset_start表示记录的起始偏移量,row_count表示显示的行数。默认情况下起始偏移量为0,只需要给出row_count即可。

(5)聚合

select [field1, field2,...,fieldn] fun_name from table [where condition] [group by field1, field2,...] [with rollup] [having condition]

fun_name表示聚合函数,常见的有sum,count,max,min,group by表示分组聚合,with rollup表示是否对分类聚合后的结果进行再汇总,having表示对分类后的结果再进行条件过滤。(注意,having是对聚合后的结果进行过滤,where是对聚合前的结果进行过滤)

(6)表连接

当同时需要显示多个表中的字段时,就需要用到表连接。表连接分为内连接和外连接。

外连接又分为左连接和右连接:

左连接:包含内连接的数据以及左表中不与右表匹配的记录

右连接:包含内连接的数据以及右表中不与左表匹配的记录

右连接可以和左连接相互转化。

(7)子查询

某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就要用到子查询。用于子查询的关键字主要包括in、not in、=、!=、exists、not exists。

如果子查询记录数唯一,也可以用=代替in。

某些情况下,子连接也可以转化为表连接。

(8)联合查询

可以使用如下语法进行联合查询

select * from t1 union | union all select * from t2

DCL

数据控制语言,用于控制不同数据段直接的许可和访问级别的语句,主要用于定义数据库、表、字段、用户的访问权限和安全级别。

比如,创建一个用户,具有某数据库下所有表的插入/删除权限

如果想更改用户权限

使用帮助

可以使用如下命令显示帮助文档

如果想要快速查询某项语法,可以使用如下命令

查询元数据信息

在Mysql5.0之后,提供了一个数据库information_schema,用来记录MySQL的元数据信息,元数据指的是数据的数据,比如表名、列名、列索引、索引名等各种属性名称。这个库是一个虚拟数据库,库里显示的表也不是实际存在的物理表,而是视图。

下面是一些常用的视图

SCHEMATA:该表提供了当前MySQL实例中所有数据库的信息

TABLES:该表提供了关于数据库中的表的信息,表类型,表引擎

COLUMNS:该表提供了表中的列信息

STATISTICS:该表提供了关于表索引的信息

相关文章

  • 【深入浅出MySQL-02 概述】

    SQL是结构化查询语言(Structure Query Language)的缩写,主要分为三个类别:DDL(Dat...

  • web开发概述

    Django深入浅出-web概述 目录 Django深入浅出-web概述 1 1. 软件分类 1 2. web软件...

  • 【Prometheus】监控系统概述

    【Prometheus】监控系统概述 现在开始一个新的系列,【Prometheus】,主要参考《深入浅出Prome...

  • 深入浅出Corda(一)概述

    此篇文章将主要就 Corda 一些背景和设计原则做简单的介绍和翻译,具体可以参考Corda 相关的技术白皮书:Re...

  • 通用数据权限的思考与设计

    1、数据权限概述 1.1、什么是数据权限? 如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Sprin...

  • AutoLayout

    AutoLayout深入浅出一[前传] AutoLayout深入浅出二[基本使用] AutoLayout深入浅出三...

  • 「 深入浅出 」集合Map

    系列文章: 「 深入浅出 」java集合Collection和Map 「 深入浅出 」集合List 「 深入浅出 ...

  • 深入浅出MySQL之MySQL锁概述

    1. MySQL锁概述 MyISAM 和 MEMORY 存储引擎采用的是表级锁(table-level locki...

  • 深入浅出边缘云 | 1. 概述

    随着技术的发展以及应用对时延、带宽、安全的追求,一个明显的技术趋势是越来越多的应用组件将会被部署到企业所管理的网络...

  • "深入浅出Python机器学习" 学习笔记-

    深入浅出Python机器学习_学习笔记 前80多页可以参考这里,这本书在出版社的介绍和源代码 第一章 概述 有监督...

网友评论

      本文标题:【深入浅出MySQL-02 概述】

      本文链接:https://www.haomeiwen.com/subject/lyophqtx.html