前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【学习笔记】MySQL学习笔记-服务启动与SQL篇

【学习笔记】MySQL学习笔记-服务启动与SQL篇

作者头像
Karos
发布2023-01-03 16:12:13
3710
发布2023-01-03 16:12:13
举报
文章被收录于专栏:MyBlog-KarosMyBlog-Karos

前言 本文是基于MySQL8.0版本的学习笔记,其他版本请选择性学习!

数据库

MySQL

1.启动Mysql

通过net服务启动

代码语言:javascript
复制
net start mysql80

关闭

代码语言:javascript
复制
net stop mysql80

2.进入并连接Mysql

通过MysqlShell 通过命令行进入

命令如下:

代码语言:javascript
复制
mysql [-h ip地址] [-p 端口号] [-u 登录名] -p

如果启动本地mysql,-h和-p可以省略

代码语言:javascript
复制
mysql -u root -p

3.数据模型

1.关系型数据库 RDBMS

概念:建立再关系模型基础上,由多张相互连接的二维表组成的数据库

特点:

使用表存储数据,格式统一,便于维护

使用SQL语言操作,标准统一,使用方便

个人觉得像链表,有点链式前向星的感觉

DBMS 数据库管理系统

SQL

SQL通用语法

SQL分类

DDL – 数据库定义语言

数据定义语言 — 操作数据库 数据库表 数据库字段的定义

1.DDL-数据库操作
1.查询

​ 查询所有数据库

代码语言:javascript
复制
SHOW DATABASES

​ 查询当前数据库

代码语言:javascript
复制
SELECT DATABESE();
2.创建

​ 如果不存在 则创建

代码语言:javascript
复制
CREATE DATEBASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
3.删除
代码语言:javascript
复制
DROP DATABASE [IF EXISTS] 数据库名
4.使用
代码语言:javascript
复制
USE 数据库名
2.DDL-表操作-查询
1.查询当前数据库所有表
代码语言:javascript
复制
SHOW TABLES;

​ 使用前得适合用use指令进入当前数据库

2.查询表结构
代码语言:javascript
复制
DESC 表名;
3.查询指定表的建表语句
代码语言:javascript
复制
SHOW CREATE TABLE 表名;
3.DDL-表操作-创建
代码语言:javascript
复制
CREATE TABLE 表名(
    字段 字段类型 [COMMENT 字段注释],
    字段 字段类型 [COMMENT 字段注释],
    字段 字段类型 [COMMENT 字段注释],
    字段 字段类型 [COMMENT 字段注释],
    字段 字段类型 [COMMENT 字段注释],
    字段 字段类型 [COMMENT 字段注释]
)[COMMENT 表注释];

[…]为可选参数,最后一个字段后面没有逗号

表操作创建练习

代码语言:javascript
复制
create table user_message(
    id int comment "序号",
    name varchar(50) comment "姓名",
    age int comment "年龄",
    gender varchar(50) comment "性别"
)

在SQL语句中 varchar用于可变长度字符串,char用于不可变长度字符串 下面是个人在经验中对可变与不可变字符串的使用总结: char 常用于一些属性的统计,比如姓名、性别、电话号码、账号、密码等 而varchar 往往是用来存储文章、代码、以及评论等等 char的性能往往比varchar的性能更好

4.DDL-表操作-数据类型

​ 数据类型较多,主要分为三类:数值类型 字符串类型 日期时间类型

DECIMAL (精度:长度 ,标度:小数位数)

double(M,D)

BLOB 二进制数据T EXT 文本数据

小案例

代码语言:javascript
复制
create table user_msg(
    id int comment "编号",
    user_id varchar(10) comment "员工工号",
    user_name varchar(10) comment "员工姓名",
    user_sex char(1) comment "员工性别",
    user_age tinyint comment "员工年龄",
    user_idcard char(18) comment "员工身份证号",
    user_joinDate DATE comment "员工生日"
)comment "该表存储员工的个人信息";
5.DDL-表操作-修改&删除
添加字段
代码语言:javascript
复制
ALTER TABLE 表名 ADD 字段名 类型(长度) [comment 注释] [约束];

例子: 在上面的案例中添加一个字段 昵称 alter table user_msg add user_nickname varchar(10) comment “用户昵称”;

修改字段名和字段类型
代码语言:javascript
复制
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
ALTER TABLE 表名 MODIFY 字段名 类型(长度) [comment 注释(只修改类型)] [约束];

alter table user_msg change user_nickname user_newname varchar(30) comment “用户昵称”;

删除字段
代码语言:javascript
复制
ALTER TABLE 表名 DROP 字段名;

alter table user_msg drop user_newname;

alter 意为改变 所以可以这样理解: 改变 表 那个表 操作 操作单元; 对表的操作 RENAME TO

删除表
代码语言:javascript
复制
DROP TABLE [IF EXISTS] 表名 COMMENT "删除指定表";
TRUNCATE TABLE 表名 COMMENT "删除并重新创建当前表 只删除数据";

删除表时,表中的数据也会一并清除

DML – 完成数据的增删改

DML (Data Manipulation Language)数据库操作语言。

添加数据(INSERT)

修改数据(UPDATE)

删除数据(DELETE)

INSERT的用法

给指定字段添加数据

代码语言:javascript
复制
INSERT INTO 表名 (字段,字段,...) VALUES (值,值,...)

给全部字段添加数据 直接省略 字段的选择

代码语言:javascript
复制
INSERT INTO 表名 VALUES (值,值,...)

然后对于values后面的每一对数据,我们可以用逗号分隔开,以此来批量添加数据

注意点 1.插入时,指定字段顺序必需和值的顺序是一一对应的 2.字符串和日期型数据应该包含在引号中 3.插入的数据大小,应该在字段的规定范围内

UPDATE的用法

update修改数据

代码语言:javascript
复制
UPDATE 表名 SET 字段名=值,字段名=值,...[WHERE 条件]

比如,我们要修改user表中id=1的字段的name数据,可以这样写

update user set name=”BOB” where id=1

没有条件默认全部修改

在这里说一下set

像一个表,也可以说是一个set

这里可以明显的看出一个关系图

DELETE的用法

DLELETE 删除数据

代码语言:javascript
复制
DELETE FROM 表名 [WHERE 条件]

按照上面的想法,那不写where就是删除全部数据,写了where就删除某一条数据

delete语句不能够删除某一个字段的值,如果需要,请使用 update 表名 set 字段名 = null where id=1

DQL

Data Query Language数据查询语言

语法

SELECT 字段列表 FROM 表名列表 GROUP BY 分组字段列表 HAVING 分组后条件列表 ORDER BY 排序字段列表 LIMIT 分页参数

基本查询
1.查询多个字段
代码语言:javascript
复制
SELECT 字段1,字段2,字段3... FROM 表名;
代码语言:javascript
复制
SELECT * FROM 表名;# *号为通配符
2.设置别名
代码语言:javascript
复制
SELECT 字段1 [AS 别名1]...FROM 表名;
3.去除重复记录
代码语言:javascript
复制
SELECT DISTINCT 字段列表 FROM 别名

注意点,distinct是对你所查询的字段组成的set去重,而不是对某一字段去重

条件查询 WHERE
1.语法
代码语言:javascript
复制
SELECT 字段列表 FROM 表名 WHERE 条件列表
2.条件
聚合函数 count max min
1.介绍

将一列数据作为一个整体,进行纵向的计算

2.常见的聚合函数

count、max、min、avg、sun

顾名思义就不写意义了

3.语法
代码语言:javascript
复制
SELECT 聚合函数(字段列表) FROM 表明;

注意:所有的null值不参与聚合函数的运算 count*包含值为null的行数 但如果是常量,那就不包含

分组查询 GROUP BY
1.语法
代码语言:javascript
复制
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件]
2.where与having区别

1.执行时机不同

​ where是分组之前进行过滤,不满足where条件不参与分组;

​ having是在分组后进行过滤

2.判断条件不同

​ where不能对聚合函数进行判断,而having可以

注意: 执行顺序:where>聚合函数>having 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义,会返回第一个出现的

排序查询 ORDER BY
1.语法
代码语言:javascript
复制
SELECT 字段列表 FORM ORDER BY 字段1 排序方式 ,字段2 排序方式;
2.排序方式

ASC:升序(default)

DESC:降序

分页查询 LIMIT
1.语法
代码语言:javascript
复制
SELECT 字段列表 FROM 表明 LIMIT 起始索引,查询记录数;

注意: 起始索引从0开始,寝室索引=(查询页码-1)*每页查询记录数 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL是LIMIT 如果查询的是第一页数据,起始索引可以省略,直接简写成LIMIT 10

DPL执行顺序

DCL

Data Control Language 数据控制语言 用于管理数据库 用户 控制数据库的访问权限

用户管理
1.查询用户
代码语言:javascript
复制
USE mysql;
SELECT * FROM user;

用户信息存储在mysql数据库的user表中

2.创建用户
代码语言:javascript
复制
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

创建用户 admin,只能够在当前主机localhost访问 create user ‘admin’@’localhost’ identified by ‘123456’

创建用户 admin,可以在任意主机访问该数据库,密码123456 create user ‘admin’ @ ‘%’ identified by ‘123456’

3. 修改用户密码
代码语言:javascript
复制
ALTER USER '用户名'@'主机名' IDENTIFiED WITH mysql_native_password BY '新密码';
4.删除用户
代码语言:javascript
复制
DROP USER '用户名'@'主机名';

在创建用互动时候,主机名可以用%通配 这些语句开发人员不常使用,通常为DBA使用

权限控制

MYSQL定义了很多的权限,以下是常用权限

权限

说明

ALL,ALL PRIVILEGES

所有权限

SELECT

查询数据

INSERT

插入数据

UPDATE

修改数据

DAELETE

删除数据

ALTER

修改表

DROP

删除数据库/表.试图

CREATE

创建数据库/表

更多的查看官方文档

查询权限
代码语言:javascript
复制
SHOW GRANTS FOR '用户名'@'主机名';
授予权限
代码语言:javascript
复制
GRANT 权限列表 ON 数据库名.表明 TO '用户名'@'主机名';
撤销权限
代码语言:javascript
复制
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

如果某个用户正在使用某个数据库,在此时对这个用户进行撤销权限以后,仍然可以查询

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-5-14 2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库
    • MySQL
      • 1.启动Mysql
      • 2.进入并连接Mysql
      • 3.数据模型
    • SQL
      • SQL通用语法
      • SQL分类
      • DDL – 数据库定义语言
      • DML – 完成数据的增删改
      • DQL
      • DCL
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档