mysql

隐身守侯 提交于 2019-12-11 05:36:54

了解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是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。

此外,还有处理日期、数值的函数。

汇总数据

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!