MySQL重要概念与基本命令

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 一、基本概念1.1数据库我们每天都在使用数据库,以登录微信为例,每个用户的用户名和密码都是保存在腾讯的服务器上的数据库里面的,登录的时候需要验证通过才能登录成功。

一、基本概念

1.1数据库

我们每天都在使用数据库,以登录微信为例,每个用户的用户名和密码都是保存在腾讯的服务器上的数据库里面的,登录的时候需要验证通过才能登录成功。那么怎么定义数据库,简单的说:

数据库就是保存有组织的数据的容器。
可以把数据库说成是存储数据的文件柜。

1.2表

一个数据库中有很多数据表,数据库就像一个大的文件柜,而表是一个一个的小格子。比如用户购物的数据信息是一个数据库,存储用户信息的是一张表,存储用户订单的是另外一张表。

表是某种特定类型数据的结构化清单。

在同一个数据库中表名是唯一的,在不同的数据库中可以使用相同的数据库表名。比如在购物数据库中有用户表,在学生信息数据库中也可以有用户表,互不影响。

1.3列和数据类型

一张数据表有行有列就像excel表格一样,列就相当于表格第一行的信息一样。每个表都是由一个或多个列组成的。

列是表中的一个字段,所有表都是由一个或多个列组成的。

数据类型是定义列用那种数据类型存储,比如姓名用文本类型,年龄用数字类型。

每个表的列都用相应的数据类型,限制该列中存储的数据。

1.4行

表中的数据是按行存储的,比如一张学生信息表,列由学号、姓名、语文成绩、数学成绩等组成,一行就是一个学生的信息。

行是表中的一个记录。

1.5主键和外键

表中的每一行都可以由一列或几列唯一标识自己。以学生信息表为例,每个学生的学号都是唯一的,不会重复,因此可以用学号作为学生信息表的主键。为什么要有主键?举个例子:如果要修改姓名为张三的学生多数学成绩,那么同时有2个或多个学生点姓名都是张三的时候就不知道应该修改那一个,要是以学号修改的标识就很确定要修改哪一个。

主键:表中的一列(或一组列),其值能够唯一标识表中的每一个记录。
外键:是另一表的主键,能唯一确定另外一个表中的每一个记录。

二、SQL

SQL是结构化查询语言(Structured Query Language)的缩写,是专门用来与数据库沟通的语言。
SQL不是某个特定数据库供应商专有的语言,几乎所有重要的DBMS都支持SQL。SQL简单易学,功能强大。
标准SQL由ANSI管理会管理,成为ANSI SQL。

三、 常用命令

3.1登录MySQL的命令

   mysql -u root -p

3.2 查看数据库

   SHOW  DATABASES;

3.3 使用某个数据库

    mysql> USE toyshop
    Database changed

3.4 查看数据库下的所有表

  SHOW TABLES

3.5查看表结构

mysql> SHOW COLUMNS FROM customers;
+--------------+-----------+------+-----+---------+----------------+
| Field        | Type      | Null | Key | Default | Extra          |
+--------------+-----------+------+-----+---------+----------------+
| cust_id      | int(11)   | NO   | PRI | NULL    | auto_increment |
| cust_name    | char(50)  | NO   |     | NULL    |                |
| cust_address | char(50)  | YES  |     | NULL    |                |
| cust_city    | char(50)  | YES  |     | NULL    |                |
| cust_state   | char(5)   | YES  |     | NULL    |                |
| cust_zip     | char(10)  | YES  |     | NULL    |                |
| cust_country | char(50)  | YES  |     | NULL    |                |
| cust_contact | char(50)  | YES  |     | NULL    |                |
| cust_email   | char(255) | YES  |     | NULL    |                |
+--------------+-----------+------+-----+---------+----------------+
9 rows in set (0.00 sec)

或者

DESC customers

3.6 检索单个列

SELECT prod_name 
FROM products;

3.7 检索多个列

SELECT prod_id,prod_name 
FROM  products;

3.8 检索所有列

SELECT * 
FROM products;

3.9 检索不同的列(去重)

SELECT DISTINCT vend_id
FROM products;

3.10 限制结果的个数

SELECT prod_name
FROM products
LIMITS 5;

3.11 从指 定行数开始返回指定个数

SELECT prod_name
FROM products
LIMIT 10,5;

从第4行开始返回3行:

SELECT prod_name
FROM products
LILMIT 4,3

从第3行开始返回4行:

SELECT prod_name
FROM products
LIMIT 4 OFFSET 3;

3.12 使用完全限定的表名

SELECT products.prod_name
FROM toyshop.products;

3.13 排序

SELECT prod_name
FROM products
ORDER BY prod_name;

3.14 多列排序

SELECT prod_id,prod_name,prod_price
FROM products
ORDER BY prod_price,prod_name;

3.15 指定排序方向

按价格降序排序

SELECT prod_name,prod_price
FROM products
ORDER BY prod_price DESC;

3.16 ORDER BY和IMIT一起用求最大值和最小值

求最小值:

SELECT *
FROM products
ORDER BY prod_price ASC
LIMIT 1;

求最大值:

SELECT *
FROM products
ORDER BY prod_price DESC
LIMIT 1;

3.17 使用WHERE子句

SELECT prod_name,prod_price
FROM products
WHERE prod_price=2.5

3.18 Mysql在执行默认匹配的时候不区分大小写。

mysql> SELECT prod_name,prod_price
    -> FROM products
    -> WHERE prod_name='fuses';
+-----------+------------+
| prod_name | prod_price |
+-----------+------------+
| Fuses     |       3.42 |
+-----------+------------+
1 row in set (0.00 sec)

3.19 列出价格小于10美元的所有产品。

SELECT prod_name,prod_price
FROM products
WHERE prod_price <10;

3.20 列出价格小于等于10美元的所有产品。

SELECT prod_name,prod_price
FROM products
WHERE prod_price <=10;

3.21 选出vend_id不等于1003的产品

 SELECT vend_id,prod_name
 FROM products
 WHERE vend_id<>1003;

等价于:

SELECT vend_id,prod_name
 FROM products
 WHERE vend_id != 1003;

3.22 IS NULL和IS NOT NULL

SELECT cust_name,cust_email
FROM customers
WHERE cust_email IS NOT NULL; 

BETWEEN

mysql> SELECT  prod_id,prod_price
    -> FROM products
    -> WHERE prod_price BETWEEN 5 AND 10;
+---------+------------+
| prod_id | prod_price |
+---------+------------+
| ANV01   |       5.99 |
| ANV02   |       9.99 |
| FB      |      10.00 |
| OL1     |       8.99 |
| TNT2    |      10.00 |
+---------+------------+
5 rows in set (0.00 sec)

3.23 AND的优先级高于OR

SELECT prod_name,prod_price,vend_id
FROM products
WHERE vend_id =1002 OR vend_id =1003 AND vend_price >=10;

使用括号分割:

SELECT prod_name,prod_price,vend_id
FROM products
WHERE (vend_id = 1002 OR vend_id =1003) AND prod_price >=10; 

3.24 IN操作符

SELECT prod_name,prod_price
FROM products
WHERE vend_id = 1002 OR vend_id = 1005
ORDER BY prod_name;

IN操作符可以完成与OR相同的功能。

IN操作符的优点:

  1. IN操作符的语法更加清楚更加直观
  2. 使用IN操作,计算的次序更加容易管理
  3. IN操作符一般比OR操作符更快
  4. IN可以包含其他的SELECT语句

3.25 NOT操作符

WHERE子句的NOT操作符有且只有一个功能,那就是否定它之后所跟的任何条件。

mysql> SELECT prod_id,prod_name,prod_price,vend_id
    -> FROM products
    -> WHERE vend_id NOT IN (1002,1005);
+---------+----------------+------------+---------+
| prod_id | prod_name      | prod_price | vend_id |
+---------+----------------+------------+---------+
| ANV01   | .5 ton anvil   |       5.99 |    1001 |
| ANV02   | 1 ton anvil    |       9.99 |    1001 |
| ANV03   | 2 ton anvil    |      14.99 |    1001 |
| DTNTR   | Detonator      |      13.00 |    1003 |
| FB      | Bird seed      |      10.00 |    1003 |
| FC      | Carrots        |       2.50 |    1003 |
| SAFE    | Safe           |      50.00 |    1003 |
| SLING   | Sling          |       4.49 |    1003 |
| TNT1    | TNT (1 stick)  |       2.50 |    1003 |
| TNT2    | TNT (5 sticks) |      10.00 |    1003 |
+---------+----------------+------------+---------+
10 rows in set (0.00 sec)

这篇博客介绍了数据库的基本概念,下篇博客动手实践,创建数据库、创建表、插入数据、设置主键和外键。
参考书:《SQL必知必会 4th》

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
存储 关系型数据库 MySQL
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令及序列使用
40 0
|
3月前
|
关系型数据库 MySQL 数据库
Python tk dos命令备份mysql数据库
Python tk dos命令备份mysql数据库
25 0
|
3月前
|
机器学习/深度学习 SQL 关系型数据库
MySql基础命令(MySql学习——四)
MySql基础命令(MySql学习——四)
20 1
|
1月前
|
SQL 关系型数据库 MySQL
|
3月前
|
SQL 关系型数据库 MySQL
Mycat【Mycat部署安装(核心配置及目录结构、安装以及管理命令详解)Mycat高级特性(读写分离概述、搭建读写分离、MySQL双主双从原理)】(三)-全面详解(学习总结---从入门到深化)
Mycat【Mycat部署安装(核心配置及目录结构、安装以及管理命令详解)Mycat高级特性(读写分离概述、搭建读写分离、MySQL双主双从原理)】(三)-全面详解(学习总结---从入门到深化)
73 0
|
13天前
|
关系型数据库 MySQL
如何解决cmd命令窗口无法运行mysql命令的问题
如何解决cmd命令窗口无法运行mysql命令的问题
8 0
|
1月前
|
存储 关系型数据库 MySQL
|
1月前
|
关系型数据库 MySQL Linux
MySQL启动与登录命令详解
【2月更文挑战第27天】
50 1
MySQL启动与登录命令详解
|
1月前
|
SQL 存储 关系型数据库
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL题】——基础概念论述(三)
【MySQL题】——基础概念论述(三)
8 0