MySQL基础

文章目录

一、数据库的概念

1.1、数据库(DataBase(DB))

存储数据的仓库,数据是有组织的进行存储

1.2、数据库管理系统(DataBase Management System(DBMS))

操纵和管理数据库的大型软件

1.3、SQL:(Structured Ouery Language(SOL))

操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准

1.4关系型数据库(RDBMS)

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

二、SQL

2.1SQL通用语法

2.2SQL分类

2.3(数据定义语言)DDL

用来定义数据库对象(数据库,表,字段)
***语句可以大小写

2.3.1基础操作

2.3.1.1查询所有数据库

格式:SHOW DATABASES ;

在这里插入图片描述

2.3.1.2查询当前数据库

格式:SELECT DATABASE():

***注意:这里的()是不可以省略的。
在这里插入图片描述

2.3.1.3创建

格式:CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET字符集][COLLATE 排序规则];

这里的【】是可选的
在这里插入图片描述

2.3.1.4 使用

USE 数据库名;

在这里插入图片描述

2.3.1.5删除

格式:DROP DATABASE[IF EXISTS]数据库名:
使用
在这里插入图片描述

2.3.2表的操作

2.3.2.1创建

格式:

CREATE TABLE 表名(
字段1 类型[COMMENT '注释']
字段2 类型[COMMENT '注释']
字段3 类型[COMMENT '注释']
...
)[COMMENT 表注释];
mysql> create table test_user(
    -> id int comment '编号',
    -> name varchar(50) comment '姓名',
    -> age int comment '年龄'
    -> ) comment '测试表';
Query OK, 0 rows affected (0.05 sec)
2.3.2.2查询
2.3.2.2.1查询当前数据库所有表

格式:SHOW TABLES;
在这里插入图片描述

2.3.2.2.2查询表结构

格式:DESC 表名:

在这里插入图片描述

2.3.2.2.3查询指定表的建表语句

格式:SHOW CREATE TABLE 表名;

在这里插入图片描述

2.3.2.3 常见数据类型

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d0a1ffb11efd403ba515c6e755caf434.png

mysql> create table job_table(
    -> id int comment '编号'  ,
    -> no varchar(10) comment '工号'  ,
    -> name varchar(10) comment '姓名'  ,
    -> gender varchar(1) comment '性别'  ,
    -> age tinyint unsigned comment '年龄'
    -> ) comment '员工表';
Query OK, 0 rows affected (0.04 sec)
2.3.2.4修改与删除
2.3.2.4.1修改

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

mysql> alter table job_table add niname varchar(10) comment '昵称';
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

在这里插入图片描述
还有两种格式;
修改数据类型

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

修改字段名和字段类型

格式: ALTER TABLE 表名 CHANGE |日字段名 新字段名 类型(长度)[COMMENT注释][约束];

修改表名

格式:ALTER TABLE 表名 RENAME TO 新表名:

2.3.2.4.2 删除

删除字段名

格式: ALTER TABLE 表名 DROP 字段名;

mysql> ALTER TABLE job_table DROP niname;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

删除表

格式:DROP TABLE「IF EXISTS]表名,

删除指定表,并重新创建该表

格式:TRUNCATE TABLE 表名)

2.4(数据操作语言)DML

用来对数据库表中的数据进行增删改

2.4.1添加数据

2.4.1.1给指定字段添加数据

格式:INSERT INTO 表名 (字段名1, 字段名2, …) VALUES (值1, 值2, …);

insert into employee(id,workno,name,gender,age,idcard,entrydate)
values(001,'001','橙汁','男',23,'440582200006010101','2000-01-01');
select * from employee;

在这里插入图片描述

2.4.1.2批量添加数据

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

2.4.2修改数据

格式:UPDATE 表名 SET 字段名1 =1 , 字段名2 =2 , .... [ WHERE 条件 ] ;
UPDATE employee SET id = 1,name = '小明' , gender = '男'  WHERE age=10 ;
select * from employee;

在这里插入图片描述

2.4.3删除数据

DELETE FROM 表名 [ WHERE 条件 ] ;

delete from employee where name= '橙汁';

在这里插入图片描述
*注意:没加条件限制则是删除整张表

2.5(数据查询语言)DQL

用来查询数据库中表的记录
table补充一下数据。
在这里插入图片描述

INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (1, '001', '捷风', '女', 20, '123456789012345678', '深圳', '2024-03-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (2, '002', '铁壁', '男', 18, '123456789012345670', '深圳', '2005-09-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (3, '003', '一决', '男', 38, '123456789712345670', '广州', '2005-08-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (4, '004', '雷兹', '女', 18, '123456757123845670', '深圳', '2009-12-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (5, '005', '贤者', '女', 16, '123456769012345678', '广州', '2007-07-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (6, '006', '幽影', '男', 28, '12345678931234567X', '深圳', '2006-01-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (7, '007', '炼狱', '男', 40, '123456789212345670', '深圳', '2005-05-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (8, '008', '霓虹', '女', 38, '123456157123645670', '广州', '2015-05-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (9, '009', '斯凯', '女', 45, '123156789012345678', '深圳', '2010-04-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (10, '010', '猎萧', '男', 53, '123456789012345670', '广州', '2011-01-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (11, '011', '零', '男', 55, '123567897123465670', '广州', '2015-05-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (12, '012', '保安', '男', 32, '123446757152345670', '深圳', '2004-02-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (13, '013', '海王', '男', 88, '123656789012345678', '广州', '2020-11-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (14, '014', '奇乐', '女', 65, '123456719012345670', '汕头', '2019-05-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (15, '015', '盖克', '男', 70, '12345674971234567X', '汕头', '2018-04-01');
INSERT INTO employee(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (16, '016', '黑梦', '女', 18, NULL, '深圳', '2012-06-01');

格式:

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

2.5.1 基础查询语法

2.5.1.1查询字段

(1) SELECT 字段1, 字段2, 字段3 … FROM 表名 ;
(2)SELECT * FROM 表名 ;

注意:*号表示全部字段
在这里插入图片描述

2.5.1.2 设置字段的别名

格式:SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] … FROM 表名;

注意:AS可以不加

在这里插入图片描述

2.5.1.3 返回不重复的字段值

格式:SELECT DISTINCT 字段列表 FROM 表名;

在这里插入图片描述

2.5.2 条件查询语法

格式:SELECT 字段列表 FROM 表名 WHERE 条件列表 ;
常见的比较运算符
在这里插入图片描述
常用的逻辑运算符在这里插入图片描述

2.5.2.1 查询年龄大于50的员工

在这里插入图片描述

2.5.2.2 查询没有身份证号的员工信息

select * from employee where idcard is NULL;
在这里插入图片描述

2.5.2.3 查询姓名为某些字的员工信息

select * from employee where name like ‘捷风’;
在这里插入图片描述

2.5.2.4 查询身份证号最后一位是X的员工信息

格式:select * from emp where idcard like ‘%X’;

在这里插入图片描述

2.5.3 聚合函数查询语法

简介:将一列数据作为一个整体,进行纵向计算
格式:

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

常见的聚合函数:
在这里插入图片描述

2.5.3.1统计企业员工数量
 select count(*) from employee; -- 统计的是总记录数 
 select count(idcard) from employee;-- 统计的是idcard字段不为null的记录数
2.5.3.2 统计广州地区员工的年龄之和

select sum(age) from employee where workaddress=‘广州’ ;
在这里插入图片描述

2.5.4 分组查询语法

格式:

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

where与having的区别:

执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组 之后对结果进行过滤。

判断条件不同:where不能对聚合函数进行判断,而having可以。

执行顺序:where>聚合函数>having

2.5.4.1 统计男性员工和女性员工的数量
select gender,count(*)
from employee
group by gender;

在这里插入图片描述

2.5.4.2 查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于2的工作地址
select workaddress,count(*) as address_count
from employee
where age<50
group by workaddress
having address_count>2;

在这里插入图片描述

2.5.5 排序查询语法

格式:ASC : 升序(默认值),DESC: 降序

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

2.5.5.1根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序
select age,entrydate
from employee
order by age asc,entrydate asc;

在这里插入图片描述

2.5.6分页查询语法

格式:

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

select *
from employee
limit 0,10;

在这里插入图片描述

2.5.7 执行顺序

select age         #④
from employee      #①
where age>11       #②
group by  age      #③
Having age>30
order by age asc   #⑤
limit  0,10;       #⑥

在这里插入图片描述

2.6(数据控制语言)DCL

用来创建数据库用户、控制数据库的访问权限

2.6.1管理用户

在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。

2.6.1.1查询用户

格式:

select * from mysql.user;

在这里插入图片描述
其中 Host代表当前用户访问的主机, 如果为localhost, 仅代表只能够在当前本机访问,是不可以远程访问的。

2.6.1.2创建用户

格式:

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

创建用户test03, 只能够在当前主机localhost访问, 密码a123456;如果想创建任意主机访问该数据库则将’test03’@‘localhost’改成’test03’@'%'即可

create user 'test03'@'localhost' identified by 'a123456';

在这里插入图片描述

2.6.1.1修改用户密码

格式:

ALTER USER ‘用户名’@‘主机名’ IDENTIFIED WITH mysql_native_password BY ‘新密码’

修改用户test03的访问密码为123456;

alter user 'test03'@'localhost' identified with mysql_native_password by '123456';
2.6.1.1删除用户

格式:

DROP USER ‘用户名’@‘主机名’ ;

删除 test03@localhost 用户

drop user ‘test03’@‘localhost’;

2.6.2 权限控制

基础权限
在这里插入图片描述

2.6.2.1 查询权限

格式:

SHOW GRANTS FOR ‘用户名’@‘主机名’ ;

查询 ‘test03’@‘%’ 用户的权限

show grants for 'test03'@'%';
2.6.2.2授予权限

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

授予 ‘test03’@‘%’ 用户test01数据库所有表的所有操作权限

grant all on test01.* to 'test03'@'%';
2.6.2.3撤销权限

格式:

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

撤销 ‘test03’@‘%’ 用户的test01数据库的所有权限

revoke all on test01.* from ‘test03’@‘%’;

三、函数

相关推荐

  1. MySQL 基础

    2024-03-18 21:16:02       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-18 21:16:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-18 21:16:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-18 21:16:02       87 阅读
  4. Python语言-面向对象

    2024-03-18 21:16:02       96 阅读

热门阅读

  1. pyttsx3应用场景案例

    2024-03-18 21:16:02       42 阅读
  2. 【基础】连续数的和 c++

    2024-03-18 21:16:02       38 阅读
  3. android 事件分发笔记

    2024-03-18 21:16:02       41 阅读
  4. Milvus部分源码阅读

    2024-03-18 21:16:02       36 阅读
  5. c++野指针如何处理?

    2024-03-18 21:16:02       43 阅读
  6. 代码随想录阅读笔记-哈希表【四数之和】

    2024-03-18 21:16:02       45 阅读