MySQL笔记

1、TOP

# 在 SQL Server 中使用 SELECT 时,可以用 TOP 关键字来限制最多返回多少行
SELECT TOP 5 prod_name
FROM Products;
# 在MySQL中用LIMIT实现
SELECT prod_name
FROM Products
LIMIT 5;

2、WHERE

<> --不等于
!< --不小于
!> --不大于
IS NULL --为空值

# IN IN 的最大优点是可以包含其他 SELECT 语句,能够更动态地建立WHERE 子句
SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ('DLL01','BRS01')
ORDER BY prod_name;

3、通配符

_    # 它只匹配单个字符,而不是多个字符。
%    # 匹配多个字符

4、连接

# Contact
SELECT Concat(vend_name, ' (', vend_country, ')') 
FROM Vendors
ORDER BY vend_name;

# TRIM 函数 
# 大多数 DBMS 都支持 RTRIM()(正如刚才所见,它去掉字符串右边的
# 空格)、LTRIM()(去掉字符串左边的空格)以及 TRIM()(去掉字符
# 串左右两边的空格)。
SELECT Concat(RTrim(vend_name), ' (',
              RTrim(vend_country), ')') AS vend_title
FROM Vendors
ORDER BY vend_name

5、COUNT

# 使用 COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。
# 使用 COUNT(column)对特定列中具有值的行进行计数,忽略 NULL 值。

6、语句顺序

7、子查询

# 注意:只能是单列
# 作为子查询的 SELECT 语句只能查询单个列。企图检索多个列将返回错误。
SELECT cust_id
FROM Orders
WHERE order_num IN (SELECT order_num
                    FROM OrderItems
                    WHERE prod_id = 'RGAN01');

# 作为计算字段使用子查询
SELECT cust_name, 
cust_state,
(SELECT COUNT(*) 
 FROM Orders 
 WHERE Orders.cust_id = Customers.cust_id) AS orders
FROM Customers 
ORDER BY cust_name;

8、联表查询

# 笛卡儿积(cartesian product) 
# 由没有联结条件的表关系返回的结果为笛卡儿积。检索出的行的数目
# 将是第一个表中的行数乘以第二个表中的行数。
SELECT vend_name, prod_name, prod_price
FROM Vendors, Products;

# 内联结
SELECT vend_name, prod_name, prod_price
FROM Vendors
INNER JOIN Products ON Vendors.vend_id = Products.vend_id;

#另一种不规范的写法
SELECT vend_name, prod_name, prod_price
FROM Vendors, Products
WHERE Vendors.vend_id = Products.vend_id;

9、UNION

SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_state IN ('IL','IN','MI')
UNION
SELECT cust_name, cust_contact, cust_email
FROM Customers
WHERE cust_name = 'Fun4All';
# 使用 UNION ALL的话,DBMS 不取消重复的行。
# 两个查询语句的列名要一致,不一致的话会返回第一个列名

10、插入语句

INSERT INTO Customers(cust_id,cust_contact,cust_email,
                      cust_name,cust_address,cust_city,
                      cust_state,cust_zip)
VALUES(1000000006,NULL,NULL,'Toy Land',
       '123 Any Street','New York','NY','11111');

# 插入查询到的结果
INSERT INTO Customers(cust_id,
 cust_contact,
 cust_email,
 cust_name,
 cust_address,
 cust_city,
 cust_state,
 cust_zip,
 cust_country)
SELECT cust_id,
 cust_contact,
 cust_email,
 cust_name,
 cust_address,
 cust_city,
 cust_state,
 cust_zip,
 cust_country
FROM CustNew;

11、更新语句

UPDATE Customers
SET cust_contact = 'Sam Roberts',
    cust_email = 'sam@toyland.com'
WHERE cust_id = 1000000006;

12、删除语句

DELETE FROM Customers
WHERE cust_id = 1000000006;
# 如果想从表中删除所有行,不要使用 DELETE。可使用 TRUNCATE TABLE
# 语句,它完成相同的工作,而速度更快(因为不记录数据的变动)。

# 删除某列的值
UPDATE table_name SET column_name=NULL WHERE condition;

# 删除某列
ALTER TABLE table_name DROP COLUMN column_name;

13、创建索引

CREATE INDEX prod_name_ind
ON Products (prod_name);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值