MySQL基础-01
基本概念:
数据库:按照数据结构来组织、存储和管理数据的仓库。
数据库用于记录数据,使用数据库记录数据可以表现出各种数据间的联系,也可以很方便地对所记录的数据进行增、删、改、查等操作。
SQL:结构化查询语言(Structured Query Language
)的简称,是一门用于对数据库进行操作的语言。
更详细地说,SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。
MySQL: 一个 DBMS(数据库管理系统)。MySQL 是最流行的关系型数据库管理系统(关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据)。MySQL 使用 SQL 语言进行操作。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发者都选择 MySQL 作为网站数据库。
常见的概念混淆:
人们通常用数据库这个术语来代表他们使用的数据库软件。这是不正确的,它是引起混淆的根源。确切地说,数据库软件应称为DBMS(数据库管理系统)。数据库是通过DBMS创建和操纵的容器。数据库可以是保存在硬设备上的文件,但也可以不是。在很大程度上说,数据库究竟是文件还是别的什么东西并不重要,因为你并不直接访问数据库;你使用的是DBMS,它替你访问数据库。
简单上手操作MySQL
登录
显式登录:
MySQL -uroot -padmin123
在cmd命令行中输入以上命令,-u(username)后面代表你的用户名,默认为root,-p(password)后面紧跟的是你对应的密码,此处的admin123为我的密码,实际操作时应该换成你自己的密码
隐式登录:
MySQL -uroot -p
输入这条命令后,会要求你输入密码,此时的密码会用*代替,安全性更好
Enter password: ********
对应的成功登录与失败登录如下:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.31 MySQL Community Server - GPL
Copyright (c) 2000, 2022, 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.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
退出
exit
展示数据库
show databases;
注意:分号不能省略!
+--------------------+
| Database |
+--------------------+
| information_schema |
| my_db_01 |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.02 sec)
创建数据库
create database test;
创建成功:
Query OK, 1 row affected (0.02 sec)
再次查询展示一下数据库:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| my_db_01 |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
6 rows in set (0.00 sec)
使用某个数据库
use 数据库名
# 例如:
use my_db_01
# 成功切换结果
Database changed
查看MySQL数据库的版本号
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.31 |
+-----------+
1 row in set (0.00 sec)
查看当前使用的是哪个数据库
mysql> select database();
+------------+
| database() |
+------------+
| my_db_01 |
+------------+
1 row in set (0.00 sec)
注意:()和;都不能省略,否则会报错
MySQL语句可以分几行执行
mysql> show
-> databases
-> ;
+--------------------+
| Database |
+--------------------+
| information_schema |
| my_db_01 |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
6 rows in set (0.00 sec)
以上面这个为例:mysql语句一直遇见分号才执行,上述操作等同于 show databases;
那假如输到一半我们不想继续执行了怎么办呢?
可以通过输入\c或者是ctrl+c来退出。
mysql> show
-> \c
mysql>
数据库中最基本的单元是:表(table)
表中的行被称为数据/记录,表中的列被称为字段(具有字段名,数据类型,约束等属性)
比如
姓名 | 性别 | 年龄 |
---|---|---|
张三 | 男 | 20 |
李四 | 女 | 18 |
以上表中年龄这个字段为例,字段名就是年龄,数据类型肯定是个number整数
约束:姓名或者id往往不能重复,因为这些字段大概率是表的主键(这个概念后面再说)
查看数据库下的表
show tables;
# 结果
+--------------------+
| Tables_in_my_db_01 |
+--------------------+
| ev_article_cate |
| ev_articles |
| ev_users |
+--------------------+
3 rows in set (0.03 sec)
SQL
SQL的分类
SQL语句有很多,可以从它们的简写猜测它们的具体含义:
-
DQL Q->query 数据查询语言 (凡是带有select关键字的都是查询语句)
select …
-
DML M->manage 数据操作语言 (凡是对表中的数据进行增删改的都是DML)
insert 增
delete 删
update 改
-
DDL D->define 数据定义语言 (凡是带有,create、drop、alter的都是DDL)
DDL主要操作的是表的结构,而不是表中的数据
-
TCL 事务控制语言
commit 事务提交
rollback 事务回滚
-
DCL 数据控制语言
grant 授权
revoke 撤销权限
具体的SQL语句操作
之前学nodejs的时候建了几张表,就将就以前的来操作一下,主要是复习一下SQL语句的操作
查询表中所有数据
mysql> select * from ev_article_cate;
+----+------+-------+-----------+
| id | name | alias | is_delete |
+----+------+-------+-----------+
| 1 | 科学 | sci | 0 |
| 2 | 历史 | lishi | 0 |
| 3 | 数学 | math | 0 |
+----+------+-------+-----------+
3 rows in set (0.01 sec)
select代表查询,*代表所有
查看表的结构:
mysql> desc ev_article_cate;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | UNI | NULL | |
| alias | varchar(255) | NO | UNI | NULL | |
| is_delete | tinyint(1) | NO | | 0 | |
+-----------+--------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
# 第二种写法
mysql> show columns from tablename
desc是查询表的结构,desc是describe的缩写,该表中有各个字段的字段名、数据类型、约束等等。