【SQL必知必会】学习笔记day1

2020-05-03  本文已影响0人  阿拉辉

第一章-第四章

第一章了解SQL

1.了解数据库

1.1数据库基础

1.1.1什么是数据库

数据库是一个以某种有组织的方式存储的数据集合,保存有组织的数据的容器(通常是一个文件或一组文件)。

1.1.2 表

表(table) 某种特定类型数据的结构化清单。
表名的唯一性取决于多个因素,如数据库名和表名等的结合。这表示,虽然在相同数据库中不能两次使用相同的表名,但在不同的数据库中却可以使用相同的表名。

1.1.5 主键

表中每一行都应该有可以唯一标识自己的一列(或一组列)。一个顾客表可以使用顾客编号列,而订单表可以使用订单ID,雇员表可以使用雇员ID或雇员社会保险号。
主键(primary key) 一列(或一组列),其值能够唯一区分表中每个行。
唯一标识表中每行的这个列(或这组别)称为主键。主键用来表示一个特定的行。没有主键,更新或者删除表中的特定行很困难,因为没有安全的方法保证只涉及相关的行。

主键的最好习惯:
 不更新主键列中的值;
 不重用主键列的值;
 不在主键列中使用可能会更改的值。(例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并和更改其名字时,必须更改这个主键。)

1.2什么是SQL?

SQL是结构化查询语言(Structured Query Language))的缩写。
SQL是一种专门用来与数据库通信的语言。
设计SQL的目的是很好地完成一项任务,即提供一种从数据库中读写数据的简单有效的方法。

第二章MySQL简介

2.1什么是MySQL?

数据库的所有存储、检索、管理和处理实际上是由数据库软件-DBMS(数据库管理系统)完成的。MySQL是一种DBMS,即它是一种数据库软件。

2.1.1客户机—服务器软件

DBMS可分为两类:一类为基于共享文件系统的DBMS,另一类为基于客户机—服务器的DBMS。前者(包括诸如Microsoft Access和FileMaker)用于桌面用途,通常不用于高端或更关键的应用。

MySQL、Oracle以及Microsoft SQL Server等数据库是基于客户机—服务器的数据库。客户机—服务器应用分为两个不同的部分。服务器部分是负责所有数据访问和处理的一个软件。这个软件运行在称为数据库服务器的计算机上。

2.2MySQL工具

在操作系统命令提示符下输入mysql将出现一个如下的简单提示:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.20 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

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.

请注意:
 命令输入在mysql>之后;
 命令用;或\g结束,换句话说,仅按Enter不执行命令;
 输入help或\h获得帮助,也可以输入更多的文本获得特定命令的帮助(如,输入help select获
得使用SELECT语句的帮助);
 输入quit或exit退出命令行实用程序。

2.2.2MySQL Administrator

MySQL Administrator(MySQL管理器)是一个图形交互客户机,用来简化MySQL服务器的管理。
MySQL Administrator提示输入服务器和登录信息(并且允许你保存服务器定义供以后选择),然后显示允许选择不同视图的图标。其中:

 Server Information(服务器信息)显示客户机和被连接的服务器的状态和版本信息;
 Service Control(服务控制)允许停止和启动MySQL以及指定服务器特性;
 User Administration(用户管理)用来定义MySQL用户、登录和权限;
 Catalogs(目录)列出可用的数据库并允许创建数据库和表。

第三章 使用MySQL

连接

在最初安装MySQL时,需要输入一个管理登录(通常为root)和一个口令。如果使用自己的本地服务器,只是为了简单实验一个MySQL,使用上述登录就可以。

但现实中,管理登录受到密切保护(因为对它的访问授予了创建表、删除整个数据库、更改登录和口令等完全的权限)。
需要的信息如下:
 主机名(计算机名)——如果连接到本地MySQL服务器,为localhost;
 端口(如果使用默认端口3306之外的端口);
 一个合法的用户名;
 用户口令(如果需要)。

3.2选择数据库

选择数据库,使用USE关键字。
输入

 use mysql

输出

Database changed

记住,必须先使用USE打开数据库,才能读取其中的数据。

3.3了解数据库和表

数据库、表、列、用户、权限等的信息被存储在数据库和表中(MySQL使用MySQL来存储这些信息)。不过,内部的表一般不直接访问。可用MySQL的SHOW命令来显示这些信息(MySQL从内部表中提取这些信息)。
请看下面的例子

输入

show tables;

输出

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

为了获得一个数据库内的表的列表,使用SHOW TABLES;,如下所示:
输入

show tables;

输出

+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| component                 |
| db                        |
| default_roles             |
| engine_cost               |
| func                      |
| general_log               |
| global_grants             |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| password_history          |
| plugin                    |
| procs_priv                |
| proxies_priv              |
| role_edges                |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+

分析:SHOW TABLES;返回当前选择的数据库内可用表的列表。

SHOW也可以用来显示表列:
输入

show columns from mytable;

输出

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | char(10)    | NO   | PRI | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| sex   | char(1)     | YES  |     | NULL    |       |
| age   | char(10)    | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

其他show语句:
 SHOW STATUS,用于显示广泛的服务器状态信息;
 SHOW CREATE DATABASE和SHOW CREATE TABLE,分别用来显示创建特定数据库或表的MySQL语句;
 SHOW GRANTS,用来显示授予用户(所有用户或特定用户)的安全权限;
 SHOW ERRORS和SHOW WARNINGS,用来显示服务器错误或警告消息。

第四章 检索数据

检索单个列

SELECT prod_name 
FROM products;
查询结果.png

检索多个列

SELECT prod_id,prod_name,prod_price
FROM products;
多列查询结果.png

检索所有列

SELECT*
FROM products;

检索不同的行

SELECT vend_id
FROM products;
检索结果.png

SELECT语句返回14行(即使表中只有4个供应商),因为products表中列出了14个产品。

如何检索出不同值得列表?
解决办法是使用DISTINCT关键字,顾名思义,此关键字指示MySQL只返回不同的值。

SELECT DISTINCT vend_id
FROM products;
DISTINCT关键字检索结果.png

分析:SELECT DISTINCT vend_id 告诉MySQL返回不同(唯一)的vend_id行,因此只返回4行,如上面输出结果。如果使用DISTINCT关键字,它必须放在列名前面。

限制结果
SELECT语句返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT子句。

SELECT prod_name
FROM products
LIMIT 5;
限制条件下的结果.png
SELECT prod_name
FROM products
LIMIT 5,5;
限行输出结果.png

分析:LIMIT 5,5指示MySQL返回从行5开始的5行。第一个数为开始的位置,第二个数为要检索的行数。

所以,带一个值的LIMIT总是从第一行开始,给出的数为返回的行数。带两个值的LIMIT可以指定从行号为第一个值的位置开始。

本章小结:

本章学习了如何使用SQL的SELECT语句来检索单个表列、多个表列以及所有表列。下一章将讲授如何排序检索出来的数据。

上一篇下一篇

猜你喜欢

热点阅读