数据库基础语言整理

这篇博客详细整理了MySQL数据库的基础知识,包括数据库、表、模式、列、行和主键的概念,以及SELECT、ORDER BY、WHERE、LIKE、IN等查询语句的使用。还涉及到了计算字段、数据处理、汇总数据、分组数据、子查询、联结表、插入、更新和删除数据的操作。此外,讲解了创建和操纵表,如CREATE TABLE、ALTER TABLE和DROP TABLE等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MySQL数据库基础语言整理:

自己学习MySQL必知必会一书时笔记的整理。

基本概念

数据库:保存有组织的数据的容器。
表:结构化文件,存同一类数据。
模式:关于数据库的布局、特征等的信息。
列:每个列有自己特定数据类型。
行:每个记录存在自己的行。
主键:每一行有唯一标识自己的一列

简单语句

SELECT:

SELECT prod_id,prod_price#可以用通配符*提取所有行
FROM Products;

ORDER BY

SELECT prod_id,prod_price,prod_name
FROM Products
ORDER BY prod_price DSEC,prod_name;
/*DSEC表示按降序排列,默认升序。第一列相同,按第二列排列,这里prod_price也可以用所在位置2来写*/
#ORDER BY语句一般放在所有语句之后

WHERE

SELECT prod_id,prod_price,prod_name
FROM Products
WHERE prod_price BETWEEN 5 AND 10;
/*WHERE子句操作符:=、<>、!=、BETWEEN、IS NULL,字符串用‘’表示*/

可以用AND和OR组合搜索条件,优先级为AND>OR,要改变顺序,运用()
IN可以指定搜索范围,里面的每个条件都可匹配
NOT否定之后所跟的条件

SELECT prod_id,prod_price,prod_name
FROM Products
WHERE Vend_id IN ('DLLo1','BRS02');
#WHERE NOT Vend_id='DLLo1'

LIKE
通配符搜索仅适用于文本字符串。
%:表示任何字符出现任意次数
_:只表示单个字符
[]:用来指定一个字符集,必须匹配指定位置一个字符。

SELECT prod_id,prod_price,prod_name
FROM Products
WHERE prod_name LIKE '[^JM]%';#%表示是什么都无所谓

创建计算字段
拼接字段:MySQL使用CONCAT
去空格:RTRIM去右边空格,LTRIM去左边空格,TRIM去两边空格。
使用别名:AS
算数计算:*

SELECT CONCAT PTRIM(prod_price),'(',prod_name,')'
FROM Products
WHERE Vend_id IN ('DLLo1','BRS02');
SELECT prod_id,prod_price,quantity
       quantity*prod_price AS ex_price
FROM Products
WHERE quantity=2003;

使用数据处理字段
(每个DBMS都有特定函数)
文本处理:UPPER,LOWER(改变大小写),LENGTH,LEFT(返回串左边字符)
*日期处理:*使用YEAR提取年份
数值处理:

SELECT order_num
FROM ORDERS
WHERE YEAR(order_date)=2004

汇总数据
聚集函数:AVG,COUNT(返回符合条件行的数目),MAX,MIN,SUM

SELECT COUNT(cust_email) AS num_cust
FROM Customers
/*若要统计不同行,加DISTINCT,SELECT COUNT(DISTNCT cust_email) AS num_cust*/

分组数据
创建分组GROUP BY
过滤分组:HAVING

SELECT vend_id,COUNT(*) AS num_prods
FROM Products
WHERE prod_price>=4
GROUP BY vend_id
HAVING COUNT(*)>=2
#列出两个以上,价格为4以上的产品供应商

使用子查询
SELECT由里到外计算。

SELECT cust_name,cust_contact
FROM Customers
WHERE cust_id IN(SELECT cust_id
                 FROM Orders
                 WHERE order_num IN(SELECT order_num
                 FROM OrderItems
                 WHERE prod_id='RGAN01'));

联结表

SELECT prod_name,vend_name,prod_price,quantity
FROM OrderItems,Products,Vendors
WHERE Products.vend_id=Vendors.vend_id
      AND OrderItems.prod_id=Products.prod_id
      AND order_num=2007;

不同联结类型:
自联结:子查询/联结
自然联结:排除相同的出现多次的列,每个列返回一次
外部联结:包含没有关联行那些行(OUTER JION)

组合查询
UNION:连接两个完整的SELECT语句。默认消除相同的行,若不想消除,使用UNION ALL

插入数据
插入完整行:

INSERT INTO Customers(cust_id,
                      cust_name,
                      cust_address)
              VALUES('1006',
                      'Tpu',
                      NULL);

插入检索出的数据:

INSERT INTO Customers(cust_id,
                      cust_name,
                      cust_address)
             SELECT cust_id,
                    cust_name,
                    cust_address
             FROM CustNew;

从一个表复制到另一个表:

CREAT TABLE custcopy AS
SELECT *
FROM Custmors;

更新删除数据
UPDATE
DELETE

UPDATE Custmors
SET cust_contact='S'
WHERE cust_id='1006';
DELETE FROM Customers
WHERE cust_id='10006’;

创建和操纵表
创建:CREAT TABLE

CREAT TABLE OrderItems
(
   order_num INTEGER NOT NULL,
  prod_id CHAR(10) NOT NULL;

更新:ALTER TABLE

ALTER TABLE Vendors
ADD vend_phone CHAR(20)#删除用DROP

删除:DROP TABLE

DROP TABLE custcopy;

重命名表 RENAME

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值