博客
关于我
MYSQL从入门到精通(一)
阅读量:791 次
发布时间:2023-02-11

本文共 5483 字,大约阅读时间需要 18 分钟。

MySQL数据库入门及实践指南

1. 概述

MySQL 是甲骨文 Oracle 公司开发的开源关系型数据库管理系统,广泛应用于各类企业级应用开发。作为数据库中最常用的系统,它以其高效的性能和灵活的配置选项著称,支持多种数据类型和复杂的查询操作。

2. 数据库的重要性

数据库是现代应用开发的核心基础设施。它通过将数据组织成结构化的表格,实现了数据的持久化存储和高效管理。MySQL 等数据库管理系统(DBMS)能够帮助开发者快速完成数据的插入、查询、更新和删除操作,满足了大部分应用程序的需求。

3. 数据库的特点

数据库系统具有以下特点:

  • 数据存储:数据库通过表格结构存储数据,类似于软件开发中的属性定义。
  • 数据独立性:一个数据库可以包含多个表,每个表都有唯一的名称标识。

4. MySQL概述

MySQL 的主要特点包括:

  • 开源性:由甲骨文 Oracle 提供并维护。
  • 高性能:支持大规模数据存储和复杂查询。
  • 可扩展性:提供社区版和企业版选择。
  • 灵活配置:支持详细的配置文件和管理选项。

5. 服务的启动与停止

在 MySQL 中,服务的管理可通过以下命令实现:

  • 启动服务:service mysqld start
  • 停止服务:service mysqld stop
  • 重新启动服务:service mysqld restart

6. MySQL服务端的登录与退出

登录 MySQL 服务:

mysql -h localhost -uroot -p

退出登录状态:

mysql -uroot -p

7. 常见命令

以下是一些常用的 MySQL 命令:

  • 查看所有数据库:show databases;
  • 切换到指定数据库:use mydb
  • 查看当前数据库的表:show tables;
  • 查看当前所在数据库:select database();
  • 创建新表:create table stu_info (id int, name varchar(20));
  • 查看表结构:desc stu_info;
  • 查询表中所有记录:select * from stu_info;
  • 插入新记录:insert into stu_info (id, name) values (1, '陈翔');
  • 查看 MySQL 版本:select version();

8. 语法规范概述

MySQL SQL 语法的规范包括:

  • 大小写不敏感:建议关键字使用大写,表名和列名使用小写。
  • 语句结尾:每条命令应以分号结尾。
  • 格式化代码:支持注释方式如 /* */#

9. 图形用户界面

MySQL 提供多种图形化管理工具,例如 Navicat,可以简化数据库管理操作。

10. 四张表概述

MySQL 支持以下四种主要的 SQL 语言类型:

  • DQL:数据查询语言
  • DML:数据操作语言
  • DDL:数据定义语言
  • TCL:事务控制语言

以下是常用表的创建示例:

  • 员工表:
create table employees (    employee_id int primary key,    first_name varchar(20),    last_name varchar(25),    email varchar(25),    phone_number varchar(20),    job_id varchar(10),    salary double(10,2),    commission_pct double(4,2),    manager_id int(4),    department_id int(4),    hiredate datetime);
  • 部门表:
create table departments (    department_id int primary key,    department_name varchar(3),    manager_id int(6),    location_id int(4));

11. 基础查询概述

SELECT 语法

  • 查询列表:可以是表中的字段、常量值、表达式或函数。
  • 查询结果:以虚拟表格形式呈现。

示例

  • 查询单个字段:
select last_name from employees;
  • 查询多个字段:
select last_name, salary, email from employees;
  • 查询所有字段:
select * from employees;

12. 可以查询的值列举

可以使用常量值、表达式或函数进行查询:

  • 常量值:
select 100;select '起飞';select 100%98;
  • 表达式:
select 100%98;
  • 函数:
select version();

13. 起别名

为查询结果中的字段起别名:

select 100%98 as result;
  • 用于解决字段重复名的问题:
select salary as 'out_put' from employees;

14. + 号的作用

  • 号用于数学加法操作:
  • 拼接字符串:
select GROUP_CONCAT(first_name, last_name) as 姓名 from employees where employee_id=1;
  • 显示表结构:
desc departments;
  • 使用 IFNULL:
select ifnull(commission_pct, 0) as 奖金率, commission_pct from employees;

15. 条件查询

WHERE 子句

  • 基本条件:
select first_name as 姓 from employees where employee_id=1;
  • 逻辑运算符:
and, or, not, &&, ||
  • 模糊查询:
like 'between' and in is null;

示例

  • 查询工资大于12000的员工信息:
select * from employees where salary > 12000;
  • 查询部门编号不等于1的员工名和部门编号:
select last_name, department_id from employees where department_id != 1;

16. betwen 和 in 关键字

betwen

用于指定范围查询:

select * from employees where employee_id between 2 and 3;

in

用于批量查询或判断字段是否属于列表:

select * from employees where department_id in (1,3);

17. is null 和 safe equals

is null

判断字段是否为空:

select last_name, commission_pct from employees where commission_pct is null;
  • 判断字段不为空:
select last_name, commission_pct from employees where commission_pct is not null;

safe equals

用于安全比较:

select last_name from employees where salary > 15000;

18. 数据库的排序查询

排序语法

  • 升序:
select * from employees order by salary asc;
  • 降序:
select * from employees order by salary desc;
  • 默认排序(升序):
select * from employees order by salary;

示例

  • 按部门 ID 和日期排序:
select * from employees where department_id > 2 order by hiredate;
  • 按姓名和年薪排序:
select last_name, salary * (1 + ifnull(commission_pct, 0)) as 年薪 from employees order by salary;

19. 常见函数概述

MySQL 提供丰富的函数,涵盖字符、数学、日期等类型:

  • 字符函数:
select length('陈翔六点半之铁头无敌');select concat(last_name, '_', first_name) as 姓名 from employees;
  • 数学函数:
select round(1.45);select ceil(1.21);select floor(9.99999);select truncate(1.678932, 1);select mod(10, 3);
  • 日期函数:
select year(now());select date_format(now(), '%y年%m月%d日');

20. 流程控制函数

if

select last_name, if(salary > 12000, '工资大于1.2', '工资小于1.2') from employees;

case

select last_name, case when salary > 18000 then 'A级工资', when salary > 12000 then 'B级工资', else 'C级工资' end as salary_level from employees;

21. 分组函数

示例

  • 计算每个部门的员工个数:
select count(*) from employees group by department_id;
  • 按部门和职位分组计算最高工资:
select max(salary) from employees where commission_pct is not null group by job_id;

22. 数据插入

两种方式

  • 方式一:
insert into girl (id, name) values (4, '佟丽娅');
  • 方式二:
insert into girl values ('高圆圆');

23. 修改语句

修改单个字段:

update girl set name='李亚茹的伙伴' where name='李亚茹';

修改多个字段:

update girl set name='李亚茹', boy_friend_id=4 where name='李亚茹';

24. 删除语句

删除单个记录:

delete from girl where id=15;

删除多个记录:

delete from girl where name='张无忌' and boy_friend_id=(select id from boy where name='张无忌');

25. 事务控制

事务特点

  • ACID 原则:原子性、一致性、隔离性、持久性。

示例

  • 开启事务:
set autocommit=0;start transaction;
  • 提交事务:
commit;
  • 回滚事务:
rollback;

26. 视图的概述

创建视图

create view v1 as select girl.name, boy.name as boy_friend_name from girl left join boy on girl.boy_friend_id=boy.id where girl.name like '%李%';

查询视图

select * from v1 where name like '%李%';

27. 存储过程

空参存储过程

delimiter $create procedure my_pro() begin insert into boy (name) values ('张飞'), ('关羽'), ('赵云'); end$

带入模式存储过程

delimiter $create procedure my_pro2(in girl_name varchar(20)) begin select * from boy left join girl on boy.id=girl.boy_friend_id where girl.name=girl_name; end$

28. 函数

函数创建

delimiter $create function my_fun1() returns int begin declare result int default 0; select count(*) into result from boy; return result; end$

函数调用

select my_fun1();

29. 流程控制结构

分支结构

if (condition, true_value, false_value)

循环结构

while loop

30. 小结

MySQL 是一款强大的关系型数据库管理系统,适合处理结构化数据存储和复杂查询需求。通过掌握数据库的基本操作和高级功能,可以有效提升应用开发效率。

转载地址:http://xabfk.baihongyu.com/

你可能感兴趣的文章
multiprocessing.pool.map 和带有两个参数的函数
查看>>
MYSQL CONCAT函数
查看>>
multiprocessing.Pool:map_async 和 imap 有什么区别?
查看>>
MySQL Connector/Net 句柄泄露
查看>>
multiprocessor(中)
查看>>
mysql CPU使用率过高的一次处理经历
查看>>
Multisim中555定时器使用技巧
查看>>
MySQL CRUD 数据表基础操作实战
查看>>
multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
查看>>
mysql csv import meets charset
查看>>
multivariate_normal TypeError: ufunc ‘add‘ output (typecode ‘O‘) could not be coerced to provided……
查看>>
MySQL DBA 数据库优化策略
查看>>
multi_index_container
查看>>
mutiplemap 总结
查看>>
MySQL Error Handling in Stored Procedures---转载
查看>>
MVC 区域功能
查看>>
MySQL FEDERATED 提示
查看>>
mysql generic安装_MySQL 5.6 Generic Binary安装与配置_MySQL
查看>>
Mysql group by
查看>>
MySQL I 有福啦,窗口函数大大提高了取数的效率!
查看>>