• MySQL 基础语法


    数据库概述

    数据的存储方式:

    在 Java 中创建对象: Student s = new Student(1, "张三"),此时 该对象存储在内存中
    学习了 I/O 流之后,能把数据保存到文件中

    存储位置 优点 缺点
    内存 速度快 不能永久保存,数据是临时的状态
    文件 数据可以永久保存 操作数据不方便,难以单独查询某个数据
    数据库

    数据可以永久保存

    查询速度快

    对数据的管理更加便捷

    占用资源高,需要购买相关软件

    什么是数据库

    # 存储和管理数据的仓库,英文单词:DataBase,简称:DB

    # 本质上是一个文件系统,因此依旧是一文件的方式存放在服务器的电脑上的

    # 所有的关系型数据库基本都可以使用通用的 SQL 语句进行管理

     常见的数据库介绍

    # MySQL:开源免费的数据库,小型的数据库,已经被 Oracle 收购了,MySql 6.x 版本也开始收费

    # Oracle:收费的大型数据库,Oracle 公司产品

    # DB2:IBM 公司的数据库产品,收费的,长应用在银行系统中

    # SQL Server:Microsoft 公司的中型收费的数据库,C#、.net 等语言长使用

    # SQLite:嵌入式的小型数据库,一般应用在手机端,如 Android

    数据库的安装与卸载

    安装过程分为两个部分:

    # 文件的解压和复制过程,默认的安装目录为:C:Program FilesMySQLMySQL Server 版本号

    # 安装好后必须对 MySQL 服务器进行配置,在 MySQL中管理员的名字为 root

    数据库的安装

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

     2、选择安装类型,有 typical(默认)、complete(完全)、custom(自定义)三个选项,这里选择 custom,按 next 键继续

     

     3、点击 Browse,手动指定安装目录

     4、确认先前的设置如果有误,就按 back 返回重做,随后一路next 和 install

     5、安装完成后,对数据库进行配置

     6、选择配置方式,Detailed Configuration(手动精确配置),Standard Configuration(标准配置),我们选择 手动配置,方便熟悉配置过程

     7、选择服务器类型,Developer Machine(开发测试类,mysql 只占用很少的资源)、Server Machine(服务器类型,mysql 占用较多的资源)、Dedicated MySQL Server Machine(专门的数据库服务器,mysql 占用了所有可用资源) 

     8、选择 MySQL数据库的大致用途,Mutifunctional Database(通用的多功能型)、Transactional Database Only(服务器类型,专注于事务的处理)、Non-Transactional Database Only(非事务型处理,主要用作监控和计数,对 MyISAM 数据类型的支持仅限于 non-transactional)

     

     9、选择网站并发连接数,同时连接的数目,Decision Support(DSS)/OLAP(20个左右)、Online Transaction Processing(OLTP)(500个左右)、Manual Setting(手动设置,自己输一个数)

     10、是否启用 TCP/IP 连接,设定端口,如果不启用,就只能在自己的机器上访问 MySQL数据库了,在该页面上还可以选择 启用标准模式 Enable Strict Mode,这样 MySQL就不会允许细小的语法错误。如果是新手,间以取消标准模式以减少麻烦,但熟练 MySQL后,尽量使用标准模式,因为这可以降低有害数据进入数据库的可能性。

    11、对 MySQL默认数据库语言编码进行设置(很重要),一般选择 utf8

    12、选择是否将 MySQL 安装为 Windows服务,还可以指定 Service Name(服务标识名称),是否将 mysql 的 bin 目录加入到 Windows PATH 中(加入后,就可以直接使用 bin 下的文件,而不用指出目录名,比如连接, “mysql.exe -uusername -ppassword;”就可以了,不用指出 mysql.exe 的完整地址,很方便)

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

     14、确认设置无误后,按“Execute”使设置生效,即完成 MySQL的安装和配置

     

     注意:设置完毕,按“Finish”后有一个比较常见的错误,就是不能“Start service”,一般出现在以前有安装 mysql 的服务器上,解决的办法,先保证以前安装的 mysql 服务器彻底卸载掉了;不行的话,检查是否按上面一步所说, 之前的密码是否有修改,照上面的操作;如果依然不行,将 mysql 安装目录下的 data 文件夹备份,然后删除,在 安装完成后,将安装生成的 data 文件夹删除,备份的 data 文件夹移回来,再重启 mysql 服务就可以了,这种情况 下,可能需要将数据库检查一下,然后修复一次,防止数据出错。

     数据库的卸载

    1、停止 Windows 的 MySQL服务,找到 “控制面板” -> “管理工具” -> “服务”,然后停止 MySQL后台服务(win10)

    2、卸载 MySQL安装程序,win + s 搜索 “卸载程序”,搜索 “mysql”,卸载MySQL

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

    4、删除 C 盘下的 ProgramData 目录下的 MySQL目录,路径为:C:ProgramDataMySQL(是隐藏文件)

    数据库服务的启动与登录

    数据库服务的启动

    # Windows 服务方式启动:找到 “控制面板” -> “管理工具” -> “服务”,然后开启 MySQL后台服务。
      * 或在cmd 下输入 services.msc,打开服务面板

    # DOS命令方式启动:以管理员身份运行 命令提示符 或 Power Shell,输入 net start mysql

    数据库的连接

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

    # 语法格式1:mysql -u用户名 -p密码(此时密码为明文显示)

     # 语法格式2:mysql -u用户名 -p
      * 回车之后再输入密码,此时密码为 掩码形式

     # 语法格式3:mysql -hip -u用户名 -p密码
      * 127.0.0.1 代表本机 IP

     # 语法格式4:mysql --host=ip --user=用户名 --password=密码

     # 退出 MySQL:
      * quit 或 exit 或 ctrl + C键

    SQLyog 图形化工具连接数据库

    # 简介:SQLyog 是业界著名的 Webyog 公司出品的一款简洁高效、功能强大的图形化 MySQL 数据库管理工具,使用 SQLyog 可以快速直观的让使用者从世界的任何角落通过网络来维护远端的 MySQL 数据库

    # 使用 SQLyog 登录数据库

     MySQL 目录结构

     MySQL 的目录结构  描述
     bin<目录>  所有的 mysql 的可执行文件,如:mysql.exe
     MySQLInstanceConfig.exe  数据库的配置向导,在安装时出现的内容
     data<目录>  存放数据库的日志文件
     my.ini 文件  mysql 的配置文件,一般不建议去修改
     C:ProgramDataMySQLSySQL Server 5.5data  我们自己创建的数据库所在的文件夹

    数据库管理系统

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

    # 数据库管理程序(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体 User 的数据。

      * 数据库管理系统、数据库和表的关系如图所示:

     SQL 的概念

    # Structured Query Language 结构化查询语言

    SQL 的作用

    # 是一种所有关系型数据库的查询规范,不同的数据库都支持

    # 通用的数据库操作语言,可以用在不同的数据库中

    # 不同的数据库SQL 语言有一些区别

     SQL 语句分类

    # Data Definition Language(DDL 数据定义语言)
      * 用来定义数据库对象:数据库、表、列等。关键字:CREATE、DROP、ALTER 等

    # Data Manipulation Language(DML 数据操纵语言)
      * 用来对数据库中表的数据进行增删改。关键字:INSERT、DELETE、UPDATE 等

    # Data Query Language(DQL 数据查询语言)
      * 用来查询数据库中表的记录。关键字:SELECT、WHERE 等

    # Data Control Language(DCL 数据控制语言)
      * 用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT、REVOKE 等

    MySQL 的语法

    # SQL语句可以单行或多行书写,每条语句以分号结尾,如果在 SQLyog中不是必须加的

    # SQL 中不区分大小写,关键字中认为 大写和小写是一样的

    # 3种注释方式

    注释的语法 说明
    -- 空格 单行注释
    /*  */ 多行注释
    单行注释,MySQL 特有

    DDL 操作数据库

    # 操作数据库(CRUD)
      * C(Create):创建
      * R(Retrieve):查询
      * U(Update):修改
      * D(Delete):删除

    创建数据库

    # 创建数据库的语法:
      * CREATE DATABASE 数据库名; (创建数据库)
      * CREATE DATABASE IF NOT EXISTS 数据库名; (判断数据库是否已经存在,不存在则创建数据库)
      * CREATE DATABASE 数据库名 CHARACTER SET 字符集; (创建数据库并指定字符集)

    # 具体操作

     查看数据库

    # 语法:
      * SHOW DATABASES; (在 SQLyog 中按 tab 键可以自动补全关键字)

    # 查看某个数据库的创建语句:
      * SHOW CREATE DATABASE 数据库名;

     修改数据库

    # 修改数据库默认的字符集
      * 语法:
        ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
      * 具体操作
        将 db3 数据库的字符集改为 utf8

     删除数据库

    # 语法:
      * DROP DATABASE 数据库名;

    # 具体操作:
      * 删除 db2 数据库(每行 SQL 语句需要选中再执行,可以按 F9)

     使用数据库

    # 查看正在使用的数据库
      * 语法:SELECT DATABASE();  -- 使用的一个 mysql 中的全局函数

    # 使用 / 切换数据库
      * 语法:USE 数据库名;

    # 具体操作:

     面试题

    # 问:在 MySQL 数据库软件中,有如下三个数据库:test1,test2,test3;登录数据库后,输入语句:select database test2; 运行结果是什么?

    # 答:这是一条错误的语句,如果要选中一个数据库,应使用 USE test2;

    DDL 操作表结构

    创建表

    # 创建表的格式:
      * CREATE TABLE 表名 (
         字段名1  字段类型1,
         字段名2  字段类型2
        );
      * 注意:最后一列不需要加逗号

    # 关键字说明:
      * CREATE:创建
      * TABLE:表

    # 复制表
      * CREATE TABLE 表名 LIKE 被复制的表名;

    MySQL 数据类型

    # 常用类型

    类型  描述
    int 整型
    double 浮点型( m, n )  m:小数一共几位   n:小数点后保留几位
    varchar 字符串型( m )   m:最多能存储几个字符
    date 日期类型,格式为 yyyy-MM-dd,只有年月日,没有时分秒

    # 详细数据类型

     分类 类型名称 类型说明
     整数 tinyInt 微整型:很小的整数(占8位二进制位)
    smallInt 小整形:小的整数(占16位二进制)
    mediumInt 中整型:中等长度的整数(占24位二进制)
    int(integer) 整型:整数类型(占32位二进制)
     小数 float 单精度浮点型,占4个字节
    double 双精度浮点型,占8个字节
     日期 time 表示时间类型
    date 表示日期类型
    datetime 同时可以表示日期和时间类型
    timestamp 时间戳类型,如果将来不给这个字段赋值则默认使用当前的系统时间来自动赋值
     字符串 char(m) 固定长度的字符串,无论使用几个字符都占满全部,M 为0~255 之间的整数
    varchar(m) 可变长度的字符串,使用几个字符就占用几个,M 为0~65535之间的整数
     大二进制 tinyblob 允许长度为 0~255字节
    blob 允许长度为 0~65535字节
    mediumblob 允许长度为 0~167772150字节
    longblob 允许长度为 0~4294967295字节
     大文本 tinytext 允许长度为 0~255字节
    text 允许长度为 0~65535字节
    mediumtext 允许长度为 0~167772150字节
    longtext 允许长度为 0~4294967295字节

    # 具体操作:
      * 创建 student 表包含 id,name,birthday 字段

     查看表

    # 查看某个数据库中的所有表
      * SHOW TABLES;

    # 查看表的结构
      * DESC 表名;

    # 查看创建表的 SQL 语句
      * SHOW CREATE TABLE 表名;

    # 具体操作:
      * 查看 day21 数据库中的所有表

       * 查看 student 表的结构

       * 查看 student 的创建表 SQL 语句

         结果:( ‘ 号存在的目的是为了避免关键字的冲突)

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

    # 语法
      * CREATE TABLE 新表名 LIKE 旧表名;

    # 具体操作:
      * 创建 s1 表,s1 表结构和 student 表结构相同

     删除表

    # 直接删除表
      * DROP TABLE 表名;

    # 判断是否存在,如果存在,就删除表
      * DROP TABLE IF EXISTS 表名;

    # 具体操作:

     修改表结构

    # 添加表列 ADD
      * ALTER TABLE 表名 ADD 列名 类型;

     # 修改列类型 MODIFY
      * ALTER TABLE 表名 MODIFY 列名 新的类型;

     # 修改列名 CHANGE
      * ALTER TABLE 表明 CHANGE 旧列名 新列名 类型;

     # 删除列 DROP
      * ALTER TABLE 表名 DROP 列名;

     # 修改表名
      * RENAME TABLE 表名 TO 新表名;

     # 修改表的字符集 character set
      * ALTER TABLE 表名 character set 字符集;

     DML 操作表中的数据

    插入记录

    # 格式:

     # 插入全部字段
      * 所有的字段名都写出来

       * 不写字段名

     # 插入部分数据(没有添加数据的字段会自动置为 NULL)

     # 具体操作(除了数字类型,别的都需要用引号包围)
      * 向学生表中插入所有的列

       * 向表中插入所有字段

     DOS 命令窗口操作数据乱码问题的解决

    # 当我们使用 DOS命令行进行 SQL语句操作时会有中文出现乱码

     # insert 注意事项:
      * 插入的数据应与字段的数据类型相同
      * 数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中
      * 在values中列出的数据位置必须与被加入的列的排列位置相对应
      * 字符和日期型数据应包含在单引号中,MySQL中也可以使用双引号作为分隔符
      * 不指定列或者使用 NULL,表示插入空值

    # 乱码产生的原因

     # 查看 MySQL 内部设置的编码
      * 查看包含 character 开头的全局变量
        show variables like 'character%';
      * 执行效果

     # 解决方案
      * 修改 client、connection、results 的编码为 GBK,保证和 DOS命令行编码保持一致

     # 注意,退出 DOS 命令行就失效了,需要每次都配置

     蠕虫复制

    # 定义:将一张已经存在的表中的数据复制到另一张表中

    # 语法格式:
      * 将表2 中的所有的列复制到表1中

       * 只复制部分列

     # 具体操作
      * 创建 student2 表,其结构和 student表一样

     更新表记录

     # 不带条件修改数据(修改所有记录在该列上的值)

     # 带条件修改数据

     # 具体操作

     删除表记录

     # 不带条件删除数据(删除表中所有的记录)

     # 带条件删除数据

     # 使用 truncate 删除表中的所有记录

       * 注意,truncate 和 delete 的区别:truncate 相当于删除表的结构,再创建一张表;而 delete 是逐条记录删除,效率低。

    # 具体操作

    DQL 查询表中的数据

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

     简单查询

    # 查询表中所有行和列的数据(使用 * 表示所有的列)

     # 查询指定列

     使用指定列的别名进行查询

    # 使用关键字 AS
      * 好处:显示的时候使用新的名字,并不修改表的结构

    # 语法
      * 对列指定别名
         SELECT 字段名1 AS 别名1, 字段名2 AS 别名2 ... FROM 表名;
      * 对列和表同时指定别名
       SELECT 字段名1 AS 别名1, 字段名2 AS 别名2 ... FROM 表名 AS 表别名;

    # 具体操作(使用表别名的原因:用于多表查询操作)

     清除重复值

    # 查询指定列并且结果不出现重复数据
      * SELECT DISTINCT 字段名 FROM 表名;

    # 具体操作:
      * 查询学生来自哪些地方

     查询结果参与运算

    # 某列数据和固定值运算
      * SELECE 列名1 + 固定值 FROM 表名;

    # 某列数据和其他列数据参与运算
      * SELECT 列名1 + 列名2 FROM 表名;
      * 注意:参与运算的必须是数值类型

    # 具体实现:
      * 准备数据,添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩,查询的时候将数学和英语的成绩相加

     条件查询

    # 为什么要条件查询
      * 如果没有查询条件,则每次查询所有的行。实际应用中,一般要指定查询的条件,对记录进行过滤

    # 条件查询的语法
      * SELECT 字段名 FROM 表名 WHERE 条件;
      * 流程:取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回

    # 数据准备
      * 创建一个学生表,包含如下列:

     # 运算符

     # 具体操作

     # 逻辑运算符

     # 具体操作

     # in 关键字
      * SELECT 字段名 FROM 表名 WHERE 字段 IN(数据1,数据2 ... );
      * 注意:in 里面的每个数据都会作为一次条件,只要满足条件的就会显示

    # 具体操作

     # 范围查询
      * BETWEEN 值1 AND 值2
      * 注意:表示从 值1 到 值2,包含头和尾

    # 具体操作
      * 查询 English 成绩大于等于75,且小于等于90 的学生

     # like 关键字
      * SELECT 字段名 FROM 表名 WHERE 字段名 LIKE ‘通配符字符串’;

    # MySQL 通配符

     # 具体操作

  • 相关阅读:
    简单验证码生成
    java编译器不匹配问题(java compiler level does not match the version of the installed java project facet)
    jQuery中$.fn
    ThreadLocal是什么?
    xmind 快捷键
    powerdesigner 连接oracle
    vs2019 System.FormatException:“Could not parse the JSON file.”
    svn常见操作
    sqlserve报错处理“数据类型 text 和 varchar 在 equal to 运算符中不兼容”
    数据库随机数据
  • 原文地址:https://www.cnblogs.com/zhaochuming/p/13391671.html
Copyright © 2020-2023  润新知