MySQL从入门到精通:基本语法介绍与使用_01

Posted ABin-阿斌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL从入门到精通:基本语法介绍与使用_01相关的知识,希望对你有一定的参考价值。

我是 ABin-阿斌:写一生代码,创一世佳话,筑一揽芳华。 如果小伙伴们觉得我的文章有点 feel ,那就点个赞再走哦。
在这里插入图片描述

下一篇:MySQL从入门到精通:多表查询的灵活运用_02

第1章 数据库的介绍

1.1 数据库概述

1.1.1 什么是数据库

​ 存储数据的仓库. 其本质是一个文件系统,数据库按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。

1.1.2 数据的存储方式

  1. 数据保存在内存

    int[] arr = new int[]{1, 2, 3, 4};
    ArrayList<Integer>list = new ArrayList<Integer>();
    list.add(1);
    

    new 出来的对象存储在堆中,堆是内存中的一小块空间

    优点: 内存速度快
    缺点: 断电/程序退出,数据就清除了,内存价格贵

  2. 数据保存在普通文件
    优点: 永久保存
    缺点: 查找,增加,修改,删除数据比较麻烦,效率低

  3. 数据保存在数据库
    优点: 永久保存,通过SQL语句比较方便的操作数据库

1.2 数据库的优点

​   数据库是按照特定的格式将数据存储在文件中,通过SQL语句可以方便的对大量数据进行增、删、改、查操作,数据库是对大量的信息进行管理的高效的解决方案。

1.3 数据库管理系统

​   数据库管理系统(DataBase Management SystemDBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。

数据库和数据库管理系统的区别:

  • 简单区别就是,数据库是一个技术门类,或者一个产品,主要用户存储数据,而管理系统就是管理这个数据库产品的工具系统。

1.4 各大常见数据库

在这里插入图片描述

  • MYSQL:开源免费的数据库,小型的数据库.已经被 Oracle 收购了 MySQL6.x 版本也开始收费。
  • Oracle:收费的大型数据库,Oracle 公司的产品。Oracle 收购SUN公司,收购 MYSQL
  • DB2IBM 公司的数据库产品,收费的。常应用在银行系统中.
  • SQLServerMicroSoft 公司收费的中型的数据库。C#、.net 等语言常使用。
  • SyBase:已经淡出历史舞台。提供了一个非常专业数据建模的工具 PowerDesigner
  • SQLite:嵌入式的小型数据库,应用在手机端。

常用数据库MYSQLOracle

  • 在web应用中,使用的最多的就是mysql数据库,原因如下:
    • 开源、免费
    • 功能足够强大,足以应付web应用开发(最高支持千万级别的并发访问)

第2章 数据库的安装与使用

2.1 数据库的安装

1.打开下载的 mysql 安装文件双击解压缩,运行 mysql-5.5.40-win32.msi

在这里插入图片描述在这里插入图片描述

  1. 选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,选择“Custom”,按“next”键继续。
    在这里插入图片描述

  2. 点选“Browse”,手动指定安装目录。
    在这里插入图片描述

  3. 填上安装目录,我的是“d:\\Program Files (x86)\\MySQL\\MySQL Server 5.0”,按“OK”继续。
    在这里插入图片描述

  4. 确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装。
    在这里插入图片描述


    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 正在安装中,请稍候,直到出现下面的界面, 则完成MYSQL的安装
    在这里插入图片描述

数据库安装好了还需要对数据库进行配置才能使用,MYSQL的配置:

  1. 安装完成了,出现如下界面将进入mysql配置向导。
    在这里插入图片描述

  2. 选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration(标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。
    在这里插入图片描述

  3. 选择服务器类型,“Developer Machine(开发测试类,mysql占用很少资源)”、“Server Machine(服务器类型,mysql占用较多资源)”、“Dedicated MySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)”
    在这里插入图片描述

  4. 选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“Transactional Database Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional),按“Next”继续。
    在这里插入图片描述

在这里插入图片描述

  1. 选择网站并发连接数,同时连接的数目,“Decision Support(DSS)/OLAP(20个左右)”、“Online Transaction Processing(OLTP)(500个左右)”、“Manual Setting(手动设置,自己输一个数)”。
    在这里插入图片描述

  2. 是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql数据库了,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样MySQL就不会允许细小的语法错误。如果是新手,建议您取消标准模式以减少麻烦。但熟悉MySQL以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。按“Next”继续
    在这里插入图片描述

  3. 就是对mysql默认数据库语言编码进行设置(重要),一般选UTF-8,按 “Next”继续。
    在这里插入图片描述

  4. 选择是否将 mysql 安装为 windows 服务,还可以指定 Service Name(服务标识名称),是否将 mysqlbin 目录加入到 Windows PATH(加入后,就可以直接使用 bin 下的文件,而不用指出目录名,比如连接,mysql.exe -uusername -ppassword 就可以了,不用指出 mysql.exe 的完整地址,很方便),我这里全部打上了勾,Service Name 不变。按 Next 继续。
    在这里插入图片描述

  5. 询问是否要修改默认root用户(超级管理)的密码。Enable root access from remote machines(是否允许root用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)。最后 Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询),一般就不用勾了,设置完毕,按 Next 继续。
    在这里插入图片描述

  6. 确认设置无误,按 Execute 使设置生效,即完成 MYSQL 的安装和配置。
    在这里插入图片描述
    在这里插入图片描述

注意: 设置完毕,按 Finish 后有一个比较常见的错误,就是不能 Start service,一般出现在以前有安装 mysql 的服务器上,解决的办法,保证以前安装的 mysql 服务器彻底卸载掉了。

解决方法: 卸载MySQL,重装MySQL

2.3 数据库的卸载

  1. 停止 windowMySQL 服务。
    找到——控制面板——管理工具——服务,停止MySQL后台服务。

    在这里插入图片描述

  2. 卸载MySQL安装程序。找到“控制面板”-> “程序和功能”,卸载MySQL程序。
    在这里插入图片描述

  3. 删除 MySQL 安装目录下的所有文件。

  4. 删除c盘 ProgramDate 目录中关于 MySQL 的目录。路径为:C:\\ProgramData\\MySQL(是隐藏文件,需要显示出来)

  5. 在这里插入图片描述
    在这里插入图片描述

2.4 数据库的启动

  • MySQL 启动方式和普通的 windows 程序双击启动方式不同,分为以下2种:

  • Windows 服务方式启动

    • 操作步骤:
      在这里插入图片描述
      在这里插入图片描述

2.5 控制台连接数据库

​ MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的 root 账号,使用安装时设置的密码即可登录

  1. 登录格式1:mysql -u用户名 -p密码
    例如:mysql –uroot -proot

在这里插入图片描述

后输入密码方式:

mysql -u用户名 -p回车

密码

在这里插入图片描述

  1. 登录格式2:mysql -hip地址 -u用户名 -p密码
    例如:mysql –h127.0.0.1 –uroot -proot

在这里插入图片描述

  1. 登录格式3:mysql --host=ip地址 --user=用户名 --password=密码
    例如:mysql --host=localhost --user=root --password=root

    在这里插入图片描述

  2. 退出MySQL:exit
    在这里插入图片描述

2.7 MySQL目录结构:

  • bin: mysql 相关的可执行文件*.exe
  • data: mysql 自带的数据库文件
  • include: c语言的头文件(不用关注)
  • lib: 存放 mysql 使用到的 dll 动态库(相当于 jar 包,不用关注)
  • my.ini mysql:配置文件,配置了mysql 的相关信息

2.9 数据库管理系统、数据库和表的关系

​   数据库管理程序(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。数据库管理系统、数据库和表的关系。
在这里插入图片描述

注意: 先有数据库 → 再有表 → 再有数据。 一个库包含多个表

2.10 Java类与表的对应关系

在这里插入图片描述

第3章 SQL语句

3.1 SQL的概念

3.1.1 什么是SQL

  • 结构化查询语言,简称 SQL程序员或者 DBA(数据库管理员)使用 SQL和DBSM 进行交互,操纵数据库中的资源。

3.1.2 SQL作用

  • 通过SQL语句我们可以方便的操作数据库中的数据、表、数据库。
  • SQL是数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特有内容。
    在这里插入图片描述

3.1.2 SQL语句分类

  1. DDL(Data Definition Language)数据定义语言:
    用来定义数据库对象:数据库,表,列等。关键字:create,drop,alter…等

  2. DML(Data Manipulation Language)数据操作语言:
    用来对数据库中表的数据进行增删改。关键字:insert, delete, update…等

  3. DQL(Data Query Language)数据查询语言:
    用来查询数据库中表的记录(数据)。关键字:select,where…等

  4. DCL(Data Control Language)数据控制语言:(了解)
    用来定义数据库的访问权限和安全级别,及创建用户

3.2 SQL通用语法

  1. SQL语句可以单行或多行书写,以英文分号结尾。

  2. 可使用空格和缩进来增强语句的可读性。

  3. MySQL数据库的SQL语句不区分大小写,建议使用大写。

    SELECT * FROM student;
    
  4. 三种注释方式:

    • 单行注释:- -:注释内容 或 #: 注释内容(mysql特有)
    • 多行注释:/* 注释 */

3.3 DDL语句

3.3.1 DDL操作数据库

3.3.1.1 创建数据库

  1. 直接创建数据库
    CREATE DATABASE 数据库名;

  2. 判断是否存在并创建数据库
    CREATE DATABASE IF NOT EXISTS 数据库名;

  3. 创建数据库并指定字符集(编码表)
    CREATE DATABASE 数据库名 CHARACTER SET 字符集;

  4. 具体操作:

  • 直接创建数据库 db1
    CREATE DATABASE db1;
    
    在这里插入图片描述

3.3.1.2 查看数据库

  1. 查看所有的数据库
    SHOW databases;
    在这里插入图片描述

  2. 查看某个数据库的定义信息
    SHOW CREATE DATABASE 数据库名;
    在这里插入图片描述

3.3.1.3 修改数据库

修改数据库字符集格式

ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;

具体操作:

  • db3 数据库的字符集改成 utf8
    ALTER DATABASE db3 DEFAULT CHARACTER SET utf8;
    

在这里插入图片描述

3.3.1.4 删除数据库

DROP DATABASE 数据库名;

具体操作:

  • 删除 db2 数据库
    DROP DATABASE db2;
    

在这里插入图片描述

3.3.1.5 使用数据库

  1. 查看正在使用的数据库
    SELECT DATABASE();
  2. 使用/切换数据库
    USE 数据库名;

具体操作:

  • 查看正在使用的数据库
    SELECT DATABASE();
    

在这里插入图片描述

  • 使用db1数据库
    USE db1;
    
    在这里插入图片描述

3.3.2 DDL操作表

前提先使用某个数据库

3.3.2.1 创建表

CREATE TABLE 表名 (字段名1 字段类型1, 字段名2 字段类型2…);

建议写成如下格式:

CREATE TABLE 表名 (
字段名1 字段类型1, 
字段名2 字段类型2
);

关键字说明:

CREATE -- 表示创建
TABLE -- 表示创建一张表

MySQL数据类型

  • MySQL中的我们常使用的数据类型如下:
    在这里插入图片描述

详细的数据类型如下:

分类类型名称说明
整数类型tinyInt很小的整数
smallint小的整数
mediumint中等大小的整数
int(integer)普通大小的整数
小数类型float单精度浮点数
double双精度浮点数
decimal(m,d)压缩严格的定点数
日期类型yearYYYY 1901~2155
timeHH:MM:SS -838:59:59~838:59:59
dateYYYY-MM-DD 1000-01-01~9999-12-3
datetimeYYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~ 9999-12-31 23:59:59
timestampYYYY-MM-DD HH:MM:SS 19700101 00:00:01 UTC~2038-01-19 03:14:07UTC
文本、二进制类型CHAR(M)M为0~255之间的整数
VARCHAR(M)M为0~65535之间的整数

具体操作:

创建 student 表包含 id,name,birthday 字段

CREATE TABLE student (
      id INT,
      name VARCHAR(20),
      birthday DATE
);

3.3.2.2 查看表

  1. 查看某个数据库中的所有表
    SHOW TABLES;

  2. 查看表结构
    DESC 表名;

  3. 查看创建表的SQL语句
    SHOW CREATE TABLE 表名;

具体操作:

  • 查看 mysql 数据库中的所有表

    SHOW TABLES;
    

    在这里插入图片描述

  • 查看 student 表的结构

    DESC student;
    

在这里插入图片描述

  • 查看 student 的创建表SQL语句
    SHOW CREATE TABLE student;
    

在这里插入图片描述

3.3.2.3 快速创建一个表结构相同的表

CREATE TABLE 新表名 LIKE 旧表名;

具体操作:

  • 创建s1表,s1表结构和 student 表结构相同
    CREATE TABLE s1 LIKE student;
    

在这里插入图片描述

3.3.2.4 删除表

直接删除表
DROP TABLE 表名;

具体操作:

  • 直接删除表s1表
    DROP TABLE s1;
    

在这里插入图片描述

3.3.2.5 修改表结构

  1. 添加表列
    ALTER TABLE 表名 ADD 列名 类型;

    具体操作:

    • 为学生表添加一个新的字段 remark,类型为 varchar(20)
      ALTER TABLE student ADD remark VARCHAR(20);
      

    在这里插入图片描述

  2. 修改列类型
    ALTER TABLE 表名 MODIFY 列名 新的类型;
    具体操作:

    • student 表中的 remark 字段的改成 varchar(100)
      ALTER TABLE student MODIFY remark VARCHAR(100);
      
      在这里插入图片描述
  3. 修改列名
    ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
    具体操作:

    • student 表中的 remark 字段名改成 intro,类型 varchar(30)
      ALTER TABLE student CHANGE remark intro varchar(30);
      
      在这里插入图片描述
  4. 删除列
    ALTER TABLE 表名 DROP 列名;
    具体操作:

    • 删除 student 表中的字段 intro
      ALTER TABLE student DROP intro;
      

    在这里插入图片描述

  5. 修改表名
    RENAME TABLE 表名 TO 新表名;
    具体操作:

    • 将学生表 student 改名成 student2
       RENAME TABLE student TO student2;
      
      在这里插入图片描述
  6. 修改字符集
    ALTER TABLE 表名 character set 字符集;

    具体操作:

    • sutden2 表的编码修改成 gbk
      ALTER TABLE student2 character set gbk;
      
      在这里插入图片描述

3.4 DML语句

3.4.1 插入记录

3.4.1.1 插入全部字段

  • 所有的字段名都写出来
    INSERT INTO 表名 (字段名 1, 字段名2, 字段名3…) VALUES (值1, 值2, 值3);
  • 不写字段名
    INSERT INTO 表名 VALUES (值1, 值2, 值3…);

3.4.1.2 插入部分数据

INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
没有添加数据的字段会使用NULL

  1. 关键字说明

    INSERT INTO 表名 – 表示往哪张表中添加数据
    (字段名1, 字段名2,)  --  要给哪些字段设置值
    VALUES (1,2,); -- 设置具体的值
    
  2. 注意:

    • 值与字段必须对应,位置相同,类型相同
    • 值的数据大小必须在字段的长度范围内 varchar()
    • 除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
    • 如果要插入空值,可以不写字段,或者插入null
  3. 具体操作:

    • 插入部分数据,往学生表中添加 id,name,age,sex 数据
    INSERT INTO student (id, NAME, age, sex) VALUES (1, '张三', 20, '男');
    

在这里插入图片描述

  • 向表中插入所有字段
    • 所有的字段名都写出来
     INSERT INTO student (NAME, id, age, sex, address) VALUES ('李四', 2, 23, '女', '广州');
    

在这里插入图片描述

  • 不写字段名
    INSERT INTO student VALUES (3, '王五', 18, '男', '北京');
    

在这里插入图片描述

3.4.1.4 蠕虫复制

  • 什么是蠕虫复制: 在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中
  • 语法格式: INSERT INTO 表名1 SELECT * FROM 表名2;
  • 作用:表名2中的数据复制到表名1

具体操作:

  • 创建 student 表,student 结构和 student2 表结构一样
CREATE TABLE student LIKE student2;
  • student2 表中的数据添加到 student 表中
INSERT INTO student SELECT * FROM student2;

注意: 如果只想复制student表中name,age字段数据到student2表中使用如下格式:

INSERT INTO student2(NAME, age) SELECT NAME, age FROM student;

在这里插入图片描述

3.4.2 更新表记录

  1. 不带条件修改数据
    UPDATE 表名 SET 字段名=值;

  2. 带条件修改数据
    UPDATE 表名 SET 字段名=值 WHERE 字段名=值;

  3. 关键字说明

    UPDATE: 修改数据
    SET: 修改哪些字段
    WHERE: 指定条件
    
  4. 具体操作:

    • 不带条件修改数据,将所有的性别改成女
      UPDATE student SET sex='女';
      

在这里插入图片描述

  • 带条件修改数据,将 id 号为 2 的学生性别改成男
    UPDATE student SET sex='男' WHERE id=2;
    

在这里插入图片描述

  • 一次修改多个列,把 id3 的学生,年龄改成 26 岁,address 改成北京
    UPDATE student SET age=26, address='北京' WHERE id=3;
    

在这里插入图片描述

3.4.3 删除表记录

  1. 不带条件删除数据
    DELETE FROM 表名;

  2. 带条件删除数据
    DELETE FROM 表名 WHERE 字段名=值;

  3. truncate删除表记录
    TRUNCATE TABLE 表名;

注意:

  • truncate和delete的区别:
    • delete 是将表中的数据一条一条删除
    • truncate 是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样
    在这里插入图片描述
  1. 具体操作:
    • 带条件删除数据,删除id为3的记录

      DELETE FROM student WHERE id=3;
      

      在这里插入图片描述

    • 不带条件删除数据,删除表中的所有数据

      DELETE FROM student;
      
    在这里插入图片描述

3.5 DQL

  • 查询不会对数据库中的数据进行修改,只是一种显示数据的方式。

3.5.1 简单查询

3.5.1.1 查询表所有数据

  1. 使用 * 表示所有列
    SELECT * FROM 表名;
    具体操作:

    SELECT * FROM student;
    

在这里插入图片描述

  1. 写出查询每列的名称
    SELECT 字段名1, 字段名2, 字段名3, ... FROM 表名;
    具体操作:

    SELECT id, NAME ,age, sex, address FROM student;
    

    在这里插入图片描述

3.5.1.2 查询指定列

查询指定列的数据,多个列之间以逗号分隔
SELECT 字段名1, 字段名2... FROM 表名;

具体操作:

  • 查询student表中的name 和 age 列
SELECT NAME, age FROM student;

在这里插入图片描述

3.5.1.3 别名查询

  1. 查询时给列、表指定别名需要使用AS关键字

  2. 使用别名的好处是方便观看和处理查询到的数据
    SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名;
    SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名 AS 表别名;

    注意:

    • 查询给表取别名目前还看不到效果,需要到多表查询的时候才能体现出好处
    • AS关键字可以省略
  3. 具体操作:

    • 查询 sudent 表中 nameage 列,name 列的别名为”姓名”,age 列的别名为”年龄”
    SELECT NAME AS '姓名', age AS '年龄' FROM student;
    

在这里插入图片描述

  • 查询 sudent 表中 nameage 列,student 表别名为 s
SELECT NAME, age FROM student AS s;

在这里插入图片描述
查询给表取别名目前还看不到效果,需要到多表查询的时候才能体现出好处

3.5.1.4 清除重复值

  1. 查询指定列并且结果不出现重复数据
    SELECT DISTINCT 字段名 FROM 表名;
  2. 具体操作:
    • 查询 name,age 列并且结果不出现重复
    SELECT DISTINCT NAME, age FROM student;
    

3.5.1.5 查询结果参与运算

  1. 某列数据和固定值运算

  2. SELECT 列名1 + 固定值 FROM 表名;

  3. 某列数据和其他列数据参与运算
    SELECT 列名1 + 列名2 FROM 表名;

    注意: 参与运算的必须是数值类型

  4. 需求:

    • 添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩
    • 查询的时候将数学和英语的成绩相加
  5. 实现:

  • 修改 student 表结构,添加数学和英语成绩列

    ALTER TABLE student ADD math INT;
    ALTER TABLE student ADD english INT;
    
  • 给每条记录添加对应的数学和英语成绩
    在这里插入图片描述

  • 查询 math + english 的和

    SELECT math + english FROM student;
    

在这里插入图片描述

  • 结果: 确实将每条记录的 mathenglish 相加,但是效果不好看

  • 查询 math + english 的和使用别名”总成绩”

    SELECT math + english '总成绩' FROM student;
    

在这里插入图片描述

  • 查询所有列与 math + english 的和并使用别名——总成绩
    SELECT *, math + english '总成绩' FROM student;
    

在这里插入图片描述

  • 查询姓名、年龄,将每个人的年龄增加10岁
    SELECT name, age + 10 FROM student;
    

在这里插入图片描述

以上是关于MySQL从入门到精通:基本语法介绍与使用_01的主要内容,如果未能解决你的问题,请参考以下文章

Android NDK 从入门到精通

网络安全从入门到精通 (第二章-2) 后端基础SQL—MySQL数据库简介及SQL语法

vuejs2从入门到精通视频教程

《PPT设计从入门到精通》pdf下载在线阅读,求百度网盘云资源

Python基础知识详解 从入门到精通类与对象

MySQL从入门到精通50讲(三十二)-ScyllaDB生产环境集群搭建