MySQL 基础语法指令(一)

本文详细介绍MySQL的基础语法,包括数据库的创建、数据表的管理、数据的插入与查询等核心操作,以及数值、日期时间、字符串等数据类型的使用规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

语法规范

  1. 不管是SQL 还是 MySQL,他们程序的内部都是不区分大小写的。(但是我们自定义的数据库名,表名,表字段是区分大小写的)
  2. 每一次的操作语句需要使用 ;或者\g来收尾
  3. 每个子句之间一般分行来书写
  4. 每一次操作的关键字不能缩写,也不能分行
  5. 可以用首行的缩进来提高语句的可读性

MySQL数据类型

数值类型

类型大小用途
tinyint1 byte(-128,127)小整数值
smallint2 byte(-32 768,32 767)大整数值
mediumint3 byte大整数值
int 或者 integer4 byte大整数值
bigint8 byte极大整数值
float4 byte单精度浮点数值
double8 byte双精度浮点数值

日期和时间类型

类型大小格式用途
date3 byteYYYY - MM - DD日期值
time3 byteHH : MM : SS时间值或持续时间
year1 byteYYYY年份值
datetime8 byteYYYY - MM - DD HH : MM : SS混合日期和时间值
timestamp4 byteYYYYMMDDHHMMSS混合日期和时间值,时间戳

字符串类型

类型大小用途
char(n)0 ~ 255 byte长度为n的定长字符
varchar(n)0 ~ 65535 byte最大长度为n的可变长字符
blob0 ~ 65535 byte二进制形式的长文本数据
text0 ~ 65535 byte长文本数据

数据库的命令

创建数据表

create table table_name(
	column_name1 column_type,
	column_name2 column_type
);

在这里插入图片描述

  • 当我们定义一个字符串的时候,如果不想要这个字符串为NULL,可以在后面设置字段属性为not NULL。这样的话我们要是输入该字段为NULL就会报错
  • auto_increment 定义这个属性的列为自增属性,一般用于主码,数值会自动加一。如果+1后的数值超过了表示的范围,就会失效
  • primary key 关键字用于定义列为主码,一个表可以有多个主码,每个主码之间用,分隔开。
  • unsigned 关键字表示当前数据类型为无符号的数据

查看该表的结构
在这里插入图片描述

插入数据

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

在这里插入图片描述

  • 如果我们要插入的数据为字符型,必须交单引号或者双引号,“dcl”
  • 其实对于带有 auto_increment 的属性我们可以选择不提供数据,因为该字段本身就是自增的。只是超过表示范围的话就会失效
  • 如果插入带有时间属性的数据时,可以使用now()函数,这是MySQL中的一个实例函数,可以返回日期和时间

查询数据

select column_name1,column_name2
from table_name
[where clause(条件)]
[limit N] [offset M];

在这里插入图片描述

  • 查询语句中可以多表查询,也可以单标查询,不同的表之间需要用,分隔开。
  • where关键字后可以跟查询的条件,可以根据条件从表中查询指定数据
  • select命令可以读取一条或者多条记录
  • *表示当前查询的表中满足条件的所有字段数据
  • limit可以设定返回的记录数,也就是从当前索引为 N 的数据开始查询
  • offect可以指定select语句在查询时的偏移量,在使用时需要配合limit 关键字来使用。默认偏移为0

在这里插入图片描述
数据库中数据的下标跟数组是一样的,都是从0号下标开始

where 子句

select field1,...fieldN from table1,...tableN
where condition1 [and [or] ] condition2...;

在这里插入图片描述

  • 查询中可以使用单表查询,也可以多表查询,表与表之间用,分隔开,并使用where语句设置查询条件
  • where语句中可以指定任何条件,不同的条件中可以用 and 或者 or 来连接,用法和C原因中的与,或相同
  • where语句也可以使用与 Mysql 的delect 和 update命令
  • where语句类似于C语言阶段的if条件,根据MySQL表中的字段值来读取数据。

操作符

操作符描述实例
=等号,检测两个值是否相等,相等是返回 true(2 = 3) 返回false
<>,!=不等于,两个值如果不相等返回 true(2 != 3) 返回true
>大于号,如果左边的值大于右边的值返回 true2 > 1 返回 true
<小于号,如果左边的值小于右边的值返回 true1 < 2 返回 true
>=大于等于号,如果左边的值大于等于右边的值,返回 true1 >= 1 返回 true
<=小于等于号,如果左边的值小于等于右边的值,返回 true1 <= 1 返回 true

update 更新

update table_name
set field1 = new_values1, field2 = new_values2
[where cluse]

在这里插入图片描述

  • 可以同时更新一个或者多个字段
  • 可以在where子句中指定任何合理的条件
  • 可以在一个单独表中同时更新数据

delete 语句

delete from table_name
[where clause];
  • 如果没有指定where子句的条件,那么表中的所有数据都会被删掉,但是这个表不会被删除
  • 可以在单个表中一次删除记录

like 子句

like在字典中有像的意思,在查询的时候,我们有时不一定知道需要筛选的完整信息,可能只知道一半,这时就可以使用like来把所有含有这一半信息的字段数据都筛选出来。

select field1,...fieldN  from table_name
where field1 like condition1 [and [or] ] field2 = "somevalue";

在这里插入图片描述

  • where语句中可以使用like子句
  • like子句可以代替=,通常与%一起使用,类似于一个元字符的搜索(类似正则表达式那种)

union 操作符

可以连接两个表格之间的select查询结果到一个集合中,多个select语句会删除重复的数据。

select expression1, expression2, ... expression_n
from table_name
[where conditions]
union [all | distinct]
select expression1, expression2, ... expression_n
from table_name
[where conditions]

在这里插入图片描述

  • expression1, expression2, … expression_n:要检索的列。
  • table_name:要检索的数据表
  • all:返回所有结果集合,包含重复数据
  • distinct:删除结果集合中重复的数据,系统默认是删除重复数据的,所以可加可不加。

排序

可以使用 MySQL 的 order by子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。

select field1,...fieldN 
from table_name1,...table_nameN
order by field1 [asc [desc] ] ,....fieldN [ asc [desc] ];

在这里插入图片描述

  • 可以使用任何字段来作为排序的条件,然后返回排序后查询的结果,也可以设定多个字段来进行排序
  • asc 关键字来设置升序排列,desc关键字来设置降序排列。默认为升序
  • 可以添加where…like子句为判断条件
  • 因为查询不改变数据库存储,所以排列后并不会改变原表的数据

group by 语句

该语句可以根据一个或多个列对结果集进行分组,可以统计一个属性有多少列,也就是这个属性出现的次数。

select column_name,function(column_name)
from table_name
where column_name operator value
group by column_name;

在这里插入图片描述

连接的使用

  • inner join(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • left join(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • right join(右连接): 与left join 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
select fleld1,...fieldN
from table_name1 inner join table_name2
on table_name1.field1 = table_name2.field2;

在这里插入图片描述

from table_name a

表示给一个表格在查询语句中起一个别名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值