对MySQL的接触也是来自于笔者的项目需要。MySQL是一个管理数据库的工具。准确地来说是管理关系型数据库的工具。SQL是一种用于关系型数据库的语法标准。简单来说,我们利用SQL语法在MySQL这个工具上运行我们的数据库。
一个网页,一款app,一项小程序,它们的核心在于数据。我们确实需要前端人员来编写精美的页面,但是如果拿不到后台的数据,我们的项目也会失去意义。
距离笔者进入大学生活也有4个多月了。除了学习了web前端和微信小程序的开发,我还想挑战一下完成数据库的学习,为我们的项目提供后台支持。
MySQL跟我之前学的微信小程序开发的差异还是很大的。首先MySQL默认是没有可视化图形界面的。如果不借助其他工具,你必须在命令窗口对数据库进行操作。这对高中没有编程基础,更没有命令行概念的我来说确实很不适应。好在MySQL官方适配了一款可视化操作软件MySQL workbench。
数据在MySQL中的存储是具有很丰富的结构的。数据以二维表的形式存储在数据库中,每张表都由许多记录组成。记录的字段由表来定义。
MySQL遵循SQL通用语法。其中包含
DDL (Data Definition Language)数据定义语言
DML (Data Manipulation Language)数据操作语言
DQL (Data Query Language) 数据查询语言
DCL (Data Control Language) 数据控制语言
以下为笔者整理的SQL入门语法合集:
DDL数据库
show databases;//展示所有数据库
select database();//查询当前数据库
create database [if not exists] 数据库名 [default charset 默认字符集][collate 排序规则];//创建数据库,其中,中括号内为可选值。if not exists表示如果不存在这个数据库就创建。默认字符集可以使用utf8mb4,其中utf8是多字符集,可以用于显示中文,mb4则增加了显示4字节字符的支持。
drop database [if exists] 数据库名;//删除一个数据库
use 数据库名;//选中当前数据库。只有当你选中想要操作的数据库的时候才能对里面的表进行数据的操作。
DDL表
create table 表名(
字段1 类型 [comment 注释],
字段2 类型 [comment 注释],
...
字段n 类型 [comment 注释]
)[comment 注释];//创建一个表,其中可以指定多个字段,每个字段都必须要有一个数据类型,可以加入注释。
show tables;//展示当前数据库中的所有表
desc 表名;//查询表的结构,可以查看指定了什么字段,分别是什么类型
show create table 表名;//可以更加详细地查看表的结构以及详细信息,注释在这里显示
这里提到了数据类型。作为专门储存和管理数据的工具,MySQL中的数据类型非常丰富。int家族有tinyint,smallint,mediumint,int,bigint等多种类型,分别占据1,2,3,4,8个字节。同时,用于表示文本数据的类型也有blob家族和text家族,还有表示少量文字的char和varchar。感兴趣的读者可以自行阅读相关文章,这里不加赘述。
DDL表
alter table 表名 add 字段名 类型 [comment 注释];//给指定表增加一个字段
alter table 表名 modify 字段名 新数据类型;//修改指定字段的类型
alter table 表名 change 旧字段名 新字段名 类型 [comment 注释];//重命名指定字段也可以用来修改字段的数据类型
alter table 表名 rename to 新表名;//修改表的名称
drop table [if exists] 表名;//删除指定表
truncate table 表名;//重置该表,清空数据
DML数据insert增
insert into 表名(字段名1,字段名2,...) values(值1,值2,...);//添加一条记录,包含指定字段,字段和值必须一一对应。没有指定的字段将被置为默认值,通常为null
insert into 表名 values(值1,值2,...);//添加一条记录,包含所有字段,值的顺序必须与字段顺序一一对应
以上两种添加数据的方式,都可以通过在values(),(),()上进行这样操作来一次添加多条记录。
DML数据update改,delete删
update 表名 set 字段名1=值1,字段名2=值2,...[where 条件];//以where为筛选条件对筛选出的记录执行操作:修改指定字段为新值
delete from 表名 [where];//删除满足where条件的指定记录
DQL基本查询
select 字段1,字段2,字段3...from 表名;//查询表里的所有记录的指定字段
select * from 表名;//查询所有记录的所有字段
select 字段1 [as 别名1],字段2 [as 别名2]...from 表名;//
DQL条件查询
select * from 表名 where 条件;//通过逻辑条件查询,比如,在表中的数据有一个整型数据字段叫做id,就可以通过id = 15 来查询到id为15的记录。同样,可以使用>,<,<=,>=,<>,!=,and(&&),or(||),not(!)这样的逻辑关系操作符。where 还提供了另一种查询的方式。where id in(10,20,30)指的是id为10或20或30的记录。此外,对于对比较操作符不敏感的文本字段,还有一种匹配方式,占位符。占位符分为两种,一种是“_”,一种是“%”,“_”只能占一个位子,“%”可以占多个位子。比如where name like '__'就筛选的是name为两个字的记录,where id like "%X"筛选的是id末尾为X的记录。