MySQL入门教程

本文最后更新于:1 个月前

MySQL的入门教程总结

前言

总结MySQL的一些概念,命令以实现不同的功能

MySQL服务的启动、停止和卸载

在cmd下运行:

  • 启动:

    1
    net start MySQL
  • 停止:

    1
    net stop MySQL
  • 卸载:

    1
    sc delete MySQL

MySQL脚本的基本组成

与常规的脚本语言类似, MySQL 也具有一套对字符、单词以及特殊符号的使用规定, MySQL 通过执行 SQL 脚本来完成对数据库的操作, 该脚本由一条或多条MySQL语句(SQL语句 + 扩展语句)组成, 保存时脚本文件后缀名一般为 .sql。在控制台下, MySQL 客户端也可以对语句进行单句的执行而不用保存为.sql文件。

标识符

标识符用来命名一些对象, 如数据库、表、列、变量等, 以便在脚本中的其他地方引用。MySQL标识符命名规则稍微有点繁琐, 这里我们使用万能命名规则: 标识符由字母、数字或下划线(_)组成, 且第一个字符必须是字母或下划线。

对于标识符是否区分大小写取决于当前的操作系统, Windows下是不敏感的, 但对于大多数 linux\unix 系统来说, 这些标识符大小写是敏感的。

关键字

MySQL的关键字众多, 这里不一一列出, 在学习中学习。 这些关键字有自己特定的含义, 尽量避免作为标识符。

语句

MySQL语句是组成MySQL脚本的基本单位, 每条语句能完成特定的操作, 他是由 SQL 标准语句 + MySQL 扩展语句组成。

函数

MySQL函数用来实现数据库操作的一些高级功能, 这些函数大致分为以下几类: 字符串函数、数学函数、日期时间函数、搜索函数、加密函数、信息函数。

MySQL中的数据类型

MySQL有三大类数据类型, 分别为数字、日期和时间、字符串

数据类型

  • 数字

    • 整型:tinyint、smallint、mediumint、int、bigint

      MySQL数据类型 含义(有符号)
      tinyint(m) 1个字节 范围(-128~127)
      smallint(m) 2个字节 范围(-32768~32767)
      mediumint(m) 3个字节 范围(-8388608~8388607)
      int(m) 4个字节 范围(-2147483648~2147483647)
      bigint(m) 8个字节 范围(+-9.22*10的18次方)
    • 浮点数:float、double、real、decimal

      MySQL数据类型 含义
      float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位
      double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小数位
      decimal(m,d) 精确值 m总个数,d小数位 (m < 65, d < 30)
  • 日期和时间: date、time、datetime、timestamp、year

    MySQL数据类型 含义
    date 日期 ‘2021-8-3’
    time 时间 ‘11:19:36’
    datetime 日期时间 ‘2021-8-3 11:19:36
    timestamp 自动存储记录修改时间
    year 年份 ‘2021’
  • 字符串

    • 字符串:char、varchar

    • 文本: tinytext、text、mediumtext、longtext

      MySQL数据类型 含义
      char(n) 固定长度,最多255个字符
      varchar(n) 固定长度,最多65535个字符
      tinytext 可变长度,最多255个字符
      text 可变长度,最多65535个字符
      mediumtext 可变长度,最多2的24次方-1个字符
      longtext 可变长度,最多2的32次方-1个字符
    • 二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob

数据类型属性

MySQL关键字 含义
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
DEFAULT 默认值
PRIMARY KEY 主键
AUTO_INCREMENT 自动递增,适用于整数类型
UNSIGNED 无符号
CHARACTER SET name 指定一个字符集

MySQL数据库的使用

登录MySQL

在cmd中输入:

1
mysql -h 主机名 -u 用户名 -p
  • -h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略;
  • -u : 所要登录的用户名;
  • -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。

登录本机的MySQL数据库只需要输入:

1
mysql -u root -p

按回车确认,操作正确会出现如下代码:

1
Enter password:

输入密码即可登录

数据库操作

  • 创建数据库

    1
    create database 数据库名 [其他选项];

    例如我们要创建一个名为school的数据库,输入以下命令:

    1
    create database school character set utf8;

    这里在创建的同时也将字符集设为utf-8

  • 查看数据库

    1
    show databases;
  • 选择数据库

    • 登录时选择

      1
      mysql -D 所选择的数据库名 -h 主机名 -u 用户名 -p

      例如:

      1
      mysql -D school -u root -p
    • 登录后选择

      1
      use 数据库名;

      例如:

      1
      use school
  • 创建数据库表

    1
    create table 表名称(列声明);

    以创建students表为例:

    1
    2
    3
    4
    5
    6
    7
    8
    create table students

    id int unsigned not null auto_increment primary key,
    name char(8) not null,
    sex char(4) not null,
    age tinyint unsigned not null,
    tel char(13) null default "-"
    );

    为了防止输入出错可以使用任何文本编辑器输入这段文本然后保存为 createtable.sql 的文件中,使用命令行的文件重定向执行:

    1
    mysql -D school -u root -p < createtable.sql

    若连接远程主机需加上-h

    若 createtable.sql 不在当前工作目录下需指定路径

    解释

    ​ 括号内语句声明了5列,分别是 id、name、sex、age、tel,以 id int unsigned not null auto_increment primary key 介绍

    ​ id int unsigned not null auto_increment primary key

    • id 即列名
    • int 指定该列的数据类型
    • not null 说明该列不为空
    • auto_increment 需要在整数列使用,其作用是在插入数据时若该列为 NULL,MySQL将自动产生一个比现存值更大的唯一标识符值。在每张表中仅能有一个这样的值且所在列必须为索引列。
    • primary key 说明该列为主键,值唯一,MySQL自动索引该列
  • 查看数据库表

    查看已创建的表:

    1
    show tables;

    查看表的详细信息:

    1
    describe 表名; 
  • 向表中插入数据

    1
    insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);

    例如:

    1
    insert into students values(NULL, "小明", "男", 20, "13811371377");

    插入部分数据或不按列的顺序进行插入:

    1
    insert into students (name, sex, age) values("小红", "女", 21);
  • 查询表中数据

    1
    select 列名称 from 表名称 [查询条件];

    例如:

    1
    select name, age from students; 

    或者使用通配符 * ,查询所有数据:

    1
    select * from students;

    特定内容查询:

    1
    2
    3
    select * from students where age > 21; // 查询年龄在21岁以上的所有人信息
    select * from students where name like "%王%"; // 查询名字中带有 "王" 字的所有人信息
    select * from students where id<5 and age>20; // 查询id小于5且年龄大于20的所有人信息
  • 更新表中数据

    1
    update 表名称 set 列名称=新值 where 更新条件;

    例如:

    1
    2
    3
    update students set tel=default where id=5; // 将id为5的手机号改为默认的"-"
    update students set age=age+1; // 将所有人的年龄增加1
    update students set name="小张", age=19 where tel="13288097888"; // 将手机号为 13288097888 的姓名改为 "小张", 年龄改为 19
  • 删除表中数据

    1
    delete from 表名称 where 删除条件;

    例如:

    1
    2
    3
    delete from students where id=2; // 删除id为2的行
    delete from students where age<20; // 删除所有年龄小于21岁的数据
    delete from students; // 删除表中的所有数据
  • 创建表后的修改

    • 添加列

      1
      alter table 表名 add 列名 列数据类型 [after 插入位置];

      例如:

      1
      2
      alter table students add address char(60); // 在表的最后追加列 address
      alter table students add birthday date after age; // 在名为 age 的列后插入列 birthday
    • 修改列

      1
      alter table 表名 change 列名称 列新名称 新数据类型;

      例如:

      1
      2
      alter table students change tel telphone char(13) default "-"; // 将表 tel 列改名为 telphone
      alter table students change name name char(16) not null; // 将 name 列的数据类型改为 char(16)
    • 删除列:

      1
      alter table 表名 drop 列名称;

      例如:

      1
      alter table students drop birthday; // 删除 birthday 列
    • 重命名表:

      1
      alter table 表名 rename 新表名;

      例如:

      1
      alter table students rename workmates; // 重命名 students 表为 workmates
    • 删除表:

      1
      drop table 表名;

      例如:

      1
      drop table workmates; // 删除 workmates 表
    • 删除数据库:

      1
      drop database 数据库名;

      例如:

      1
      drop database school;

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!