第一节:MySQL安装及启动

启动

法一

在cmd中输入命令service.msc打开windows的系统服务列表,找到MySQL右键直接启动/停止

法二

直接使用命令行:启动net start mysql80,停止net stop mysql80【mysql80指的是在安装时所指定的注册到windows的系统服务的服务名称】

客户端连接

法一

使用MySQL提供的客户端命令行工具,打开后直接输入数据库密码即连接成功

法二

使用windows的命令行工具来连接,打开cmd,输入命令

mysql [-h 127.0.0.1][-p 3306] -u root -p

mysql”表示运行当前目录下的 mysql.exe

-u root” 表示以root用户的身份登录【-u和root之间的空格可以省略】

-p”表示指定密码

[-h 127.0.0.1]指的是连接的数据库的IP地址

[-p 3306] 指的是连接的数据库的端口号

这两部分可以省去,默认连接本机

回车之后输入密码即可登录成功

【使用此方法需要提前配置PATH环境变量,把MySQL的安装包里面的bin目录的路径添加到环境变量当中】

第二节:数据模型

关系型数据库RDBMS

概念

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

特点

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

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

数据

模型

第三节:SQL通用语法

通用

语法

1.SQL语句可以单行或多行书写,以分号结尾
2.SQL语句可以使用空格/缩进来增强语句的可读性
3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
4.注释:

单行注释:--注释内容或#注释内容(MySQL特有)【注意--后有一个空格】
多行注释/*注释内容*/

第四节:SQL分类

DDL

Data Definition Language

数据定义语言,用来定义数据库对象(数据库,表,字段)

DML

Data Manipulation Language

数据操作语言,用来对数据库表中的数据进行增删改

DQL

Data Query Language

数据查询语言,用来查询数据库中表的记录

DCL

Data Control Language

数据控制语言,用来创建数据库用户、控制数据库的控制权限

第五节:DDL(data definition language数据定义语言)

数据库操作

查询所有数据库

SHOW DATABASES;【注意是复数形式】

查询当前数据库

SELECT DATABASE();

创建数据库

CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集] [COLLATE 排序规则 ];【字符集指的是UTF8之类的,数据库一般有默认的,但是数据库中一般不建议设置utf8字符集,因为UTF8字符集长度为3字节,有些符号占4字节,所以推荐用utf8mb4字符集

删除数据库

DROP DATABASE [ IF EXISTS ] 数据库名

使用数据库

USE 数据库名 【切换到目标数据库】

操作

结构

查询

查询当前数据库所有表

SHOW TABLES;

查询表结构

DESC 表名;【展示二维表结构图形】

查询指定表的建表语句

SHOW CREATE TABLE 表名;【能知道表明对应的属性】

创建

CREATE TABLE 表名(

字段1 字段1类型 [COMMENT 字段1注释],

字段2 字段2类型 [COMMENT 字段2注释],

字段3 字段3类型 [COMMENT 字段3注释],

...

字段n 字段n类型 [COMMENT 字段n注释]

)[ COMMENT 表注释 ];

Create table tb_user(
     id int comment'编号',
    name varchar(50) comment'姓名',
    age int comment'年龄',
    gender varchar(1)'性别'
) comment‘用户表';

例:

Create table emp(

Id int comment '编号',

Workno varchar(10) comment'工号',

Name varchar(10) comment'性别',

Gender char(1)comment'性别',

Age tinyint unsigned comment'年龄',

Idcard char(18)comment'身份证号',

Entrydate data comment'入职时间'

)comment'员工表';

修改

添加

字段

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

例子:alter table emp add nickname varchar(20)comment'昵称';

修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

修改字段名和字段类型

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

例:将emp表的nickname字段修改为username,类型为varchar(30)

alter table emp change nickname username varchar(30) comment '用户名';

删除

字段

ALTER TABLE 表名 DROP 字段名;

例:将emp表中字段username删除
alter table emp drop username

修改

表名

ALTER TABLE 表名 RENAME TO 新表名

例:将emp表的表名修改为employee
alter table emp rename to employee

删除

删除表

DROP TABLE [IF EXISTS] 表名;

删并

重创

TRUNCATE TABLE 表名;【类似格式化的含义,删除表中所有数据,然后形成新的空表】

数据

类型

第六节:DML(data manipulation language数据操作语言)

添加

指定字段

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

全部字段

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

批量添加

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

注意

  • 字符串和日期类型数据应该包含在引号中
  • 插入的数据大小应该在字段的规定范围内

修改

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

删除

DELETE FROM 表名 [ WHERE 条件 ];

第七节:DQL(Data QueryLanguage数据查询语言)

语法

结构

SELECT

字段列表

FROM

表名字段

WHERE

条件列表(条件查询)

GROUP BY

分组字段列表(分组查询)

HAVING

分组后的条件列表

ORDER BY

排序字段列表(排序查询)

LIMIT

分页参数(分页查询

基本

查询

查询多字段

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

SELECT * FROM 表名;【开发中一般不用*,因为其他人不知道查询得字段是什么】

设置

别名

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

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

【设置别名时,AS可以省略】

去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;【查询结果去重】

条件

查询

语法

SELECT 字段列表 FROM 表名 WHERE 条件列表;

条件

比较运算符

功能

>

大于

>=

大于等于

<

小于

<=

小于等于

=

等于

<> 或 !=

不等于

BETWEEN ... AND ...

在某个范围内(含最小、最大值)

IN(...)

在in之后的列表中的值,多选一

LIKE 占位符

模糊匹配_匹配单个字符,%匹配任意个字符)

IS NULL

是NULL

逻辑运算符

功能

AND 或 &&

并且(多个条件同时成立)

OR 或 ||

或者(多个条件任意一个成立)

NOT 或 !

非,不是

例子

-- 年龄等于30

select * from employee where age = 30;

-- 年龄小于30

select * from employee where age < 30;

-- 小于等于

select * from employee where age <= 30;

-- 没有身份证

select * from employee where idcard is null or idcard = '';

-- 有身份证

select * from employee where idcard;

select * from employee where idcard is not null;

-- 不等于

select * from employee where age != 30;

-- 年龄在20到30之间

select * from employee where age between 20 and 30;

select * from employee where age >= 20 and age <= 30;

-- 下面语句不报错,但查不到任何信息

select * from employee where age between 30 and 20;

-- 性别为女且年龄小于30

select * from employee where age < 30 and gender = '女';

-- 年龄等于25或30或35

select * from employee where age = 25 or age = 30 or age = 35;

select * from employee where age in (25, 30, 35);【省略ororor

-- 姓名为两个字

select * from employee where name like '__';【两个下划线进行模糊匹配】

-- 身份证最后为X

select * from employee where idcard like '%X';

聚合

函数

概念

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

常见

函数

函数

功能

count

统计数量

max

最大值

min

最小值

avg

平均值

sum

求和

语法

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

【注意:null值不参与所有聚合函数运算】

例子

--1.统计企业员工数量

Select count(*)from emp; 或者是 select count(id) from emp;

--2.统计企业员工的平均年龄

Select avg(age)from emp;

--3.统计该企业员工的最大年龄

Select max(age)from emp;

--4.统计该企业员工的最小年龄

Select min(age)from emp;

--5.统计西安地区员工的年龄之和

Select sum(age)from emp where workaddress="西安";

分组

查询

语法

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

区别

wherehaving区别

执行时机不同

where分组之前进行过滤,不满足where条件不参与分组;having分组后对结果进行过滤

判断条件不同

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

【执行顺序就是where>聚合函数>having

例子

--1.根据性别分组,统计男性和女性数量(只显分组数量,不显哪个是男哪个是女)

select count(*) from employee group by gender;

【分组的同时聚合,在此处的意义即统计出每组的人数】

--2.根据性别分组,统计男性和女性数量(会显示男女)

select gender, count(*) from employee group by gender;

--3.根据性别分组,统计男性和女性的平均年龄

select gender, avg(age) from employee group by gender;

--4.年龄小于45,并根据工作地址分组

select workaddress, count(*) from employee where age < 45 group by workaddress;

--5.年龄小于45,并根据工作地址分组,获取员工数量大于等于3的工作地址

select workaddress, count(*) address_count from employee where age < 45 group by workaddress having address_count >= 3;

注意

  • 执行顺序:where > 聚合函数(group by分组同时聚合) > having
  • 分组后,查询的字段一般为聚合函数分组字段,查询其他字段无任何意义

排序

查询

语法

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

排序

方式

1.ASC:升序(默认值)【因为是默认,可以省略】

2.DESC:降序

【如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序】

例子

--1.根据年龄升序排序

Select*from emp order by age asc;

Select*from emp order by age ;  【省略asc】

--2.根据两个字段排序,根据年龄升序排序,入职时间降序排序

select * from employee order by age ASC, entrydate DESC;

【如果年龄相同,再根据入职时时间降序排序】

分页

查询

语法

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数

注意

事项

- 起始索引从0开始,起始索引 =(查询页码 - 1)* 每页显示记录数

- 分页查询是数据库的方言,不同数据库有不同实现,MySQL是LIMIT

- 如果查询的是第一页数据,起始索引可以省略,直接简写 LIMIT 10

例子

--1.查询第一页数据,展示10

select * from employee limit 0, 10;【0-9十条记录】

--2.查询第二页

select * from employee limit 10, 10;【10-19十条记录】

例子

1.查询年龄为20212223岁的女性员工信息

select * from emp where age=20 || age=21||age=22||age=23

select * from emp where gender="女" and age in(20,21,22,23)  //查询女性

2.查询性别为男 ,并且年龄在20-40 岁(含)姓名为三个字的员工

select * from emp where gender="男" and (age between 20 and 40 ) and name like "_ _ _";

3.查询年龄小于60,男性员工和女性员工的人数

Select gender count(*) from emp where age <60 group by gender

Select gender count(*) from emp group by gender having age<60  //此时不行,count计算错误

【思路:先分组group by根据性别,并统计分组数量

select gender count(*)from emp where group by gender】

4.查询年龄小于等于35 岁的员工的姓名和年龄,查询结果按年龄升序排序,如果年龄相同按入职时间降序

select name,age from emp where age<=35 order by age asc,time desc

5.查询性别为男,且年龄在20-40()以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序

select * from emp where gender="男" and age between 20 and 40 order by age asc ,date asc limit  5

顺序

编写:select 字段列表from表名where条件group by分组having分组后条件order by排序limit分页
执行:
from表名where条件group by分组having分组后条件select字段列表order by排序limit分页

第三节:DCL(Data Control language数据控制语言)

管理

用户

查询

用户

USE mysql;

SELECT * FROM user;

创建

用户

CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

修改用户密码

ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';

删除

用户

DROP USER '用户名'@'主机名';

例子

--1.创建用户itcast,只能在当前主机localhost访问

create user 'itcast'@'localhost' identified by '123456';

【如果需要准许在任意机器中都能访问该数据库,把localhost改为%】

--2.创建用户test,能在任意主机访问该数据库,密码123456

create user 'test'@'%' identified by '123456';

create user 'test' identified by '123456';

--3.修改密码

alter user 'test'@'localhost' identified with mysql_native_password by '1234';

--4.删除用户

drop user 'test'@'localhost';

【因为最开始就已经use mysql,在当前数据库下创建用户,且设置该用户的权限】

注意

主机名可以使用%通配
这类SQL开发人员操作的比较少,主要是运维和DBA数据库管理员使用

权限

控制

权限

说明

ALL, ALL PRIVILEGES

所有权限

SELECT

查询数据

INSERT

插入数据

UPDATE

修改数据

DELETE

删除数据

ALTER

修改表

DROP

删除数据库/表/视图

CREATE

创建数据库/表

查询权限

SHOW GRANTS FOR '用户名'@'主机名';

授予权限

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

撤销权限

REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';

注意

1.多个权限用逗号分隔

2.授权时,数据库名和表名可以用 * 进行通配,即所有数据库所有表的所有权限

《数据库》基础篇-SQL语言相关推荐

  1. sql查询百分之20到百分之40的数据_数据库基础学习——SQL语言知识总结(6)

    1 视图(View) 1.1什么是视图 可以通过创建表的视图来表现数据的逻辑子集或数据的组合.视图是基于表或另一个视图的逻辑表,一个视图并不包含它自己的数据,它象一个窗口,通过该窗口可以查看或改变表中 ...

  2. 数据库实验4 SQL语言-SELECT查询操作

    数据库实验4 SQL语言-SELECT查询操作 1.首先按照第三章的jxgl数据库的模板创建jxgl数据库并插入数据: 创建数据库jxgl: create database jxgl; 创建相应的表: ...

  3. 【校招VIP】数据库基础之sql五十道题

    考点介绍: 数据库在测试工程师的面试过程中也是常问的一项.面试有一定的层次性,如bat级别公司每个点都会深入,而有些公司则只会问到表层,所以每个领域都分为必须掌握和深入了解这两个部分. 本期分享的数据 ...

  4. 如何启动MongoDB数据库 - 基础篇

    安装好了之后,我们如何启动MongoDB数据库? 找到默认的安装路径 安装完毕之后,我们找到默认的安装路径,截图如下: 启动的时候,需要初始化一个数据库文件.步骤如下: 安装者自行设定(新建文件夹,自 ...

  5. uniCloud 云函数操作云数据库-基础篇

    uniCloud 云函数操作云数据库-基础篇 原文:uniCloud 云函数操作云数据库-基础篇 1. database() 获取数据库对象 const db = uniCloud.database( ...

  6. 数据库基础与SQL基础知识看这篇就够了!

    一.数据库简介 1. DBMS(DataBaseManagement System,数据库管理系统)和数据库数据库Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完 ...

  7. 2022MySQL数据库-基础篇

    1. MySQL概述 在这一章节,我们主要介绍两个部分,数据库相关概念及MySQL数据库的介绍.下载.安装.启动及连接. 1.1 数据库相关概念 在这一部分,我们先来讲解三个概念:数据库.数据库管理系 ...

  8. SQL语言基础:SQL语言概念知识笔记

    1.SQL标准 ANSI(美国国家标准机构)SQL 对ANSI SQL进行修改后在1992年采用的标准SQL-92或SQL2 SQL-99或SQL3标准从SQL2扩充而来,增加了对象关系特征和许多其他 ...

  9. MySQL数据库 --- 基础篇

    一.MySQL概述 1.1.数据库相关概念 名称 全称 简称 数据库 存储数据的仓库,数据是有组织的进行存储 DataBase(DB) 数据库管理系统 操纵和管理数据库的大型软件 DataBase M ...

最新文章

  1. JavaScript 的同源策略
  2. 白话Elasticsearch46-深入聚合数据分析之Cardinality Aggs-cardinality去重算法以及每月销售品牌数量统计
  3. python如何遍历文件夹中的所有图片_python实现遍历文件夹图片并重命名
  4. 如何在linux下通过ssh运行X图形软件
  5. 计算机网络按信息传输介质的性能来划分,大学计算机基础练习题网络技术.doc...
  6. mysql update nowait_MySQL 8.0新特性 -- nowait以及skip locked
  7. axios vue 动态date_Web前端Vue系列之-Vue.js 实战
  8. grep 和 sed:linux经常使用工具 amp; 基本正則表達式
  9. 收藏 | 程序员生涯指南,在GitHub上获3.6万星
  10. [过年菜谱之]清蒸鲈鱼
  11. 【Go 框架开发】Zinx 框架开发笔记
  12. Andriod:serializer序列化器生成xml文件
  13. 怎么用itunes来打开手机软件
  14. BOOST升压电路原理详解
  15. 定时任务Quartz 之 cron表达式(时间表达式)
  16. 凯立德2015夏季3621J0P4G卡版分区地图
  17. Android Studio实现用户登陆界面demo(xml实现)
  18. postgresql 日期相减
  19. 自己做语料——Python爬取新闻联播文字版
  20. MySQL DQL操作之基础查询

热门文章

  1. 探索性数据分析(三)—— 异常值处理
  2. opencv3--斑点检测simpleBlobDetector
  3. Ubunu18 PNG 和 JPG 批量互转的四种方法
  4. Webpack5:用webpack打包js文件
  5. android apk瘦身方法
  6. 2.3ORBSLAM3之相机模型与畸变模型
  7. 【GitHub】Branches和Tags分别是做什么用的?
  8. TCP/IP协议简介(五) 之 应用层
  9. 电话机器人智能语音机器人之:语音识别,让电脑听懂人说话
  10. 【转载】html网页字体颜色代码大全