我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL必知必会(初级篇)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL必知必会(初级篇)

在这里插入图片描述

1.基本概念

在这里插入图片描述

数据库(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

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 datetimeprimary 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的学生姓名改为tonyupdate `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表

在这里插入图片描述

  • scores表

  • student表

在这里插入图片描述

  • teacher表

在这里插入图片描述

  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;-- 降序:descselect * 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,通常用来连接两个表中都存在的列值,在数学上可以理解为两个数的交集,即共同拥有的部分。

在这里插入图片描述

-- 语法格式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来填充;

在这里插入图片描述
左外连接

-- 语法格式: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;

在这里插入图片描述

来源地址:https://blog.csdn.net/weixin_52986315/article/details/124436773

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL必知必会(初级篇)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL必知必会(初级篇)

mysql 1.基本概念2.SQL语言2.1 DCL(数据控制语言)2.1.1创建用户2.1.2 使用grant命令给用户授权2.1.3 使用revoke命令撤销权限 2.2 DDL(数据定义语言)2.2.1 mysql常用
2023-08-19

mysql必知必会-

SELECT 语句SQL语句是由简单的英语单词构成的。这些单词称为关键字,每个SQL语句都是由一个或多个关键字构成的。大概,最经常使用的SQL语句就是 SELECT 语句了。它的用途是从一个或多个表中检索信息。为了使用 SELECT 检索表数据,必须至少给出两
mysql必知必会-
2021-05-10

mysql必知必会-创建高级联结

使用表别名使用别名引用被检索的表列别名除了用于列名和计算字段外,SQL还允许给表名起别名。这样做有两个主要理由:缩短SQL语句;允许在单条 SELECT 语句中多次使用相同的表。可以看到, FROM 子句中3个表全都具有别名。 customers AS c建立
mysql必知必会-创建高级联结
2017-02-25

MySQL必知必会--第十九章

第十九章--插入数据 1。插入数据:     insert into customers values(NULL, "XXX","XXX", "XXX","XXX", "XXX","XXX", "XXX","XXX",NULL, NULL);     没有输出
MySQL必知必会--第十九章
2016-01-25

MySQL必知必会--第二十一章

3.删除数据:delete from customers where cust_id=10006; 4.删除某列:可以使用update 把该列置为NULL; 5.删除表的内容而不是表: DELETE语句从表中删除行,甚至是 删除表中所有行。但是,DELETE不
MySQL必知必会--第二十一章
2019-01-01

MySQL必知必会:MySQL中的Schema与DataBase

摘抄自:https://blog.csdn.net/weixin_44321080/article/details/108446596 第一章:MySQL中Schema和DataBase是否等同? 第一章:MySQL中Schem
2023-08-18

MySQL必知必会--第二十四章

3.保持每个数据库的触发器名唯一 4.触发器用CREATE TRIGGER语句创建     例如: create trigger newproduct after insert on products for each row select "Prodcut
MySQL必知必会--第二十四章
2019-07-08

MySQL必知必会--第一章--了解SQL

1.什么是数据库     数据库(database) 保存有组织的数据的容器(通常是一个文 件或一组文件)。     数据库软件应称为DBMS(数据库管理系统)     表是一种结构化的文件,可用 来存储某种特定类型的数据。     模式(schema) 关于
MySQL必知必会--第一章--了解SQL
2018-11-06

MySQL必知必会--第五章~第八章

第六章--过滤数据 1. 在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤, WHERE子句在表名(FROM子句)之后给出    例如:select prod_names, prod_id, prod_price from products
MySQL必知必会--第五章~第八章
2019-03-03

MySQL必知必会--第十章--计算字段

第十章--计算字段 1.字段:字段(field) 基本上与列(column)的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常用在计算字段的 连接上。 2.拼接字段:将值联结到一起构成单个值。在MySQL的SELECT语句中,可使用Concat(
MySQL必知必会--第十章--计算字段
2019-01-15

SQL必知必会知识点汇总

前言 ❤欢迎大家阅读我的文章呀❤ 今天是SQL必知必会的最后一块练习。 希望你们在我的文章当中能有所收获!!! SLogan:利用有限的时间,撸起袖子加油干!   本篇内容主要总结了【SQL必知必会】当中的一些知识点以及我做题过程当中
2023-08-24

MySQL必知必会1-20章读书笔记

MySQL备忘目录目录使用MySQL检索数据排序检索数据过滤数据数据过滤用通配符进行过滤用正则表达式进行搜索创建计算字段使用数据处理函数数值处理函数汇总数据分组数据使用子查询作为计算字段使用子查询联结表创建高级联结组合查询全文本搜索插入数据更新和删除数据使用M
MySQL必知必会1-20章读书笔记
2019-01-02

MySQL必知必会--第二章~第四章--MySQL简介

1.DBMS可分为两类:一类为基于共享文件系统的DBMS,另一类为基于客户机—服务器的DBMS。服务器部分是 负责所有数据访问和处理的一个软件。这个软件运行在称为数据库服务 器的计算机上。 2.MySQL Administrator(MySQL管理器)是一个图
MySQL必知必会--第二章~第四章--MySQL简介
2014-06-09

MySQL必知必会--第十六章~第十七章

5.使用带聚集函数的联结     select customers.cust_name, customers.cust_id, count(orders.order_num) as num_id from customers  inner orders on
MySQL必知必会--第十六章~第十七章
2016-07-26

编程热搜

目录