MySQL(一)认识MySQL、常用管理命令、列类型列约束、查询语句

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL(一)认识MySQL、常用管理命令、列类型列约束、查询语句

一、软件生命周期和计算机数据存储方式

1. 软件生命周期

       定义期:可行性研究阶段/需求分析阶段;

       开发期:概要设计阶段/详细设计阶段/编码实现阶段/测试阶段;

       维护期:部署阶段/维护阶段。


2. 计算机对数据的存储,有4个方面

通过特定的文件如excel、word等存储,只适用于存储小量数据且速度慢;

内存,临时存储,运行时会有数据产生并存储,结束运行后数据即销毁;速度快;

第三方云服务器,共享;

数据库服务器。

MySQL属于数据库服务器存储的范畴。


二、数据库

       数据库的作用就是按照一定的形式组织存放数据,目的是为便于操作数据,即增、删、改、查。数据库的发展历程为:网状数据库-->层次型数据库-->关系型数据库(RDBMS)-->非关系型数据库。


1. 常见的关系型数据库

SQLite——微型数据库,常用于移动端

MySQL——开源RDBMS,是一种关联数据库管理系统,将数据库保存在不同的库中,每个库可包含多个表,表中可以有多行多列的数据,可用于各种操作系统

SQL Server——Microsoft开发的中型数据库,只适用于Windows操作系统

Oracle——Oracle开发的中大型数据库,可用于各种操作系统

DB2——IBM开发的中大型数据库,常与IBM服务器搭配


2. MySQL部署结构

       MySQL部署分服务器端和客户端,服务器端负责存储维护数据,客户端负责连接服务器端,对数据进行增删改查操作。


使用客户端连接服务器端时只需要执行命令:mysql.exe -h127.0.0.1 -P3306 -uroot -p


-h,host IP地址/域名  eg:127.0.0.1/localhost(永远指向自己本身的电脑)

-P,port 端口(此处为3306端口)

-u,user 用户名(root是管理员账户,在root下密码为空)

-p,password 密码


此命令也可以简写为:mysql -uroot

20210718133938726.png


3. 常用管理命令(必须以英文“;”结尾)

quit;  退出连接

show databases;  显示当前所有数据库

use 数据库名称;  进入指定的数据库

show tables;  显示当前数据库下的所有数据表

desc 数据表名称;  描述数据表中都有哪些列


4. 常用SQL命令以及举例

(1)定义数据结构(DDL)


drop database if exists jd;     //丢弃数据库jd(存在的基础上)


create database jd;               //创建数据库jd


use jd;                                   //进入数据库jd


create table student ( id int, name varchar ( 8 ), sex varchar ( 1 ), score int );    //创建表student,包括id、name、sex、score四列


(2)操作数据(DML)


insert into student values('1','张三','M','99');      //向student表中插入一行数据


delete from user where uid="2";  //删除uid为2的行数据


update user set upwd="666666",isOnline="n" WHERE uid="3";     //修改uid为3的行密码为666666,在线状态为n


(3)查询数据(DQL)


select * from student;      //查询student表中的所有数据


三、列类型

       列类型指在创建数据表时,指定的列所能存储的数据类型。


1. 数值型

20210718133938726.png

2. 日期时间型

20210718150128158.png

3. 字符串型

64C012CA-791F-4348-A615-186E2388EDB2.png

64C012CA-791F-4348-A615-186E2388EDB2.png


四、列约束

       列约束的意思是MySQL对要插入的数据进行特定的验证,只有符合条件才允许插入(位于列类型之后)。


1. 主键约束  primary key

       声明了主键约束的列,不允许插入重复,一个表中只能有一个主键约束,通常用于编号列,可加快数据查找速度。

       自增列 Auto_increment:自动增长,声明了自增列,插入数据时只需要赋值为 null,就会获取最大值然后加1插入。声明了自增列也允许手动赋值。


2. 非空约束  not null


       声明了非空约束的列上禁止插入Null。


3. 唯一约束  unique


       声明了唯一约束的列不允许插入重复的值,但是 unique 允许插入重复的 null 甚至多个 null,一个表中可以有多个唯一约束。


4. 默认值约束  defaul


       可以使用 default 关键字设置默认值,default使用时不加引号。


5. 检查约束  check


       也称自定义约束,用户可以制定约束的条件。但是 MySQL 不支持检查约束,认为会极大影响数据插入数据,后期需要通过 JS 实现。


6. 外键约束  foreign


       声明了外键约束的列称为外键列,这一列取值范围到另一个表的主键中,是为了让两个表建立关联。外键约束用法特殊,常用于创建表的最后一行,外键列要和对应的主键列的列类型保持一致。格式如下:


格式:foreign key(外键列) references 另一个表(主键列)    


eg:foreign key(familyId) references family(fid)


五、MySQL查询语句

注:以下举例中 ,emp为员工表,dept为部门表

20210718133938726.png20210718150128158.png


1. 简单查询

(1)查询特定的列    


eg:查询所有员工的编号和姓名   select eid,ename from emp;


(2)查询所有的列    


eg:查询员工表emp中所有信息   select * from emp;


(3)给列起别名      


eg:查询所有员工的编号和姓名并起别名  select eid as 编号,ename as 姓名 from emp;


(4)显示不同的记录


eg:查询有哪些性别的员工  select distinct sex from emp;


(5)查询时执行计算


eg:查询所有员工姓名及年薪   select ename,salary*12 from emp;


(6)查询结果排序    


eg:查询所有部门数据,结果按照编号升序排列   select * from dept order by did asc;


(7)条件查询            


eg:查询编号为5的员工的数据   select * from emp where eid=5;


(8)模糊条件查询    


eg:查询姓名中含有“e”的员工   select * from emp where ename like "%e%";


% 表示匹配任意个字符, _  表示匹配一个字符,以上两个匹配符须结合like关键字使用


(9)分页查询


       当查询的结果中数据太多,一次显示不完,就可以使用分页显示。分页查询需要两个已知条件:当前页码+每页数据量。语法:select * from emp limit 开始查询的值, 每页的数据量;


eg:假设每页显示五条数据,分别查出前三页

       第1页:select * from emp limit 0,5;

       第2页:select * from emp limit 5,5;

       第3页:select * from emp limit 10,5;

       注意:开始查询的值=(当前的页码-1)* 每页数据量


2. 复杂查询

(1)聚合查询/分组查询


eg:通过员工编号查询员工数量   select count(eid) from emp;


eg:查询各部门员工 最高工资,员工数量,平均工资

select max(salary),count(*),avg(salary),deptId from emp group by deptId;


eg:查询所有员工出生的年份   select year(birthday) from emp;


(2)子查询


多个SQL命令的组合,把一个SQL命令的结果作为另一个命令的条件;


eg:查询高于平均工资的男员工

select * from emp where sec=1 && salary>(select avg(salary) from emp);


eg:查询和Tom同一年出生的员工

select * from emp where year(birthday)=(select year(birthday) from emp where ename="Tom") && ename!="Tom";


(3)多表查询


查询的列分布在不同的表中时,用多表查询(前提:表和表之间必须有关联);


eg:查询所有员工的姓名及部门名称

select emp.ename,dept.dname from emp,dept where emp.deptId=dept.did;select ename,dname from emp left outer join dept on deptId=did;


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
10天前
|
SQL 关系型数据库 MySQL
【MySQL】基本查询(表的增删改查)-- 详解(上)
【MySQL】基本查询(表的增删改查)-- 详解(上)
|
9天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错之在处理MySQL的DECIMAL类型时出现了报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
10天前
|
关系型数据库 MySQL
【MySQL】复合查询(重点)-- 详解
【MySQL】复合查询(重点)-- 详解
|
9天前
|
SQL 关系型数据库 MySQL
简简单单 My SQL 学习笔记(3)——连接和嵌套查询
简简单单 My SQL 学习笔记(3)——连接和嵌套查询
|
9天前
|
SQL 关系型数据库 MySQL
简简单单 My SQL 学习笔记(2)——分组和简单数据的查询
简简单单 My SQL 学习笔记(2)——分组和简单数据的查询
|
9天前
|
关系型数据库 MySQL
【MySQL进阶之路 | 基础篇】约束之CHECK约束与DEFAULT约束
【MySQL进阶之路 | 基础篇】约束之CHECK约束与DEFAULT约束
|
9天前
|
关系型数据库 MySQL 索引
【MySQL进阶之路 | 基础篇】约束之主键约束与AUTO_INCREMENT
【MySQL进阶之路 | 基础篇】约束之主键约束与AUTO_INCREMENT
|
9天前
|
SQL 关系型数据库 MySQL
【MySQL进阶之路 | 基础篇】约束之概述
【MySQL进阶之路 | 基础篇】约束之概述
|
9天前
|
关系型数据库 MySQL 数据库管理
【MySQL进阶之路 | 基础篇】子查询之二(不相关子查询与相关子查询)
【MySQL进阶之路 | 基础篇】子查询之二(不相关子查询与相关子查询)
|
9天前
|
存储 数据可视化 关系型数据库
【MySQL进阶之路 | 基础篇】创建和管理数据库
【MySQL进阶之路 | 基础篇】创建和管理数据库