MySQL必知必会(初级篇)

这篇具有很好参考价值的文章主要介绍了MySQL必知必会(初级篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MySQL必知必会(初级篇)

1.基本概念

MySQL必知必会(初级篇)

数据库(DataBase,DB),是统一管理的、长期存储在计算机内的、有组织的相关数据的集合。特点是数据见联系密切、冗余度小、独立性高、易扩展,并且可以为各类用户共享。

MySQL:是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一。

  • MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
  • MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 具有体积小、速度快、总体拥有成本低以及开放源码的特点。

2.SQL语言

SQL(Structured Query Language):结构化查询语言
其实就是定义了操作所有关系型数据库的规则。它是关系数据库中最普遍使用的语言,包括数据查询(Query)、数据操纵(Manipulation)、数据定义(Definition)、数据控制(Control)功能,是一种通用的、功能强大的关系数据库的标准语言。

SQL语言功能强大,完成核心功能只用9个动词,包括以下几类:

  • 数据查询(DQL):select
  • 数据操纵(DML):create、drop、alter
  • 数据定义(DDL):insert、update、delete
  • 数据控制(DCL):grant、revoke

2.SQL通用语法
① SQL语句可以单行或多行书写,以分号结尾。
2可使用空格和缩进来增强语句的可读性。
3 MySOL 数据库的SQL语句不区分大小写,关键字建议使用大写。
4三种注释
单行注释:–注释内容或#注释内容(mysql特有)多行注释:/注释/

2.1 DCL(数据控制语言)

DCL(Data Control Language)数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT,REVOKE 等

2.1.1创建用户

  1. 创建一个test用户可以在任意IP地址上登陆mysql
create user 'mc'@'%' identified by 'root';
  1. 修改用户密码
set password for 'mc'@'%' = '123456';
  1. 刷新权限(修改完密码,一定要刷新权限)
flush privileges;

2.1.2 使用grant命令给用户授权

格式:grant 权限 on 数据库对象 to 用户

  1. 给用户授予所有的权限
grant all on test.user to 'mc'@'%';
  1. 给数据库中的所有表授权
grant all on test.* to 'mc'@'%';
  1. 授予普通数据用户,查询、插入、更新、删除数据库中所有表数据的权限
grant insert,update,delete,select on test.user to 'mc'@'%';

2.1.3 使用revoke命令撤销权限

  1. 撤销用户所有权限
revoke all on test.user from 'mc'@'%';
  1. 撤销普通数据用户,查询、插入、更新、删除数据库中所有表数据的权限
revoke insert,update,delete,select on test.user from 'mc'@'%';
  1. 查看权限
show grants for 'mc'@'%';
  1. 删除用户
drop user 'mc'@'%';

2.2 DDL(数据定义语言)

DDL(Data Definition Language)数据定义语言用来定义数据库对象:数据库,表,列等。关键字:create,drop,alter等

2.2.1 mysql常用约束类型

约束名称 描述
NOT NULL 非空约束
UNIQUE 唯一约束,不允许出现重复值
PRIMARY KEY 主键约束(关键字),自带非空、唯一、索引
DEFAULT 默认值(缺省值)
FOREIGN KEY 外键约束(外关键字)
AUTO_INCREMENT 自动递增
  • 创建一个student表(PRIMARY KEY、DEFAULT)
-- 设置主键的方式一:
create table student(
	id int primary key,   -- 设置主键
	name varchar(20) not null,
	gander char(4) default '男', -- 设置默认值为  男
	country varchar(50),
	brithday date
);
-- 设置主键的方式二:
create table student(
	id int, 
	name varchar(20) not null,
	gander char(4) default '男', 
	country varchar(50),
	brithday date,
	primary key(id)
);
  • 创建图书表(AUTO_INCREMENT、UNIQUE)
create table book(
	id int primary key auto_increment, -- 设置主键,并设置自动递增
	name varchar(20) not null,
	bar_code varchar(30) not null unique,  -- 这就是唯一约束的定义
	s_id int not null,
)
  • 创建图书和作者表(FOREIGN KEY)
-- 创建作者表
create table author(
	aut_id int ,
	aut_name varchar(20) not null,
	gander char(2),
	country varchar(50),
	brithday datetime
	primary key(aut_id,aut_name)  -- 联合主键
);

-- 创建图书表
create table book(
	id int primary key auto_increment,
	name varchar(20) not null,
	bar_code varchar(30) not null unique,
	aut_id int not null,
	foreign key (aut_id) references author(aut_id)  -- 外键约束
)

2.2.2 使用alter命令修改表结构

-- 添加列
alter table user add(hobby varchar(50),city varchar(20));
-- 修改列的类型
alter table user modify city varchar(30);
-- 修改表的列名和类型
alter table user change hobby hobbies varchar(20);
-- 删除列
alter table user drop hobbies;
-- 修改表名
alter table user rename users;

2.2.3 使用drop命令删除表

-- 删除表
drop table users;
-- 查看表结构
desc users;

2.3 DML(数据操纵语言)

DML(Data Manipulation Language)数据操作语用来对数据库中表的数据进行增删改。关键字:insert, delete,update等

2.3.1 使用insert命令插入数据

-- 单条数据插入
insert into `student` (id,name,gander,country,brithday) values (1,'tom','男','美国','1999-1-14');

insert into `student` values (2,'jack','男','英国','1969-1-1');
-- 批量插入
insert into `student` (id,name,gander,country,brithday) values (3,'lili','女','美国','1998-2-14'),(4,'jery','男','英国','1969-1-1'),(5,'lucy','女','英国','1989-10-1');

2.3.2 使用update命令插入数据

update `student` set name = 'tony';
-- 上边的语句会将该表中所有的name全修改为tony,因此我们需要使用where语句进行限制
-- 如下:
-- 将id为2的学生姓名改为tony
update `student` set name = 'tony' where id = 2;

2.3.3 使用delete命令插入数据

-- 删除表中的所有数据
delete from student;
-- 删除单条数据,删除id为5的学生数据
delete from student where id = 5;

2.4 DQL(数据查询语言)

DQL(Data Query Language)数据查询语言用来查询数据库中表的记录(数据)。关键字:select,where 等

2.4.1 单表查询

创建下面四个表,然后填充几组数据

  • course表

MySQL必知必会(初级篇)

  • scores表

MySQL必知必会(初级篇)

  • student表

MySQL必知必会(初级篇)

  • teacher表

MySQL必知必会(初级篇)

  1. 查询表中所有数据
-- 查询所有   * 表示所有列 
select * from 表名;
-- 查询指定列或所有
select 列名1,列名2[...] from 表名;

-- 举个例子
select * from student;
select id,name,age,genderfrom student;
  1. 列运算

数量类型的列可以做加、减、乘、除等运算;

--- 学生年龄都长了一岁
select id,name,age+1,genderfrom student;

注意

  • null加任何值都等于null
  • 将字符串做加减乘除运算,会把字符串当作0。
  1. 别名

给数据表中的列名起个别名,方便查询数据

-- 别名使用方式:只需要在列名后加 as 新列名即可,as可省略
select 列名1 as 别名1,列名2 as 别名2[...] from 表名;
select 列名1 别名1,列名2 别名2 from 表名;

-- 给学生的id,name起个别名
select id as stu_id,name as stu_name,age,genderfrom student;
  1. 条件查询
-- 条件控制  select * from 表名 where 列名=指定值;
select * from student where id = 3;
select * from student where id > 2;
select * from student where age < 20;
select * from student where id in (1,2,3);
select * from student where age between 18 and 20;
select * from student where id between 1 and 5 or age > 18;
select * from student where id between 1 and 5 and age > 18;
  1. 模糊查询
-- _代表匹配任意一个字符,%代表匹配0~n个任意字符
select * from student where name like '李_'; 
select * from student where name like '张%';
  1. 排序
-- 升序:asc为默认值可以不写
select * from 表名 order by 列名 asc;
-- 按年龄从小到大排序
select * from student order by age asc;

-- 降序:desc
select * from 表名 order by 列名 desc;
-- 按年龄从大到小排序
select * from student order by age desc;
  1. 聚合函数
  • count():统计查询结果的行数
select count(列名) from 表名;

select count(gender) from student;
select max(age) from student where id > 5;

  • max() 和 min()
    max()查询指定列的最大值,min()表示查询指定列的最小值。
select max(列名) from 表名;
select min(列名) from 表名;

-- 举个栗子
select max(age) from student where id > 5;
select min(age) from student;
  • sum():返回指定列的总和
select sum(列名) from 表名;

-- 查询成绩总和
select sum(score) from scores;
  • avg():返回指定列数据的平均值
select avg(列名) from 表名;

-- 查询平均成绩
select avg(score) from scores;
  1. 分组查询
-- 语法格式
select 分组函数,分组后的字段 from 表名 [where 筛选条件] group by 分组的字段 [having 分组后的筛选]

-- 举个栗子
select gender from student group by gender;
-- 查询年龄大于18岁的男女生人数
select gender,count(gender) from student where age > 18 group by gender;
-- 查询男生的年龄总和以及平均年龄
select gender,avg(age) avg_age,sum(age) sum_age from student GROUP BY gender HAVING  gender = '男';

注意

  • 分组函数的查询条件肯定放在having子句中;
  • 和分组函数一同查询的字段最好作为分组条件的字段。
  1. limit子句

LIMIT用来限定查询结果的起始行,以及总行数,通常用来做分页查询。

select * from 表名 limit 起始行,总行数;
-- 举个栗子
-- 从下标为 5 开始查找 2 条记录
select * from student limit 5,2;

-- 开始表中从头查找 5 条记录
select id,name,age,gender from student limit 5;

2.4.2 多表查询

  1. 内连接

内连接: INNER JOIN ON,通常用来连接两个表中都存在的列值,在数学上可以理解为两个数的交集,即共同拥有的部分。

MySQL必知必会(初级篇)

-- 语法格式
select 列名 from 表名1 inner join 表名2 [on子句]

--举个栗子
select * from teacher t join course c on c.t_id = t.id;

select * from teacher t inner join course c on c.t_id = t.id;
  1. 外连接

外连接又可以分为左外连接右外连接;

  • 左连接:LEFT JOIN,会将语句左边的表中的所有记录全部表示出来,而右表只会显示符合搜索条件的记录,如果左表的记录右表不存在,则以NULL来填充;

  • 右连接:RIGHT JOIN,会将语句右边的表中的所有记录全部表示出来,而左表只会显示符合搜索条件的记录,如果右表的记录左表不存在,则以NULL来填充;

MySQL必知必会(初级篇)
左外连接

-- 语法格式:outer可省略
select 列名 from 表名1 left outer join 表名2 [on子句]

-- 举个栗子
select * from course c left outer join teacher t on c.t_id = t.id;
select * from course c left join teacher t on c.t_id = t.id;

右外连接

-- 语法格式:outer可省略
select 列名 from 表名1 right outer join 表名2 [on子句]

-- 举个栗子
select * from course c right  outer join teacher t on c.t_id = t.id;
SELECT * from course c right join teacher t on c.t_id = t.id;

MySQL必知必会(初级篇)文章来源地址https://www.toymoban.com/news/detail-400215.html

到了这里,关于MySQL必知必会(初级篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【必知必会的MySQL知识】②使用MySQL

    目录 前言 启动MySQL服务 连接MySQL MySQL数据库基本命令 小结 根据上一篇文章【必知必会的MySQL知识】①初探MySQL的内容,想必您对MySQL数据库有了一个整体的了解了,并且应该在自己电脑上已经安装上了MySQL。 这一篇呢我们来说一说这么连接上数据库并且使用它。 前面MySQL安装

    2024年02月02日
    浏览(65)
  • 【必知必会的MySQL知识】⑤DQL语言

    目录 一、前言 二、基础查询 2.1 语法 2.2 实践操作 三、条件查询 3.1 语法 3.2 where 语句操作符 3.3 实践操作 四、排序查询 4.1 语法格式 4.2 实践操作 五、分组查询 5.1 语法 5.2 聚集函数 5.2.1 聚集函数简单使用 5.3 实践操作 5.4 规定与小结 六、连接查询(多表查询) 6.1 简介 6.2 笛

    2024年02月02日
    浏览(40)
  • 【必知必会的MySQL知识】④DCL语言

    目录 一、概述 二 、授权 2.1 语法格式 2.2 语法说明 2.3 权限类型 2.4 权限级别 三、 回收权限 3.1 语法格式 3.2 语法说明 3.3 注意事项 四 、实践操作 数据控制语言,用来定义访问权限和安全级别。主要包含包括 grant , revoke grant 授予权限 revoke 回收权限 2.1 语法格式 2.

    2024年02月02日
    浏览(35)
  • 【必知必会的MySQL知识】③DML语言

    目录 前言 准备 插入数据 语法格式 插入完整行数据 插入多行数据 将检索出来的数据插入表 更新数据 准备两张表 语法 实践操作 删除数据 语法 实践操作 小结 前面的两篇文章中,我们已经对MySQL有了基本了解。 并且知道了怎么用工具连接数据库?怎么创建数据库?怎么创建

    2024年02月02日
    浏览(50)
  • MySQL必知必会:MySQL中的Schema与DataBase

    涉及到数据库的模式有很多疑惑,问题经常出现在模式和数据库之间是否有区别,如果有,区别在哪里。 取决于数据库供应商 对schema(模式)产生疑惑的一部分原因是数据库系统倾向于以自己的方式处理模式 (1)MySQL的文档中指出,在物理上,模式与数据库是同义的,所以

    2023年04月27日
    浏览(31)
  • 【必知必会的MySQL知识】mysql5.7安装教程

    下载地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 下载zip免安装版,可以省去很多事 my.ini文件内容如下 以上配置文件说明 basedir--mysql目录 datadir--数据路径 port --端口 skip-grant-tables --刚开始跳过登陆校验 安装服务: 初始化数据库 登陆命令: 最后,我们当然不希望以后写

    2024年02月02日
    浏览(36)
  • 【SQL 必知必会】- 第九课 汇总数据

    目录 聚集函数          AVG()函数         只用于单个列         COUNT()函数         COUNT()函数有两种使用方式:         MAX()函数         对非数值数据使用MAX()         MIN()函数         对非数值数据使用MIN()         SUM()函数         在多

    2023年04月09日
    浏览(42)
  • 【SQL 必知必会】- 第八课 使用函数处理数据

    目录 函数         函数带来的问题         可移植(portable)         是否应该使用函数? 使用函数         文本处理函数         SOUNDEX 支持         日期和时间处理函数         数值处理函数         函数带来的问题         与几乎所有

    2023年04月10日
    浏览(39)
  • 架构师必知必会系列:物联网数据处理与分析

    作者:禅与计算机程序设计艺术 物联网(IoT)已经成为一个全新的互联网发展模式,它将物理世界、信息网络和人工智能等多种技术融合在一起。随着物联网的广泛应用,传感器、节点设备、云计算平台和应用软件日益壮大。因此,对物联网数据的采集、存储、分析、处理、

    2024年02月06日
    浏览(46)
  • 必知必会Java

    你好,我是阿光。 最近想着把工作中使用过的java命令都梳理一下,方便日后查阅。虽然这类文章很多,但自己梳理总结后,还是会有一些新的收获。这也是这篇笔记的由来。 今天先聊聊 jps 命令。 jps 命令是JDK提供的一个工具,用于查看目标系统上的Java进程基本信息(进程

    2024年02月05日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包