了解SQL
数据库:保存有组织的数据的容器(通常是一组/个文件)。
表:某种特定类型数据的结构化清单。
模式:关于数据库和表的布局及特性的信息。
列:表中的一个字段。所有表都是由一个或多个列组成的。
数据类型:所允许的数据的类型。每个表列都有对应的数据类型,它限制该列中存储的数据。
行:表中的一个记录。
主键:一列/一组列,其值能够唯一区分表中每一行。任何两行不应具有相同的主键值;每行都必须具有一个主键值。
SQL:Structured Query Language, 一种专门用来与数据库通信的语言。
了解MySQL
DBMS: 数据库管理系统。可以分为两类:1. 基于共享文件系统的DBMS;2. 基于客户机—服务器的DBMS.
服务器部分负责所有数据访问和处理; 客户机是与用户打交道的软件。
MYSQL: 一种DBMS, 是基于客户机—服务器的数据库。
与所有的客户机—服务器DBMS一样,MySQL要求执行命令之前登入到DBMS,登录名可以与网络登入名不同。
为了连接到MySQL, 需要以下信息:1. 主机名(计算机名),若连接的是本地MySQL服务器,为localhost; 2. 端口:如果使用默认端口3306之外的端口;3. 一个合法的用户名;4. 用户口令。
选择数据库:
USE database #选择名为databse的数据库
show语句:
show databases #返回可用数据库的一个列表
show tables #返回当前数据库内的表的列表
show status #显示服务器状态
show create database #显示创建特定数据库的MySQL语句
show create table #显示创建表的MySQL语句
show grants #显示授权用户的安全权限
show errors #显示服务器错误消息
show warnings #显示服务器警告消息
#更多信息可用help show查看
检索语句:select, 必须至少给出两条消息:选择的内容;从什么地方选择。
#从products表中检索出一个prod_name列:
select prod_name
from products;
#从products表中选择三列:
select prod_id, prod_name, prod_price
from products;
#检索所有列
SELECT * #通配符*
FROM products;
# 一些用于限制的关键字:
#只选择出不同的id
SELECT DISTINCT id
FROM produts;
#只选择出前五行,注意,开始的第一行为0.
SELECT prod_name
FROM produts
limit 5;
#列出5~8行
SELECT prod_name
FROM produts
limit 5,3;
#若不排序,数据以它在底层表中出现的顺序显示
#关系数据库设计理论认为:如果没有明确排序规定,则检索出的数据的顺序无意义。
#排序
#example:1
SELECT prod_name
FROM products
ORDER BY prod_name;
#example:2
SELECT prod_name
FROM products
ORDER BY prod_price, prod_name; #先按价格排序,再按照名称排序
#example:3
SELECT prod_name
FROM products
ORDER BY prod_price DESC; #按降序排序
# 过滤语句:where
SELECT prod_name, prod_price
FROM products
WHERE prod_price = 2.5; #检索出价格为2.5的产品
# 范围检查:
SELECT prod_name, prod_price
FROM products
WHERE prod_price BETWEEN 5 AND 10;
# 空值检查:返回没有价格的列
SELECT prod_name, prod_price
FROM products
WHERE prod_price IS NULL;
# 逻辑运算符AND
SELECT prod_name, prod_price
FROM products
WHERE vend_id = 1003 AND prod_price <= 10;
#逻辑运算符OR
SELECT prod_name, prod_price
FROM products
WHERE vend_id = 1003 OR vend_id = 1002;
#两个逻辑运算符AND和OR, 优先处理AND. 为消除歧义,应该使用圆括号。
#操作符IN, 可以用来指定条件范围,范围中的每个条件都可以进行匹配。
SELECT prod_name, prod_price
FROM products
WHERE vend_id = 1003 IN (1002,1003); #IN与OR具有相同的功能。
#操作符NOT:
SELECT prod_name, prod_price
FROM products
WHERE vend_id = 1003 NOT IN (1002,1003); #IN与OR具有相同的功能
#百分号(%)通配符:
SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE 'jet%'; #匹配所有以'jet'开头的词
#下划线(_)通配符: #匹配单个字符
SELECT prod_id, prod_name
FROM products
WHERE prod_name LIKE '_t';
#正则表达式: . | [] ^ - \\ * + ? $
SELECT prod_id, prod_name
FROM products
WHERE prod_name REGEXP '.000';
# LIKE匹配整个串,而REGEXP匹配子串
创建计算字符
字段:与列的意思基本形同,不过在数据库中一般称为列,术语字段通常用于计算字段的拼接上。
拼接:将值连接到一起构成单个值。
MySQL中使用 Concat() 函数拼接两个列。
SELECT Concat(vend_name, '(', vend_country,')')
FROM vendors
ORDER BY vend_name;
#返回的是计算字段,是一个值而不是一个列。
别名:一个字段或值的替换名。用关键字AS赋予。由于拼接字段返回的是一个值,所以不能用于客户机应用中。别名可以解决这个问题。
SELECT Concat(vend_name, '(', vend_country,')') AS vend_title
FROM vendors
ORDER BY vend_name;
计算字段的一个常见用途是对检索出的数据做算数计算,例如:
SELECT quantity * item AS expanded_price
FROM orderitems;
函数
函数 | 功能 |
---|---|
Upper() | 将文本转换为大写 |
Lower() | 将串转换为小写 |
Left() | 返回串左边的字符 |
Right() | 返回串右边的字符 |
Length() | 返回串的长度 |
Locate() | 找出串的一个子串 |
LTrim() | 去掉左边的空格 |
RTrim() | 去掉右边的空格 |
Trim() | 去掉串左右两边的空格 |
Soundex() | 返回串的SOUNDEX值 |
SubString() | 返回子串的字符 |
SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。
此外,还有处理日期、数值的函数。
汇总数据
来源:CSDN
作者:vsym
链接:https://blog.csdn.net/sd4567855/article/details/103456666