MySQL从入门到放弃一 简单用法

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: MySQL从入门到放弃一 简单用法

## 一,安装运行

官网下载:嫌慢找镜像。

图形化界面:


```xml

doc:services.msc

```


控制面板-服务工具-服务

命令行:

启动mysql服务


```xml

net start mysql56

```


停止mysql服务:


```xml

net stop mysql56

```


打开数据库:

方法一:电脑左下角找到  mysql命令行(不推荐,如果出错、网络原因什么的,它会自动关闭窗口,找不到具体原因)

方法二:将mysql\bin 配置在Path环境变量中,DOC命令下输入:mysql -h localhost -u root -p  


## 二,存储引擎

就是如何存储数据、如何更新数据、如何查询数据、

如何为存储的数据建立索引等一系列技术的实现方法。

查看mysql支持的存储引擎:


```xml

show engines;

```


常用的两种:

MyISAM:拥有较快的插入、查询速度,但**不支持事务。**

InnoDB:**支持ACID事务**,支持行级锁,支持外键;MySQL 5.5版本后的默认存储引擎

## 三,MySQL数据类型

大致分为3类:数值、日期/时间和字符串(字符)类型。

![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20200731114958691.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0OTY5NjQz,size_16,color_FFFFFF,t_70)


## 四,数据的完整性

数据完整性是指存储在数据库中的数据,应该保持一致性和完整性。

关系模型允许定义3类数据约束,他们是实体完整性、参照完整性以及用户定义的完整性。

前两种完整性约束由关系数据库系统自动支持。

![在这里插入图片描述](https://ucc.alicdn.com/images/user-upload-01/20200731115015503.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0OTY5NjQz,size_16,color_FFFFFF,t_70)


唯一性约束:

unique意味者任何两条数据的同一字段不能有相同值,可保证实体完整性。

外键约束:

外键约束定义了表之间的一致性关系,用于强制参照完整性。

在插入数据时,必须先向主表插入,再向从表插入。删除数据时,刚好相反。

## 五,SQL语句

按照功能用途,可以划分为4种:DDL、DML、DQL和DCL。

**数据定义语言(Data Definition Language):**

DDL用于数据库、表、视图等的建立、删除。DDL包括CREATE、ALTER、DROP等。



**数据操纵语言(Data Manipulation Language):**

DML用于添加、删除和修改数据表中的记录。DML包括INSERT、DELETE和UPDATE。


**数据控制语言(Date Control Language):**

DCL包括数据库对象的权限管理和事务管理。DCL包括COMMIT、ROLLBACK、GRANT等。


**数据查询语句(Data Query Language):**

查询是数据库的基本功能。DQL中使用SELECT查询数据表中的记录。



**1)数据定义语言**

1,创建数据库:


```sql

create database table_name

```


需要定义的信息主要包括:表名、字段名、字段类型。


```sql

create[temporary]table [if not exits] table_name[(create_definition,...)][table_options][select_statement]

```


temporary:表示创建临时表,在当前会话结束后将自动消失。

if not exits:在建表前,先判断表是否存在,只有该表不存在时才创建

create_definition:建表语句的关键部分,用于定义表中各列的属性。

table_options:表的配置选项,例如:表的默认存储引擎、字符集。

select_statement:通过select语句建表。

2,删除数据库:


```sql

drop database table_name

```


3,删除contacts表


```sql

drop table table_name;

```


4,删除表


```sql

drop table table_name;

```


5,添加字段sex,类型为varchar(1)


```sql

alter table table_name add sex varchar(1);

```


6,修改字段sex的类型为tinyint


```sql

alter table table_name modify sex tinyint;

```


7,删除字段sex


```sql

alter table table_name drop column sex;

```


8,查看当前在哪个数据库下工作:


```sql

select database()

```


9,显示表的结构


```sql

desc table_name;

```


10,查看表生成的DDL(反译建表语句)


```sql

show create table table_name ;

```


**2)数据操纵语言(创建、修改和删除)**

1,插入单条数据:


```sql

insert into table_name(field1,field2,....) values(value1,value2,...);

```


2,插入多条数据


```sql

insert into table_name(field1,field2,....) values(valueA1,valueA2,...), (valueB1,valueB2,...);

```


3,修改数据


```sql

update table_name set field1=newValue1,field2=newValue2[where clause];

```


如果不带where,将更新所有。

4,删除数据


```sql

delete from table_name where id =1;

```


5,数据默认


```sql


sex tinyint default 1


```

6,数据转义




```sql

' Tom\'s cat'

"  Lily's cat  "

```



**3)数据查询语句**

1,查询表中列的注释信息


```sql

select * from information_schema.columns

where table_schema = 'db' #表所在数据库

and table_name = 'tablename' ; #你要查的表

```


2,只查询列名和注释:


```sql

select column_name, column_comment from information_schema.columns where table_schema ='db' and table_name = 'tablename' ;

```


3,查看表的注释


```sql

select table_name,table_comment from information_schema.tables where table_schema = 'db' and table_name ='tablename'

```


4,select语句中使用where子句语句


```sql

select column_name from table_name where column_name 运算符 value;

```


5,and、or运算符语句


```sql

select column_name from table_name where condition1 and condition2 or condition3


and:表示左右两边的条件同时成立。

or:表示左右两边只要有一个条件成立。

```


6,运算符in的使用

在where语句中过滤某个字段的多个值。


```sql

select column_name from table_name where column_name in(value1,value2);

```


7,like模糊查询


```sql

select column_name from table_name where column_name like "%value%"

```


百分号“%”表示0个或多个字符,下划线 “_”表示单个字符

8,函数(mysql内置函数)



now()

```sql

insert into user(id,name,create_time) values(1,"zhangsan",now());

```


date_format()格式转换


```sql

select name,date_format(now(),'%Y/%m/%d') from user;

```


聚合函数(对一组值计算,返回单个值),count、sum、avg、min、max

ifnull()用于处理空值

ifnull(v1,v2),如果v1的值不为null,则返回v1,否则返回v2。

case when

类似编程语句的if else或者switch。


```sql

select id ,password,case sex when 1 then "男" when 2 then "女" else "未知" end as sex from c;

```


as sex 为取的别名

9,查询结果排序


```sql

order by

select column_name1,column_name2

from table_name1,table_name2

order by column_name,column_name[ASC|DESC]

```


ASC表示升序排列,DESC表示按降序排列。

默认为升序排列。


limit


```sql

select column_name1,column_name2

from table_name1,table_name2

limit[offset] row_count;

```


offset指定要返回的第一行的偏移量,第一行的偏移量是0,而不是1。

row_count指定要返回的最大行数。

limit的分页公式:

limit(page-1)row_count,row_count;


10,group by


```sql

select column_name,aggregate_function(column_name)

from table_name

group by column_name

```


aggregate_function表示聚合函数。

group by 可以对一列或多列进行分组。


11,having

在SQL中增加having子句原因是,where关键字无法与聚合函数一起使用。

having子句可以对分组后的各组数据进行筛选。


```sql

select column_name,agregate_function(column_name)

from table_name

where column_name operator value

group by column_name

having aggregate_function(column_name) operator value

```












相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
存储 关系型数据库 MySQL
mysql中的left join、right join 、inner join的详细用法
【8月更文挑战第16天】在MySQL中,`INNER JOIN`、`LEFT JOIN`与`RIGHT JOIN`用于连接多表。`INNER JOIN`仅返回两表中匹配的行;`LEFT JOIN`保证左表所有行出现于结果中,右表无匹配时以NULL填充;`RIGHT JOIN`则相反,保证右表所有行出现于结果中。例如,查询学生及其成绩时,`INNER JOIN`仅显示有成绩的学生;`LEFT JOIN`显示所有学生及他们对应的成绩,无成绩者成绩列为空;`RIGHT JOIN`显示所有成绩及对应学生信息,无学生信息的成绩条目则为空。
|
1月前
|
存储 JSON 关系型数据库
mysql中find_in_set()函数用法详解及增强函数
总结而言,`FIND_IN_SET()`是MySQL中处理由逗号分隔的字符串列表的一种便捷方法,尤其适用于列表相对较短且不经常更改的场景。然而,对于更为复杂的需要高性能和可扩展性的数据库设计,它可能不是最优选择,应考虑使用更加正规化的数据库结构。
56 2
mysql中find_in_set()函数用法详解及增强函数
|
29天前
|
SQL 关系型数据库 MySQL
MySQL如何入门
MySQL如何入门
|
1月前
|
SQL 关系型数据库 MySQL
「Python入门」python操作MySQL和SqlServer
**摘要:** 了解如何使用Python的pymysql模块与MySQL数据库交互。首先,通过`pip install pymysql`安装模块。pymysql提供与MySQL的连接功能,例如创建数据库连接、执行SQL查询。在设置好MySQL环境后,使用`pymysql.connect()`建立连接,并通过游标执行SQL(如用户登录验证)。注意防止SQL注入,使用参数化查询。增删改操作需调用`conn.commit()`来保存更改。pymssql模块类似,但导入和连接对象创建略有不同。
36 0
「Python入门」python操作MySQL和SqlServer
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL从入门到精通】常用SQL语句分享
【MySQL从入门到精通】常用SQL语句分享
38 2
|
2月前
|
关系型数据库 MySQL 数据库
『Django』模型入门教程-操作MySQL
一个后台如果没有数据库可以说废了一半。日常开发中大多数时候都在与数据库打交道。Django 为我们提供了一种更简单的操作数据库的方式。 在 Django 中,模型(Model)是用来定义数据库结构的类。每个模型类通常对应数据库中的一个表,类的属性对应表中的列。通过定义模型,Django 的 ORM(Object-Relational Mapping)可以将 Python 对象映射到数据库表,并提供一套 API 来进行数据库操作。 本文介绍模型的用法。
|
2月前
|
Java 关系型数据库 MySQL
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
30 4
|
1月前
|
存储 关系型数据库 MySQL
MySQL小白教程:从入门到查询高手
MySQL小白教程:从入门到查询高手
|
2月前
|
关系型数据库 MySQL 数据库
轻松入门:使用Docker安装MySQL数据库的完全指南
轻松入门:使用Docker安装MySQL数据库的完全指南
|
2月前
|
关系型数据库 MySQL
MySQL中CASE WHEN用法总结
MySQL中CASE WHEN用法总结