【深入浅出MySQL-02 概述】

2018-12-12  本文已影响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:该表提供了关于表索引的信息

上一篇 下一篇

猜你喜欢

热点阅读