Windows平台下MySQL的安装和基本命令行使用

一,MySQL介绍

MySQL(官方发音是“My es-kew-el”,但很多人都说成“My Sequel”)是目前最受欢迎 的开源关系型数据库管理系统。一个开源项目具有如此之竞争力实在是令人意外,它的流 行程度正在不断地接近另外两个闭源的商业数据库系统:微软的 SQL Server 和甲骨文的 Oracle 数据库(MySQL 在 2010 年被甲骨文收购)。
它的流行程度实在是名符其实。对大多数应用来说,MySQL 都是不二选择。它是一种 非常灵活、稳定、功能齐全的 DBMS,许多顶级的网站都在用它:YouTube1 、Twitter2 和 Facebook3 等。 因为它受众广泛,免费,开箱即用,所以它也是网络数据采集项目中常用的数据库,我们 将在本书后面的示例中使用它。
“关系型”数据库 ?
“关系型数据”就是有关联的数据。就是这么简单! 开个玩笑!当计算机科学家说起关系型数据时,他们指的是那些并非孤立的数据—— 它们的属性与其他的数据是有关联的。例如,“用户 A 在学校 B 上学”,这里用户 A 在数据库的“用户”表中,而学校 B 是在数据库的“学校”表中。

二,安装

mysql数据库安装(详细)
上面的链接是关于Windows平台安装MySQL的(转载至其他博客),非常简明,实力推荐,推荐使用里面的压缩包文件安装,这种方式成功率较高,不过值得注意的是安装目录路径必须是非中文,不然安装时就会对中文路径辨识错误,导致安装失败,另外,如果之前有安装过的,最好卸载干净之前的版本。

三,windows下命令行的使用

MySQL 服务器启动之后,有很多种方法可以与数据库交互。因为有很多工具是图形界面, 所以你不用 MySQL 的命令行(或者很少用命令行)也能管理数据库。像 phpMyAdmin 和 MySQL Workbench 这类工具都可以很容易地实现数据的查看、排序和新建等工作。navicat也是很方便很常用的,可以在这个图形化工具上轻松管理自己的数据库系统(不过由于某种原因,要激活或其他方式使用,有条件的话推荐用这个)。但是, 掌握命令行操作数据库依然是很重要的。
除了用户自定义变量名,MySQL 语句是不区分大小写的。例如,SELECT 和 sElEcT 是一样 的,不过习惯上写 MySQL 语句的时候所有的 MySQL 关键词都用大写。大多数开发者还 喜欢用小写字母表示数据表和数据库的名称,虽然这个标准经常不被注意。为了简便和简明,在本文章练习和示例时,语句都用小写,而这个习惯(小写字母表示数据表和数据库的名称,MySQL 关键词都用大写)希望能读者养成,本文仅供参考。
数据库类型资料:
在这里插入图片描述

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

基础用法及示例:

说明:下面是按不同类型操作(库,表)划分的,不要按照该顺序来练习,如果想完整正确地练习的话,得遵循基本步骤(先创建数据库,再创建表,修改表…)。另外该示例放在博客特殊的代码片里,会呈现颜色高亮,不要误会,请根据缩写的命令操作去阅读就行。一这些都是基本和常见的操作步骤,如果想要更加精深地学习数据库操作,那么就要阅读更加深度的资料和文章,另外本文拓展里也有一些比较好的好文链接,值得一看!

#MySQL语句及其规范
#<1> 在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。建议命令大写,表名库名小写;
#<2> SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。
#<3> 用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。
#<4> 注释:单行注释:--      多行注释:/*......*/


#登入数据库;
C:\Users\zhouz>mysql -u root -p#添加环境变量后,可直接输入,
Enter password: ******#输入密码,输入完成时都不会有显示,只显示*;
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 33
Server version: 8.0.25 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.#出现该部分内容,证明登入成功;


#一般第一次使用时,自己创建的数据库为空,要创建一下;
#创建数据库方法:create database <数据库名>;
mysql> create database school;
Query OK, 1 row affected (0.01 sec)

#查看所有的数据库
#方法:show databases;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| school             |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

#查看某一个数据库;
#方法:show create database <库名>;
mysql> show create database school;
+----------+----------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                    |
+----------+----------------------------------------------------------------------------------------------------+
| school   | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

#删除某个数据库;
#方法:drop database <库名>;
mysql> drop database a;
Query OK, 0 rows affected (0.03 sec)

#创建后,一定要选择所要的数据库,否则创建不了表
#使用方法:use <数据库名>
mysql> use school;
Database changed

#如果不知道当前使用的数据库名,可以这样;
#方法:select database();
mysql> select database();
+------------+
| database() |
+------------+
| school     |
+------------+
1 row in set (0.00 sec)

#创建表:一张表必须属于一个库,一定要选择所要写入的数据库;

#如果直接创建,会出现该错误提示:
mysql> create table class;
ERROR 4028 (HY000): A table must have at least one visible column.
#这是因为和数据库不同,MySQL数据表必须至少有一列,否则不能创建。并且应先创建表并同时定义表字段(数据列);

#定义表中字段:字段名 类型 (宽度) 约束条件,
#同一张表中,字段名不能相同,不同字段有逗号分隔,同一字段设置条件用空格分隔;
#字段名和类型必须有宽度和约束条件为可选项
#方法:create table <表名>(字段1 类型 约束条件,字段2类型 约束条件,字段3类型 约束条件)
mysql> create table university(
    -> id bigint(7) not null auto_increment,
    -> title varchar(1000),
    -> content varchar(1000),
    -> createtime timestamp default current_timestamp,
    ->  primary key (id)
    ->  );
Query OK, 0 rows affected, 1 warning (0.04 sec)

#写入表信息
#方法:
mysql> insert into university(title,content)
    -> values("Tinghua University","engineering course"),
    -> ("Beparking University","comprehensive course");
Query OK, 2 rows affected (0.01 sec)
Records: 2  Duplicates: 0  Warnings: 0

#查看库中所有表;
#方法:show tables;
mysql> show tables;
+------------------+
| Tables_in_school |
+------------------+
| pages            |
| university       |
+------------------+
2 rows in set (0.00 sec)

#查看库中某一个表;
#方法:show create table <表名>;
mysql> show create table university;
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table      | Create Table                                                                                                                                                                                                                                                                            |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| university | CREATE TABLE `university` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `title` varchar(1000) DEFAULT NULL,
  `content` varchar(1000) DEFAULT NULL,
  `createtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)


#查看表结构
#方法:describe <表名>;
mysql> describe university;
+------------+---------------+------+-----+-------------------+-------------------+
| Field      | Type          | Null | Key | Default           | Extra             |
+------------+---------------+------+-----+-------------------+-------------------+
| id         | bigint        | NO   | PRI | NULL              | auto_increment    |
| title      | varchar(200)  | YES  |     | NULL              |                   |
| content    | varchar(1000) | YES  |     | NULL              |                   |
| createtime | timestamp     | YES  |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+------------+---------------+------+-----+-------------------+-------------------+
4 rows in set (0.02 sec)

#修改表名;
#方法:rename table <旧表名> to <新表名>;
mysql> rename table pages to scraping;
Query OK, 0 rows affected (0.03 sec)

#设置表字符格式
#方法:alter table <表名> character set utf8;
mysql> alter table scraping character set utf8;
Query OK, 0 rows affected, 1 warning (0.02 sec)
Records: 0  Duplicates: 0  Warnings:


#修改表中列的类型;
#方法:alter table <表名> modify <列名> 类型 [完整性约束条件][first|after 字段名];
mysql>  alter table university modify title char(250);
Query OK, 2 rows affected (0.07 sec)
Records: 2  Duplicates: 0  Warnings: 0

#修改表中列的名称;
#方法:alter table <表名> change [column] <列名> <新列名> 类型 [完整性约束条件][first|after 字段名];
mysql> alter table university change title name char(250);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> describe university;
+------------+---------------+------+-----+-------------------+-------------------+
| Field      | Type          | Null | Key | Default           | Extra             |
+------------+---------------+------+-----+-------------------+-------------------+
| id         | bigint        | NO   | PRI | NULL              | auto_increment    |
| name       | char(250)     | YES  |     | NULL              |                   |
| content    | varchar(1000) | YES  |     | NULL              |                   |
| createtime | timestamp     | YES  |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+------------+---------------+------+-----+-------------------+-------------------+
4 rows in set (0.00 sec)

#增加主键
#方法:alter table <表名> add primary key (字段名);
mysql> alter table scraping add primary key (id);
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

#删除主键
#方法:alter table <表名> drop primary key;
mysql> alter table scraping  drop primary key;
Query OK, 1 row affected (0.06 sec)
Records: 1  Duplicates: 0  Warnings: 0

#删除主键(含自动增量的);
#方法:alter table <表名> modify <列名> <去掉不要的增量剩下的约束条件>;
#另外还要加上:alter table <表名> drop primary key;
mysql> alter table scraping modify id bigint(7);
Query OK, 1 row affected, 1 warning (0.05 sec)
Records: 1  Duplicates: 0  Warnings: 1
mysql> alter table scraping drop primary key;
Query OK, 1 row affected (0.06 sec)
Records: 1  Duplicates: 0  Warnings: 0

#删除表
#方法:drop table <表名>;
mysql> drop table university;
Query OK, 0 rows affected (0.05 sec)

#查看表中的所有内容;
#方法:select * from <表名>;
mysql> select * from university;
+----+----------------------+----------------------+---------------------+
| id | name                 | content              | createtime          |
+----+----------------------+----------------------+---------------------+
|  1 | Tinghua University   | engineering course   | 2021-06-15 00:06:39 |
|  2 | Beparking University | comprehensive course | 2021-06-15 00:06:39 |
+----+----------------------+----------------------+---------------------+
2 rows in set (0.01 sec)

#查看表中特定字段的内容;
#方法:select <字段名> from <表名>;多个的字段,在对应位置增加,用逗号分隔就行;
mysql> select name from university;
+----------------------+
| name                 |
+----------------------+
| Tinghua University   |
| Beparking University |
+----------------------+
2 rows in set (0.00 sec)

#使用where子句,进行过滤查询;
#方法:select <字段名> from <表名> where <条件>;
mysql> select * from university where id="1";
+----+--------------------+--------------------+---------------------+
| id | name               | content            | createtime          |
+----+--------------------+--------------------+---------------------+
|  1 | Tinghua University | engineering course | 2021-06-15 00:06:39 |
+----+--------------------+--------------------+---------------------+
1 row in set (0.00 sec)

#select 也可以使用表达式,并且可以使用:
#方法:select <字段名 > from <表名>;
mysql> select name,JS+python from grades ;
+-------+-----------+
| name  | JS+python |
+-------+-----------+
| paul  |       179 |
| gerge |       154 |
| jenny |       200 |
+-------+-----------+
3 rows in set (0.01 sec)
#别名(多个字段记得用逗号分隔)
# 方法:select <字段 as 别名或者:字段 别名 > from <表名>;
mysql> select name as 姓名,JS+python as 总分  from grades;
+--------+--------+
| 姓名   | 总分   |
+--------+--------+
| paul   |    179 |
| gerge  |    154 |
| jenny  |    200 |
+--------+--------+
3 rows in set (0.00 sec)

#where字句中可以使用:
#比较运算符:(1)> < >= <= <> !=
#(2)between 80 and 100 值在10到20之间
#(3)in(80,90,100) 值是10或20或30,还有其他的一些比较运算符;
#逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not;
mysql> select name,JS from grades where JS>=80;#找出JS大于等于80分的name,JS;
+-------+------+
| name  | JS   |
+-------+------+
| paul  |   99 |
| jenny |  100 |
+-------+------+
2 rows in set (0.00 sec)

#排序:Asc 升序、Desc 降序,其中asc为默认值;
#方法:select <字段名> from <表名> order by <需要排序的字段名> <没则默认升序,asc>;
mysql> select * from grades order by JS desc;
+----+-------+------+--------+
| id | name  | JS   | python |
+----+-------+------+--------+
|  3 | jenny |  100 |    100 |
|  1 | paul  |   99 |     80 |
|  2 | gerge |   66 |     88 |
+----+-------+------+--------+
3 rows in set (0.00 sec)

#聚合函数:
#COUNT(列名):统计行的个数
mysql> select count(*) from grades;
+----------+
| count(*) |
+----------+
|        3 |
+----------+
1 row in set (0.00 sec)

#sum(列名):求和;sum仅对数值起作用,否则会报错。
#null和所有的数计算都是null,所以需要用ifnull将null转换为0!
mysql> select sum(JS) as 总分 from grades;
+--------+
| 总分   |
+--------+
|    265 |
+--------+
1 row in set (0.01 sec)

#avg(列名):求平均值;
mysql> select avg(JS) as 平均分 from grades;
+-------------------+
| 平均分            |
+-------------------+
| 88.33333333333333 |
+-------------------+
1 row in set (0.00 sec)

#max,min(列名):求最大,最小值;
mysql> select max(JS) from grades;
+---------+
| max(JS) |
+---------+
|     100 |
+---------+
1 row in set (0.01 sec)

四,拓展:

mysql数据库的基本操作

MySQL 一一 MySQL基本使用

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值