MySQL 基础语法指令(一)

MySQL 基础语法

  • 语法规范
  • MySQL数据类型
    • 数值类型
    • 日期和时间类型
    • 字符串类型
  • 数据库的命令
    • 创建数据表
    • 插入数据
    • 查询数据
    • where 子句
      • 操作符
    • update 更新
    • delete 语句
    • like 子句
    • union 操作符
    • 排序
    • group by 语句
    • 连接的使用

语法规范

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

MySQL数据类型

数值类型

类型 大小 用途
tinyint 1 byte(-128,127) 小整数值
smallint 2 byte(-32 768,32 767) 大整数值
mediumint 3 byte 大整数值
int 或者 integer 4 byte 大整数值
bigint 8 byte 极大整数值
float 4 byte 单精度浮点数值
double 8 byte 双精度浮点数值

日期和时间类型

类型 大小 格式 用途
date 3 byte YYYY - MM - DD 日期值
time 3 byte HH : MM : SS 时间值或持续时间
year 1 byte YYYY 年份值
datetime 8 byte YYYY - MM - DD HH : MM : SS 混合日期和时间值
timestamp 4 byte YYYYMMDDHHMMSS 混合日期和时间值,时间戳

字符串类型

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

数据库的命令

创建数据表

create table table_name(
	column_name1 column_type,
	column_name2 column_type
);

MySQL 基础语法指令(一)_第1张图片

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

查看该表的结构
MySQL 基础语法指令(一)_第2张图片

插入数据

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];

MySQL 基础语法指令(一)_第3张图片

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

MySQL 基础语法指令(一)_第4张图片
数据库中数据的下标跟数组是一样的,都是从0号下标开始

where 子句

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

MySQL 基础语法指令(一)_第5张图片

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

操作符

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

update 更新

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

MySQL 基础语法指令(一)_第6张图片

  • 可以同时更新一个或者多个字段
  • 可以在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";

MySQL 基础语法指令(一)_第7张图片

  • 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]

MySQL 基础语法指令(一)_第8张图片

  • 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] ];

MySQL 基础语法指令(一)_第9张图片

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

group by 语句

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

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

MySQL 基础语法指令(一)_第10张图片

连接的使用

  • 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;

MySQL 基础语法指令(一)_第11张图片

from table_name a

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

你可能感兴趣的:(数据库)