0


MySQL的基础(一)

MySQL的基础(一)

SQL

SQL,全称为结构化查询语言(Structured Query Language),是一种用于管理关系数据库的标准计算机语言。它可以用于数据库的创建、查询、更新和修改等操作。

SQL语言包括数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)、数据控制语言(DCL)等部分。
-- 创建表CREATETABLE Students (
    ID INTPRIMARYKEY,
    Name VARCHAR(20),
    Age INT);-- 插入数据INSERTINTO Students (ID, Name, Age)VALUES(1,'Tom',20);-- 查询数据SELECT*FROM Students;-- 更新数据UPDATE Students SET Age =21WHERE ID =1;-- 删除数据DELETEFROM Students WHERE ID =1;

SQL的语法特点主要包括以下几点:

SQL的关键字大小写不敏感,可以以单行或多行书写,空格/缩进–增强可读性,并

以分号结束

。SQL的注释有两种方式:

  1. (1)单行注释:使用--或者# 注释开始,直到行尾。 (2) 多行注释:使用/*开始,*/ 结束。

注意:
虽然SQL的关键字大小写不敏感。但是,对于字符串和字符数据类型的值,是区分大小写的。
但是推荐使用小写,方便

  1. 反引号(`)用于包裹数据库名称,字段,数据表名称。是TAb键上方,数字1左边的英文状态的键。
  2. 以分号结束也可使用\g或者\G (1)以分号结尾_show databases;在这里插入图片描述 (2)以\g结尾_ show databases\g和分号效果是一样的。在这里插入图片描述 (3)以\G结尾_show databases\G 以一给信息为“一段”后换行,纵向排列的在这里插入图片描述

一、 SQL - DDL – 数据定义语言

DDL(Data Definition Language,数据定义语言)语句: 数据定义语言,主要是进行定义数据库、表的结构、数据类型、表之间的链接等操作。 例如:关键字有 CREATE用于创建数据表和数据表、ALTER用于修改表、DROP用于删除库和表 等。

1.1 数据库操作

1.1 显示现有的数据库

(1)查看MySQL服务器下的所以被创建出来的数据库

SHOW DATABASES

在这里插入图片描述

(2)查看当前数据库

SELECT DATABASE()

下方的NULL是因为,没有选择数据库
在这里插入图片描述
在DataGrip中
我们可以选择对应的数据库即可,或者切换数据库
在这里插入图片描述

(3)查看指定的数据库的创建信息

show create database

数据库名称

;

在这里插入图片描述

1.2 创建数据库

创建:

CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则]

(1)简单创建:
在这里插入图片描述
有无反引号都可以
在这里插入图片描述
都存在
在这里插入图片描述
(2)不可创建同名的数据库,存在即不创建

create database if not exists 数据库名称

在这里插入图片描述

(3)设置指定的字符集

utf8 -存储长度 3个字节【不建议】
utf8mb4 - 4字节

create database ss default utf8mb4

如果已经存在了该库,但没指定字符集,那就指定通过修改的方式来了。

alter database 库名 default character set 字符集

在这里插入图片描述

1.3 删除数据库
DROP DATABASE [IF EXISTS] 数据库名

在这里插入图片描述
[IF EXISTS] 是为了进一步确认存在。

1.4 使用
USE 数据库名

在这里插入图片描述
查看当前数据库名用前面,并切换数据库
在这里插入图片描述

1.2 数据表操作

对数据库中的表结构进行增删查改等操作,在这之前我们需要准备一张数据表。

1.2.1 表查询

先use指令找到数据库,
(1)查询当前所有表

show tables;

在这里插入图片描述
(2)查询表结构

DESC 表名;

在这里插入图片描述
(3)查询指定表的建表语句

SHOW CREATE table 表名;

在这里插入图片描述

1.2.2 表创建

创建库–使用库–创建表

CREATE[字段类型]TABLE[ifnotexists]表名(
字段1 字段1类型[COMMENT   字段1注释]
字段2 字段2类型[COMMENT   字段2注释]
字段3 字段3类型[COMMENT   字段3注释]... 
字段n 字段n类型[COMMENT   字段n注释])[COMMENT   表注释];

在这里插入图片描述
验证 – 查询表结构

DESC 表名;

在这里插入图片描述

在这里插入图片描述

1.2.3 修改表

(1)添加字段

ALTER RABLE 表名 ADD 字段名 类型(长度) [comment 注释] [约束];

在这里插入图片描述
修改字段名和类型

ALTER RABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [comment 注释] [约束]

在这里插入图片描述
在这里插入图片描述
删除字段

ALTER TABLE 表名 DROP 字段名

在这里插入图片描述
修改表名

ALTER table 表名 RENAME TO 新表名;

在这里插入图片描述

删除:

删除表

(1)

TROP TABLE [IF EXISTS]表名;

删除指定表,并重新创建该表 --剩下表结构,数据被清除
在这里插入图片描述
(2)

TRUNCATE TABLE 表名;

在这里插入图片描述

1.2.4 小结

(1)库操作

showdatabases;createdatabase 数据库名;use 数据库名;selectdatabase();dropdatabase 数据库名;

(2)表操作

showtables;createtable 表名(字段 字段类型 ,字段 字段类型);
desc 表名;showcreatetable 表名;altertable 表名 add/modify/change/drop/renameto..droptable 表名;

二、SQL - DML – 数据操作语言

DML(Data Manipulation Language)语句: 主要是对数据进行增加、删除、修改操作。常用的语句关键字有 INSERT添加数据、UPDATE修改数据、DELETE删除数据 等。

2.1 添加数据 insert

( 1 )给指定的字段添加

`INSERT INTO 表名(字段1.,,字段2)VALUES(值1.值2....);`

( 2 )给全部的字段添加数据

`INSERT INTO 表名 values(值1.。值b);`

( 3 ) 批量添加数据

INSERTINTO 表名(字段1.,,字段2)VALUES(值1.值2....)(值1.值2....).(值1.值2....);INSERTINTO 表名 values(值1.。值n),(值1.。值n),(值1.。值n);

注意:

  1. 插入时期,指定字段顺序,键值一一对应
  2. 字符串、日期应该在引号之中
  3. 大小、长度应该在规定的字段的范围之内在这里插入图片描述 如果是插入多条数据,就多来点语句或者(3)的方请添加图片描述

2.2 修改数据 update

UPDATE 表名 SET 字段名1= 值1,字段名2= 值 2 ,[where 条件];

修改语句的条件可以有,也可无。如果没有条件,则修改整张表的所有数据。
请添加图片描述

这项操作是不安全的,容易破坏元数据的----但可以同意
请添加图片描述

成功完全替换掉

请添加图片描述

2.3 删除数据 delete

`DELETE FROM 表名 [WHERE 条件]`

注意: (1)条件可有可无,没有就是所有的数据

(2)DELETE 语句不能删除某个字段的值(可以用UPDATE)

请添加图片描述

2.4 总结一下

(1)添加数据:

INSERT INTO 表名 (字段1,字段2,)VALUES(值1,值2,)[,(值1,值2,..)..];

(2)修改数据

UPDATE 表名 SET 字段1=值1 ,字段2 =值2 [WHERE 条件]l

(3)删除数据

DELETE FROM 表名 [WHERE 条件];

三、SQL - DQL – 数据查询语言

3.1 语句顺序

3.1.1 书写顺序
SELECT
        字段列表            字段名[AS]别名
FROM
        表名列表
WHERE 
        条件列表           分组之前过滤
GROUPBY
        分组字段列表  
HAVING
        分组后条件列表   分组之后过滤
ORDERBY 
        排序字段列表      升序ASC 降序DESCLIMIT
        分页参数           起始索引从0开始
        
        
3.1.2 执行顺序
FROM
        表名列表
WHERE
        条件列表
GROUPBY
        分组字段列表
HAVING
        分组后条件列表
SELECT
        字段列表
ORDERBY
        排序字段列表
LIMIT
        分页参数

3.2 基本查询(SELECT和FROM配合)

3.2.1.> 查询多个字段

(1)

SELECT 字段1 ,字段2,字段3..FROM 表名;

在这里插入图片描述

(2)

SELECT *FROM 表名;

SELECT* 的*为通配符,效率低
在这里插入图片描述

3.2.2> 设置别名

as可以省略写

SELECT 字段1[AS 别名1] ,字段2[AS 别名2],..FROM 表名;

真名和替换名使用

select id,id as stu_id,name,name as stu_name from username;

在这里插入图片描述

3.2.3 去除重复记录
 SELECT DISTINCT 字段列表 FROM 表名

去除的时候,不能在distinct前面有其他的字段,要不然“长度”不对呀,会报错
在这里插入图片描述

在这里插入图片描述

3.3 条件查询(where)

注意事项:

对于selct语句执行顺序  FROMWHEREGROUPBYHAVINGSELECTORDERBYLIMIT
3.3.1
 SELECT 字段列表 FROM 表名列表

‘>’ ‘>=’ '< ’ '<= ‘=’
不等于 '<> 或者 !=
BETWEEN…AND 介于某个范围之间
IN(…)介于in列表之间的某个值
LIKE 站位符 模糊查询【_匹配单个字符 ,%匹配多个字符】
IS NULL
AND 与 && 、 OR 与|| 、 NOT与 !,他们各自效果是一样的

·
注意事项:
between ……and……语句 上下包含。
between…and不能写反

3.4.分组查询(GROUP BY)

3.4.1 学习一下聚合函数(一列的整体数据纵向的计算)
count 、max、 min、 avg、 sum

直接作用字段,且null值不参与聚合函数运算

SELECT 聚合函数(字段列表)FROM 表名

在这里插入图片描述

3.4.2 分组
SELECT 字段列表 FROM[WHERE 条件]GROUPBY 分组字段名[HAVING 分组后的过滤条件];

请添加图片描述

3.4.3 WHERE,GROUP BY和HAVING

在SQL中,WHERE,GROUP BY和HAVING都是用于筛选和分组数据的关键字,但它们的使用场景和方式有所不同。

  • WHERE子句用于筛选FROM子句中指定的操作所产生的行。它在数据分组之前进行筛选。WHERE不对聚合函数进行判断,但可以使用Having
  • GROUP BY子句用于对WHERE子句的输出进行分组。它可以将多行数据根据指定的列进行分组。
  • HAVING子句用于从分组的结果中筛选行。它在数据分组之后进行筛选,主要用于对分组后的数据进行条件筛选。
  • 所以,如果你想在分组后对统计结果进行筛选,你必须使用HAVING,而不能使用WHERE
SELECT 列名, 聚合函数(列名)FROM 表名
WHERE 列名 运算符 值
GROUPBY 列名
HAVING 聚合函数(列名) 运算符 值;

注意事项
执行顺序:where > 聚合函数 > having
分组后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

3.4.4 排序查询ORDER BY排序字段列表
SELECT 字段列表 FROM 表名 ORDERBY 字段1 排序方式1,字段2,排序方式2;

(1)排序方式:

ASC:升序 (默认)

DESC:降序

(2)排序先按第一个方式,再第二个方式

在这里插入图片描述

3.4.5.分页查询LIMIT

SELECT 字段列表 FROMLIMIT 起始索引,查询记录数;

在这里插入图片描述
如果你想要实现分页查询,你可以使用OFFSET关键字,语法如下:

SELECT 列名
FROM 表名
LIMIT 数量 OFFSET 数量;

LIMIT语句的简写形式也是对的。如果你只想限制返回的记录数,而不指定起始索引,你可以直接写LIMIT 数量。

四、SQL - DCL – 数据控制语言

DCL(Data Control Language)是数据控制语言的缩写,主要用于控制不同数据的权限和访问级别,这种语言包括两个部分:GRANT和REVOKE。GRANT用于授予用户权限,而REVOKE用于撤销用户的权限。

4.1 管理用户

4.1.1,查询用户
use mysql;
SELECT*FROMuser;

在这里插入图片描述

4.1.2.创建用户
CREATEUSER ‘用户名’@'主机名' IDENTIFIED BY'密码'

在这里插入图片描述

检测有没有权限访问其他数据库
在这里插入图片描述
在任意主机访问

CREATEuser'GG'@'%' identified  by'123456';
4.1.3.修改用户密码
ALTERUSER'用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY'新密码'ALTERUSER'HH'@'localhost' IDENTIFIED with mysql_native_password BY'10000';

在这里插入图片描述

4.1.4.删除用户
DROPUSER'用户名'@‘主机名’;

在这里插入图片描述
注意事项:

主机名可以用%通配;

主要有DBA数据库管理员使用

4.2权限控制

4.2.1.查询权限
show grants for'用户名'@'主机名'
4.2.2.授予权限
grant 权限列表 on
数据库名.表名 to'用户名'@'主机名'
4.2.3.撤销权限
revoke 权限列表 on
数据库名.表名 from'用户名'@'主机名'
4.2.4.全部权限
GRANTALLPRIVILEGESON*.*TO'username'@'localhost';
标签: mysql oracle 数据库

本文转载自: https://blog.csdn.net/m0_74154295/article/details/133943563
版权归原作者 你会魔法吗✧(≖ ◡ ≖✿) 所有, 如有侵权,请联系我们删除。

“MySQL的基础(一)”的评论:

还没有评论