简介:
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
按照知识点分类,我将从以下六个方面去描述SQL语句基本操作,第一章节,和第二章节是对学习内容的一个简要概述,第三到第六章节则是具体的语句操作。
目录
一.SQL通用語法
二.SQL語句的分類
三.DDL
四.DML
五.DQL
六.DCL
一.SQL通用語法
1.SQL语句可以单行或多行书写,以分号结尾。
2.SQL语句可以使用空格/缩进来增强语句的可读性。
3.MySQL数据库的SQL不分大小写,关键字建议使用大写。
4.注释:
· 单行注释: --注释内容或#注释内容(MySQL特有)
·多行注释:/*注释内容*/
二.SQL語句的分類
1.DDL( Data Definition Language):数据定义语言,用来定义数据库对象(数据库,表,字段)。
2.DML(Data Maniuputation Language):数据操作语言,用来对数据库表中的数据进行增删改。
3.DQL(Data Query Language):数据查询语言,用来查询数据库中表的记录。
4.DCL(Data Control Language):数据控制语言,用来创建数据库用户,控制数据库的访问权限。
了解基本分类后,接下来让我们学习具体语句操作,小建议:虽然关键字建议用大写,但是为了方便见名知意,我一般使用小写,看着舒服。为了让大家明白为什么按上面的分类进行学习,我以一个比喻和大家说明一下。我们学习MySQL本质是学习如何利用其对数据进行管理与存储。这就好比我们在写入各种各种的文档,存入到文件夹中,规范进行管理,需要修改时,则选择对应文件夹的对应文件,对其内容进行增删改操作。其中文件夹就类似于我们需要创建的库,文件夹中的文件就类似我们需要在库中创建的表,对文件内容的操作就类似我们对表格进行的增删改查操作,进行前面的操作就对应着我要学习的DDL、DML、DQL。最后的DCL操作类似于我们用户对于系统文件的权限控制,它在数据库中,是用于给用户授予数据库的权限,控制用户的数据的。建立这样的意识去学,知识框架很容易搭建成功。
三.DDL( Data Definition Language)
這主要是用来定义数据库对象(数据库,表,字段)。其实,可以分为数据库和表操作两个部分,字段是表的一部分,其操作实则为对表进行操作。对数据库进行操作,我们需要先进行库的创建,然后才可创建表,对表进行操作。
3.1 数据库操作
1. 查询
(1).查询所有数据库(目前已创建的)
SHOW DATABASES;
(2). 查询当前数据库(当前所使用的)
SELECT DATABASE();
2. 创建
语法: CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则];
注意:中括号里的内容可省略。
例如:创建名为db的数据库
create database db;
3. 删除
DROP DATABASE 数据库名;
4. 使用
USE 数据库名;
为什么要有使用操作呢?因为我们创建的数据库一般都不止一个,使用操作,可以让我们自由调整到想要使用的数据库。
3.2.表的操作
1. 查询
(1).查询当前数据库所有表
show tables;
(2).查询表结构
desc 表名;
(3).查询指定表的建表语句
show create table 表名;
2. 创建
(1)CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1解释];
字段2 字段2类型[COMMENT 字段2解释];
......
字段n 字段n类型[COMMENT 字段n解释];
)[COMMENT 表注释];
注意:中括号里的部分可省略,也可写主要是为了给自己知道创建此字段的意义,但是若是用中文解释记得添加引号。
3. 修改(主要是修改表格的字段)
(1). 添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束]
(2). 修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);
(3). 修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释][约束];
(4). 修改表名
alter table 表名 rename to 新表名;
4. 删除
(1). 删除字段
alter table 表名 drop 字段名;
(2). 删除表
drop table 表名;
(3). 删除指定表,并重新创建该表
truncate table 表名;
注意:在删除表示,表中的全部数据也会被删除。
四.DML(Data Maniuputation Language)
4.1.作用
對數據庫表中的數據進行增刪改。
4.2 操作
1. 添加数据 insert
(1).给指定字段添加数据
insert into 表名(字段1,字段2,...)values(值1,值2);
(2).给全部字段添加数据
insert into 表名 values(值1,值2,...);
(3).批量添加数据
insert into 表名 (字段1,字段2,...)values (值1,值2,...),(值1,值2,...),(值1,值 2,...),...;
insert into 表名 values (值1,值2,...),(值1,值2,...),(值1,值2,...),...;
2. 刪除数据 delete
delete from 表名 [where 条件]
注意:
delete 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据
delete 语句不能删除某一个字段的值(可以使用update)
3 . 修改数据 update
update 表名 set 字段1=值1,字段2=值2,...[where 条件];
注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据
五.DQL(Data Query Language)
5.1.作用
用来查询数据库中表的记录
5.2.操作:
1.基本查询
(1).查询多个字段
select 字段1,字段2,字段3,...from 表名;
(2).设置别名
select 字段1[ as 别名1],... from 表名;
(3).去除重复操作
select distinct 字段列表 from 表名;
2.条件查询(where)
(1).语法
select 字段列表 from 表名 where 条件列表;
(2).条件(含比较运算符和逻辑运算符)
·比较运算符
比较运算符 功能
> < >= <= != = 省略(意义即为字面意义)
字段 between ... and... 在某个范围之内(含最大值、最小值)
in (...) 在in之后的列表中的值,多选一 ,类似于or的用法
like占位符 模糊匹配(_匹配单个字符,%匹配任意个字符)
is null 是null
·逻辑运算符
逻辑运算符 功能
and或&& 并且(多个同时成立)
or 或 || 或者(多个条件任意一个成立)
not 或 ! 非,不是
3.聚合查询
(1).聚合函数介绍:将一列数据作为一个整体,进行纵向计算。
(2).常见聚合函数
count 统计数量
max 求最大值
min 求最小值
avg 求平均值
sum 求和
注意:null值不参与聚合函数计算
4.分组查询
(1).语法
select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]
分组字段名指的是根据什么进行分组
(2).where 和having 区别
·执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤
·判断条件不同:where不能对聚合函数进行判断,而having可以。
5.分页查询(limit)
语法:
select 字段列表 from 表名 limit 起始索引,查询记录数;
注意
·起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数
·分页查询是数据库的方言,不同的数据库有不同的实现,mysql中是limit
·如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10
六.DCL(Data Control Language)
6.1 介绍
数据控制语言:用来管理数据库用户、控制数据库的访问权限。
6.2 管理用户
1. 查询用户
use mysql;
select * from user;
2. 创建用户
create user '用户名' @ '主机名' identified by '密码';
3. 修改用户密码
alter user ‘用户名' @ '主机名’identified with mysql_native_password by ‘新密码’;
4. 删除用户
drop user ‘用户名' @ '主机名’;
6.3 权限控制
mysql中定义了很多种权限,但是常用的就以下几种:
权限 说明
all, all privileges 所有权限
select 查询数据
insert 插入数据
update 修改数据
delete 删除数据
alter 修改表
drop 删除数据库/表/视图
create 创建数据库/表
注意:
·多个权限之间,使用逗号分隔
·授权时,数据库名和表名可以用*进行通配,代表所有
下面是几个常见的操作: