MySQL简单的基础入门

前言

mySQL (关系型数据库管理系统)
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。


提示:以下是本篇文章正文内容,下面案例可供参考

MySQL服务启动

1.手动。
2.cmd–>services.msc打开服务的窗口
3.使用管理员打开cmd
net start mysql:启动mysql的服务
net stop mysql:关闭mysql的服务

MySQL登录

1.mysql-uroot-p密码
2.mysql-hip-uroot-p连接目标的密码
3.mysql--host=ip--user=root--password=连接目标的密码

MySQL退出

1.exit
2. quit

MySQL目录结构

1.MySQL安装目录:basedir=“D:/develop/MySQL/”
配置文件my.ini
2.MySQL数据目录:datadir=“C:/ProgramData/MySQL/MySQL Server
5.5/Data/”

几个概念

数据库:文件夹
表:文件
数据:数据

SQL

1.什么是SQL?

structured Query Language:结构化查询语言
其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样
的地方,称为“方言”

2.SQL通用语法

1.SQL语句可以单行或多行书写,以分号结尾。
2.可使用空格和缩进来增强语句的可读性。
3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
4.3种注释
单行注释:-- 注释内容或 # 注释内容(mysql特有)(注意–后面有一个空格)
多行注释:/*注释*/

3.SQL分类

在这里插入图片描述

1)DDL(Data Definition Language)数据定义语言

用来定义数据库对象:数据库,表,列等。关键字:create,drop,alter

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

用来对数据库中表的数据进行增删改。关键字:insert,delete,update

3)DQL(Data Query Language)数据查询语言

用来查询数据库中表的记录(数据)。关键字:select,where

4)DCL(Data Control Language)数据控制语言(了解)

用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE

DDL:操作数据库、表

1、操作数据库:CRUD

C(Create):创建

创建数据库

Create database 数据库名称:

创建数据库,判断不存在,在创建

Create database if not exists 数据库名称;

创建数据库,并指定字符集

Create database 数据库名称 character set 字符集名;

创建数据,判断是否存在,并指定字符集为GBK

Create database if not exists 数据库名 character set gbk;

R(Retrieve):查询

查询所有数据库的名称

Show databases;

查看某个数据库的字符集:查询某个数据库的创建空间

show create database 数据库名称;

U(Update):修改

修改数据库的字符集

alter database 数据库名称 character set 字符集名称;

D(Delete):删除

删除数据库

drop database 数据库名称;

判断数据库存在,存在在删除

drop database if exists 数据库名称;

使用数据库

查询当前正在使用的数据库名称

select database();

使用数据库

use 数据库名称;

操作表

C(Create):创建

语法

create table 表名
(
列名1 数据类型1,
列名2 数据类型2,
……
列名n 数据类型n
);

注意:最后一列,不需要加逗号(,)

数据库类型

数据库类型:
1.int:整数类型

age int,

2.double:小数类型

score double(5,2)

3.date:日期,只包含年月日,yyyy-MM-dd
4.datetime:日期,包含年月日时分秒yyyy-MM-dd HH:mm:ss
5.timestamp:时间戳类型包含年月日时分秒yyyy-MM-dd HH:mm:SS
如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
6.varchar:字符串
name varchar(20):姓名最大20个字符

创建表

Create table student
(
Id int,
Name varchar(32),
Age int,
Score double(4,1),
Birthday date,
Insert_time timestamp
);

R(Retrieve):查询

查询某个数据库中所有的表名称;

Show tables;

查询表结构

desc 表名;

复制表:

create table 表名 like 被复制的表名;

U(Update):修改

修改表名

alter table 表名 rename to 新的表名;

修改表的字符集

alter table 表名 character set 新的字符集名称;

添加一列

alter table 表名 add 列名数据类型;

修改列名称类型

alter table 表名 change 列名新列名新数据类型;
alter table 表名 modify 列名新数据类型;

删除列

alter table 表名 drop 列名;

D(Delete):删除

drop table 表名;
drop table if exists 表名;

DML:增删改表中数据

添加数据:

语法:

insert into 表名(列名1,列名2,….列名n) values (1,值2,….值n);

注意:
列名和值一一对应。
如果表名后,不定义列名,则默认给所有列添加值
Insert into 表名 values(值1,值2,……值n);
除了数字类型其他类型都要用引号(单双都可以)引起来

删除数据:

语法:

Delete from 表名 [where 条件]

注意
如果不加条件,则删除表中所有记录。
如果要删除所有记录

Delete from 表名;--不推荐使用,有多少条记录就会执行多少次删除操作。
TRUNCATE TABLE 表名;--先删除表,然后再创建一张一样的表。推荐使用效率最高。

修改数据:

语法

update 表名 set 列名1 =1, 列名2 =2 ,……[where 条件];

注意
如果不加任何条件,则会将表中所有记录全部修改。

DQL:查询表中的记录

Select * from 表名;

语法:

Select 
字段列表
From
表名列表
Where
条件列表
Group by
分组字段
Having
分组之后的条件
Order by
排序
Limit
分页限定

基础查询:

多个字段的查询

Select 字段名1,字段名2from 表名;

注意:
如果查询所有字段,则可以用*来代替字段列表

去重

distinct

计算列

一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)

Ifnull(表达式1,表达式2)/null参与的运算,计算结果都为null

表达式1:那个字段需要判断是否为null
如果该字段为null后的替换值

起别名

as:as也可以省略

条件查询

where字句后跟条件

运算符

><<=>==<>
BETWEEN...AND
IN(集合)
LIKE:模糊查询
占位符
	_:单个任意字符
	%:多个任意字符
IS NULL
and&&
or||
not!

例子

//查询年龄不能于20岁
SELECT * FROM student3 WHERE age<>20;
//查询年龄在20到30之间的
SELECT * FROM student3 WHERE age>=20 and        age<=30
//查询年龄在20到30之间的
SELECT * FROM student3 WHERE age BETWEEN 20 AND 30
//查询年龄在22岁18岁25岁的
SELECT id ,`NAME` AS 姓名,age AS 年龄 ,sex as 性别,address as 地址,math as 数学成绩,english as 英语成绩 FROM student3 WHERE age =22 OR age=18 OR age =25
//查询年龄在22岁18岁25岁的
SELECT id ,`NAME` as 姓名 ,age as 年龄, sex as 性别,address as 地址, math as 数学成绩,english as 英语成绩 FROM student3 WHERE age IN(22,18,25)

//查询英语成绩为空的
SELECT * FROM student3 WHERE english IS NULL;
//查询英语成绩不为空的
SELECT * FROM student3 WHERE english IS NOT NULL;

//查询名称姓马的
SELECT * FROM student3 WHERE `Name` LIKE'马%'
//查询名称中第二位有化的
SELECT * FROM student3 WHERE `NAME` LIKE'_化%'
//查询名称是三位字的
SELECT * FROM student3 WHERE `NAME` LIKE'___';
//查询姓名中有德的
SELECT * FROM student3 WHERE `NAME` LIKE '%德%'

排序查询

语法: order by 字句

Order by 排序字段1  排序方式1,排序字段2 排序方式2

排序方式:
Asc :升序默认的
desc:降序
注意
如果有多个排序条件,则当前的条件值一样时,才会判断第二条件。
聚合函数
将一列数据作为一个整体,进行纵向计算。

count:计算个数
	一般选择非空的列,主键
	Count(*)
max:计算最大值
min:计算最小值
sum:计算和
avg:计算平均值

注意
聚合函数的计算,会排除null值
解决方案
选择不包含非空的列进行机选
Ifnull函数

分组查询

语法:group by 分组字段
注意:

分组之后查询的字段:分组字段,聚合函数
在where 和having 区别
	where 在分组前进行限定,如果不满足条件则不参与分组
	having在分组之后进行限定,如果不满足结果,则不会被查询出来。

	where后不可以跟聚合函数,having可以进行聚合函数的判断

分页查询

语法:limit 开始的索引,每页查询的个数
公式:

开始的索引=(当前页码-1*每页显示的条数
SELECT * FROM student3 LIMIT 0,3 --第一页

SELECT * FROM student3 LIMIT 3,3 --第一页

limit是一个MySQL的“方言”

DCL

DCL:管理用户,授权

管理用户

CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';-- 创建用户
DROP USER '用户名'@'主机名';-- 删除用户
GRANT 权限 1, 权限 2... ON 数据库名.表名 TO '用户名'@'主机名';-- 给用户授权
REVOKE 权限 1, 权限 2... ON 数据库.表名 revoke all on test.* from 'user1'@'localhost'; '用户名'@'主机 名';    -- 撤销授权
mysqladmin -uroot -p password 新密码 -- 修改管理员密码
set password for '用户名'@'主机名' = password('新密码'); -- 修改普通用户密码
SHOW GRANTS FOR '用户名'@'主机名';-- 查看权限

Guess you like

Origin blog.csdn.net/weixin_44459831/article/details/120395407