读书笔记sql必知必会(代码片段)

pre_eminent pre_eminent     2022-12-15     612

关键词:

章节标题页数进度完成时间
1了解SQL1~9100%2022-04-08 
2检索数据 SELECT10~22100%2022-04-10
3排序检索数据 ORDER BY23~30100%2022-04-11
4过滤数据 WHERE31~38100%2022-04-11
5高级数据过滤 (组合WHERE,NOT,IN)39~49100%2022-04-16
6用通配符进行过滤 LIKE(%  _  [])49~57100%2022-04-18
7创建计算字段58~670%
8使用函数处理数据68~770%
9汇总数据78~880%
10分组数据89~980%
11使用子查询99~1070%
12联结表108~1190%
13创建高级联结120~1300%
14组合查询131~1390%
15插入数据140~1490%
16更新和删除数据150~1560%
17创建和操纵表157~1660%
18使用视图167~1770%
19使用存储过程178~1870%
20管理事务处理188~1950%
21使用游标196~202

0%

22高级SQL特性203~2150%

1. 了解SQL

重点知识:

1.1 本地安装MySQL(或派生的MariaDB),同时安装MySQL Workbench,如图所示:

1.2 win用户可以使用Microsoft SQL Server Express,这是个免费版本,它包括一个客户端:SQL Server Management Studio


2. 检索数据

检索数据章节开始,需要使用具体的表格,

因此需要先在本地实现附录A中的【供应商表】【产品表】【顾客表】【订单表】【订单物品表】5张表


附录A 样例表

表A-1 供应商表 Vendors

表A-1 Vendors表【供应商】
序号列名说明
1vend_id唯一的供应商ID (主键)
2vend_name供应商的名字
3vend_address供应商的地址
4vend_city供应商所在城市
5vend_province供应商所在的省
6vend_zip供应商地址邮政编码
7vend_country供应商所在国家

表A-2 产品表 Products

表A-2 Products表【产品】
序号列名说明
1prod_id唯一的产品id(主键)
2vend_id产品供应商id(外键,关联至供应商表A-1)
3prod_name产品名
4prod_price产品价格
5prod_desc产品描述

表A-3 顾客表 Customers

表A-3 Customers表【顾客】
序号列名说明
1cust_id唯一的顾客id(主键)
2cust_name顾客名
3cust_address顾客的地址
4cust_city顾客所在城市
5cust_province顾客所在省
6cust_zip顾客地址邮政编码
7cust_country顾客所在国家
8cust_contact顾客的联系名(类似昵称)
9cust_email顾客的email
10cust_sex顾客性别
11cust_telphone顾客手机号
12cust_age顾客年龄
13cust_marriage

顾客婚姻状态

14cust_weixin顾客微信

表A-4 订单表 Orders

表A-4 Orders表 【订单表】
序号列名预科
1order_num订单号(主键)
2order_date订单日期
3cust_id顾客id(外键,关联至顾客表A-3)

表A-5 订单物品表 OrderItems

表A-5 OrderItems表 【订单物品表】
序号列名说明
1order_num订单号(外键,关联至订单表A-4)(联合主键)
2order_item订单物品号(订单内的顺序,第几个)(联合主键)
3prod_id产品id(外键,关联至产品表A-2)
4quantity物品数量
5item_price物品价格

样例表的SQL下载地址:http://forta.com/books/0135182794

-----------------------------------------------------
-- Sams Teach Yourself SQL in 10 Minutes, 5th Edition
-- http://forta.com/books/0135182794/
-- Example table creation scripts for MySQL & MariaDB
-----------------------------------------------------

use your_db;

-- ----------------------
-- Create Customers table
-- ----------------------
CREATE TABLE Customers
(
  cust_id      char(10)  NOT NULL ,
  cust_name    char(50)  NOT NULL ,
  cust_address char(50)  NULL ,
  cust_city    char(50)  NULL ,
  cust_state   char(5)   NULL ,
  cust_zip     char(10)  NULL ,
  cust_country char(50)  NULL ,
  cust_contact char(50)  NULL ,
  cust_email   char(255) NULL 
);

-- -----------------------
-- Create OrderItems table
-- -----------------------
CREATE TABLE OrderItems
(
  order_num  int          NOT NULL ,
  order_item int          NOT NULL ,
  prod_id    char(10)     NOT NULL ,
  quantity   int          NOT NULL ,
  item_price decimal(8,2) NOT NULL 
);


-- -------------------
-- Create Orders table
-- -------------------
CREATE TABLE Orders
(
  order_num  int      NOT NULL ,
  order_date datetime NOT NULL ,
  cust_id    char(10) NOT NULL 
);

-- ---------------------
-- Create Products table
-- ---------------------
CREATE TABLE Products
(
  prod_id    char(10)      NOT NULL ,
  vend_id    char(10)      NOT NULL ,
  prod_name  char(255)     NOT NULL ,
  prod_price decimal(8,2)  NOT NULL ,
  prod_desc  text          NULL 
);

-- --------------------
-- Create Vendors table
-- --------------------
CREATE TABLE Vendors
(
  vend_id      char(10) NOT NULL ,
  vend_name    char(50) NOT NULL ,
  vend_address char(50) NULL ,
  vend_city    char(50) NULL ,
  vend_state   char(5)  NULL ,
  vend_zip     char(10) NULL ,
  vend_country char(50) NULL 
);


-- -------------------
-- Define primary keys
-- -------------------
ALTER TABLE Customers ADD PRIMARY KEY (cust_id);
ALTER TABLE OrderItems ADD PRIMARY KEY (order_num, order_item);
ALTER TABLE Orders ADD PRIMARY KEY (order_num);
ALTER TABLE Products ADD PRIMARY KEY (prod_id);
ALTER TABLE Vendors ADD PRIMARY KEY (vend_id);


-- -------------------
-- Define foreign keys
-- -------------------
ALTER TABLE OrderItems ADD CONSTRAINT FK_OrderItems_Orders FOREIGN KEY (order_num) REFERENCES Orders (order_num);
ALTER TABLE OrderItems ADD CONSTRAINT FK_OrderItems_Products FOREIGN KEY (prod_id) REFERENCES Products (prod_id);
ALTER TABLE Orders ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (cust_id) REFERENCES Customers (cust_id);
ALTER TABLE Products ADD CONSTRAINT FK_Products_Vendors FOREIGN KEY (vend_id) REFERENCES Vendors (vend_id);

-------------------------------------------------------
-- Sams Teach Yourself SQL in 10 Minutes, 5th Edition
-- http://forta.com/books/0135182794/
-- Example table population scripts for MySQL & MariaDB
-------------------------------------------------------


-- ------------------------
-- Populate Customers table
-- ------------------------
INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)
VALUES('1000000001', 'Village Toys', '200 Maple Lane', 'Detroit', 'MI', '44444', 'USA', 'John Smith', 'sales@villagetoys.com');
INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact)
VALUES('1000000002', 'Kids Place', '333 South Lake Drive', 'Columbus', 'OH', '43333', 'USA', 'Michelle Green');
INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)
VALUES('1000000003', 'Fun4All', '1 Sunny Place', 'Muncie', 'IN', '42222', 'USA', 'Jim Jones', 'jjones@fun4all.com');
INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email)
VALUES('1000000004', 'Fun4All', '829 Riverside Drive', 'Phoenix', 'AZ', '88888', 'USA', 'Denise L. Stephens', 'dstephens@fun4all.com');
INSERT INTO Customers(cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact)
VALUES('1000000005', 'The Toy Store', '4545 53rd Street', 'Chicago', 'IL', '54545', 'USA', 'Kim Howard');

-- ----------------------
-- Populate Vendors table
-- ----------------------
INSERT INTO Vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)
VALUES('BRS01','Bears R Us','123 Main Street','Bear Town','MI','44444', 'USA');
INSERT INTO Vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)
VALUES('BRE02','Bear Emporium','500 Park Street','Anytown','OH','44333', 'USA');
INSERT INTO Vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)
VALUES('DLL01','Doll House Inc.','555 High Street','Dollsville','CA','99999', 'USA');
INSERT INTO Vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)
VALUES('FRB01','Furball Inc.','1000 5th Avenue','New York','NY','11111', 'USA');
INSERT INTO Vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)
VALUES('FNG01','Fun and Games','42 Galaxy Road','London', NULL,'N16 6PS', 'England');
INSERT INTO Vendors(vend_id, vend_name, vend_address, vend_city, vend_state, vend_zip, vend_country)
VALUES('JTS01','Jouets et ours','1 Rue Amusement','Paris', NULL,'45678', 'France');

-- -----------------------
-- Populate Products table
-- -----------------------
INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('BR01', 'BRS01', '8 inch teddy bear', 5.99, '8 inch teddy bear, comes with cap and jacket');
INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('BR02', 'BRS01', '12 inch teddy bear', 8.99, '12 inch teddy bear, comes with cap and jacket');
INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('BR03', 'BRS01', '18 inch teddy bear', 11.99, '18 inch teddy bear, comes with cap and jacket');
INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('BNBG01', 'DLL01', 'Fish bean bag toy', 3.49, 'Fish bean bag toy, complete with bean bag worms with which to feed it');
INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('BNBG02', 'DLL01', 'Bird bean bag toy', 3.49, 'Bird bean bag toy, eggs are not included');
INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('BNBG03', 'DLL01', 'Rabbit bean bag toy', 3.49, 'Rabbit bean bag toy, comes with bean bag carrots');
INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('RGAN01', 'DLL01', 'Raggedy Ann', 4.99, '18 inch Raggedy Ann doll');
INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('RYL01', 'FNG01', 'King doll', 9.49, '12 inch king doll with royal garments and crown');
INSERT INTO Products(prod_id, vend_id, prod_name, prod_price, prod_desc)
VALUES('RYL02', 'FNG01', 'Queen doll', 9.49, '12 inch queen doll with royal garments and crown');

-- ---------------------
-- Populate Orders table
-- ---------------------
INSERT INTO Orders(order_num, order_date, cust_id)
VALUES(20005, '2020-05-01', '1000000001');
INSERT INTO Orders(order_num, order_date, cust_id)
VALUES(20006, '2020-01-12', '1000000003');
INSERT INTO Orders(order_num, order_date, cust_id)
VALUES(20007, '2020-01-30', '1000000004');
INSERT INTO Orders(order_num, order_date, cust_id)
VALUES(20008, '2020-02-03', '1000000005');
INSERT INTO Orders(order_num, order_date, cust_id)
VALUES(20009, '2020-02-08', '1000000001');

-- -------------------------
-- Populate OrderItems table
-- -------------------------
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20005, 1, 'BR01', 100, 5.49);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20005, 2, 'BR03', 100, 10.99);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20006, 1, 'BR01', 20, 5.99);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20006, 2, 'BR02', 10, 8.99);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20006, 3, 'BR03', 10, 11.99);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20007, 1, 'BR03', 50, 11.49);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20007, 2, 'BNBG01', 100, 2.99);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20007, 3, 'BNBG02', 100, 2.99);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20007, 4, 'BNBG03', 100, 2.99);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20007, 5, 'RGAN01', 50, 4.49);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20008, 1, 'RGAN01', 5, 4.99);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20008, 2, 'BR03', 5, 11.99);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20008, 3, 'BNBG01', 10, 3.49);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20008, 4, 'BNBG02', 10, 3.49);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20008, 5, 'BNBG03', 10, 3.49);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20009, 1, 'BNBG01', 250, 2.49);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20009, 2, 'BNBG02', 250, 2.49);
INSERT INTO OrderItems(order_num, order_item, prod_id, quantity, item_price)
VALUES(20009, 3, 'BNBG03', 250, 2.49);


2.2 查询一个列

select prod_name from local.Products

注意:

如果没有明确排序查询结果,则返回的数据没有特定的顺序

SQL语句必须以分号结尾

SQL的关键字不区分大小写,SQL关键字推荐全部大写

SQL语句不受换行和多个空格影响


效果如下:


2.3 检索所有列

使用通配符* 可以返回表中所有列

注意:

列的顺序一般是表中出现的物理顺序,但并不总是如此

* 会降低检索速度

* 能检索出未知列


2.5 检索不同的值

例如: 查询Products表中的所有产品的供应商,要求无重复的供应商

SELECT vend_id FROM Products;

 由于产品表中 3个供应商 提供了9个商品,所以供应商出现了重复

只需要:  DISTINCT + 列名即可

SELECT DISTINCT vend_id FROM Products;

注意:

DISTINCT 必须直接放在 列名的 前面


DISTINCT 作用于 所有的查询的列,

如果是查vend_id,prod_price列,则是两两组合的结果唯一 


2.6 限制结果

如果只想返回第1行或者一定数的行,则有不同的写法

序号数据库语句说明
1SQL ServerSELECT TOP 5 prod_name FROM Products;TOP 5
2DB2

SELECT prod_name FROM Products

FETCH FIRST 5 ROWS ONLY;

FETCH FIRST 5 ROWS ONLY
3Oracle

SELECT prod_name FROM Products

WHERE ROWNUM <= 5;

WHERE ROWNUM <= 5
4MySQL, MariaDB, PostgreSQL或者SQLite

SELECT prod_name FROM Products

LIMIT 5;

或者 LIMIT 5 OFFSET 0

或者 简写

LIMIT 0,5(注意反过来了)


2.7 使用注释

序号注释示例说明
1# 这是一条注释在一行的开头使用#,某些DBMS不支持
2-- 这是一条注释行内注释,推荐,-- 后面就是注释
3/*   n行  */多行注释,常用于注释代码

3. 排序检索数据 ORDER BY

指定一条ORDER BY 子句时,应该要保证它是SELECT语句中的最后一条子句

ORDER BY子句使用的列名,可以不是显示的列,用非检索的列进行排序是完全合法。


3.2 按多个列排序

要按多个列排序,只需要列表之间用逗号分隔即可。

SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name;

mysql> SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price, prod_name;
+---------+------------+---------------------+
| prod_id | prod_price | prod_name           |
+---------+------------+---------------------+
| BNBG02  |       3.49 | Bird bean bag toy   |
| BNBG01  |       3.49 | Fish bean bag toy   |
| BNBG03  |       3.49 | Rabbit bean bag toy |
| RGAN01  |       4.99 | Raggedy Ann         |
| BR01    |       5.99 | 8 inch teddy bear   |
| BR02    |       8.99 | 12 inch teddy bear  |
| RYL01   |       9.49 | King doll           |
| RYL02   |       9.49 | Queen doll          |
| BR03    |      11.99 | 18 inch teddy bear  |
+---------+------------+---------------------+
9 rows in set (0.00 sec)

3.3 按显示列的相对位置排序(从1开始数)

与上面完全等价:2表示第2列,即prod_price

SELECT prod_id, prod_price, prod_name FROM products ORDER BY 2, 3;

好处:不用再写一遍列名

缺点:难维护,长期变动可能错乱;

如果进行排序的列,没有在SELECT清单里,就无法使用相对位置了

mysql> SELECT prod_id, prod_price, prod_name FROM products ORDER BY 2, 3;
+---------+------------+---------------------+
| prod_id | prod_price | prod_name           |
+---------+------------+---------------------+
| BNBG02  |       3.49 | Bird bean bag toy   |
| BNBG01  |       3.49 | Fish bean bag toy   |
| BNBG03  |       3.49 | Rabbit bean bag toy |
| RGAN01  |       4.99 | Raggedy Ann         |
| BR01    |       5.99 | 8 inch teddy bear   |
| BR02    |       8.99 | 12 inch teddy bear  |
| RYL01   |       9.49 | King doll           |
| RYL02   |       9.49 | Queen doll          |
| BR03    |      11.99 | 18 inch teddy bear  |
+---------+------------+---------------------+
9 rows in set (0.00 sec)

3.4 指定排序方向

默认为升序:ASC可省略


降序使用DESC,

DESC关键字只应用到直接位于它前面的列名

如果要在多个列上降序,则必须对每一列指定DESC关键字


SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name;

这句SQL没有为prod_name指定方向,因此默认为ASC升序。

mysql> SELECT prod_id, prod_price, prod_name FROM products ORDER BY prod_price DESC, prod_name;
+---------+------------+---------------------+
| prod_id | prod_price | prod_name           |
+---------+------------+---------------------+
| BR03    |      11.99 | 18 inch teddy bear  |
| RYL01   |       9.49 | King doll           |
| RYL02   |       9.49 | Queen doll          |
| BR02    |       8.99 | 12 inch teddy bear  |
| BR01    |       5.99 | 8 inch teddy bear   |
| RGAN01  |       4.99 | Raggedy Ann         |
| BNBG02  |       3.49 | Bird bean bag toy   |
| BNBG01  |       3.49 | Fish bean bag toy   |
| BNBG03  |       3.49 | Rabbit bean bag toy |
+---------+------------+---------------------+
9 rows in set (0.00 sec)

4. 过滤数据

搜索条件(search criteria)也称为过滤条件(filter condition)

WHERE子句,在表名之后给出。


同时使用WHERE子句 和 ORDER BY子句时,WHERE子句在前面

4.2 WHERE子句操作符

表4-1 WHERE子句操作符
序号操作符说明
1=等于
2<>不等于
3!=不等于
4<小于
5<=小于等于
6!<不小于
7>大于
8>=大于等于
9!>不大于
10BETWEEN X AND Y在指定值之间  [X, Y]
11IS NULL为NULL值

SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;

mysql> SELECT prod_name, prod_price FROM products
    -> WHERE prod_price BETWEEN 5 AND 10;
+--------------------+------------+
| prod_name          | prod_price |
+--------------------+------------+
| 8 inch teddy bear  |       5.99 |
| 12 inch teddy bear |       8.99 |
| King doll          |       9.49 |
| Queen doll         |       9.49 |
+--------------------+------------+
4 rows in set (0.00 sec)

4.3 检查空值 NULL

SELECT cust_name, cust_email FROM customers WHERE cust_email IS NULL;

客户表中,email为NULL的行

mysql> SELECT cust_name, cust_email FROM customers WHERE cust_email IS NULL;
+---------------+------------+
| cust_name     | cust_email |
+---------------+------------+
| Kids Place    | NULL       |
| The Toy Store | NULL       |
+---------------+------------+
2 rows in set (0.00 sec)

5. 组合WHERE(AND 、OR操作符)和 (NOT、IN)

SQL允许给出多个WHERE子句

这些WHERE子句有2种使用方式:AND子句 或者 OR子句

AND 和 OR 也被称为 逻辑操作符


5.1 AND操作符

5.2 OR 操作符

许多DBMS 在 OR子句的第1个条件满足时,就不再计算第2个条件了  ???

SELECT name FROM GIRLS WHERE age = 13 OR age = 14;


5.3 求值顺序

SQL在处理OR操作符之前,优先处理AND操作符。

AND 在求值过程中,优先级更高。

解决办法:任何时候,都使用 圆括号 ()对 AND 和 OR 操作符明确分组!

mysql> SELECT prod_name, prod_price
    -> FROM products
    -> WHERE (vend_id = 'DLL01' OR vend_id = 'BRS01') AND prod_price >= 10;
+--------------------+------------+
| prod_name          | prod_price |
+--------------------+------------+
| 18 inch teddy bear |      11.99 |
+--------------------+------------+
1 row in set (0.00 sec)

将前面两个条件 用 圆括号 括了起来,

因为圆括号具有比AND和OR更高的优先级。


5.2 IN操作符

指定条件范围,范围中的每条件都可进行匹配。

mysql> SELECT prod_name, prod_price
    -> FROM products
    -> WHERE vend_id IN ('DLL01', 'BRS01')
    -> ORDER BY prod_name;
+---------------------+------------+
| prod_name           | prod_price |
+---------------------+------------+
| 12 inch teddy bear  |       8.99 |
| 18 inch teddy bear  |      11.99 |
| 8 inch teddy bear   |       5.99 |
| Bird bean bag toy   |       3.49 |
| Fish bean bag toy   |       3.49 |
| Rabbit bean bag toy |       3.49 |
| Raggedy Ann         |       4.99 |
+---------------------+------------+
7 rows in set (0.00 sec)

IN操作符 完成了 与OR操作符 相同的功能

IN的优点:

1. 有许多合法操作符时,IN操作符更加直观

2. 在与其他AND 和 OR 组合使用IN时,求值顺序更容易管理

3. IN操作符一般比组OR操作符执行更快

4. IN的最大优点是:可以包含其他 SELECT 语句,能够更加动态地建立WHERE子句。


5.3 NOT 操作符

NOT操作符只有一个功能:否定其后所跟的任何条件

NOT 从来不单独使用,它总是与其他操作符一起使用

尤其是在复杂的子句中,NOT非常有用。

例如:与IN操作符联合使用时,NOT可以非常简单找出与条件列表不匹配的行。

MariaDB支持使用NOT否定IN、BETWEEN和EXISTS子句。

大多数DBMS允许NOT否定任何条件。

NOT 有时也可用<>操作符来完成

mysql> SELECT prod_name
    -> FROM products
    -> WHERE NOT vend_id = 'DLL01'
    -> ORDER BY prod_name;
+--------------------+
| prod_name          |
+--------------------+
| 12 inch teddy bear |
| 18 inch teddy bear |
| 8 inch teddy bear  |
| King doll          |
| Queen doll         |
+--------------------+
5 rows in set (0.00 sec)

mysql> SELECT prod_name
    -> FROM products
    -> WHERE vend_id <> 'DLL01'
    -> ORDER BY prod_name;
+--------------------+
| prod_name          |
+--------------------+
| 12 inch teddy bear |
| 18 inch teddy bear |
| 8 inch teddy bear  |
| King doll          |
| Queen doll         |
+--------------------+
5 rows in set (0.00 sec)

《正则表达式必知必会》读书笔记(代码片段)

注:《正则表达式必知必会》这本书很适合入门正则表达式,比网上很多教程都适合。其实正则表达式主要学习的就是各种元字符的使用,最后搭配起来就是一个完整的正则表达式。前8章重点学习掌握;第9章也... 查看详情

正则表达式必知必会读书笔记

架构图模拟小案例1.匹配美元 查看详情

mysql必知必会读书笔记(代码片段)

...8.3小结本文纯粹就是小杰为了更加全面的了解学习mysql的读书笔记,小杰觉得这本书写的相当不错,感兴趣的朋友可以去读阅。小杰没有全读,只是读那种小杰不熟悉的知识点,但是这本书是真心写的超赞.小杰在文末也会附上它的pdf... 查看详情

《正则表达式必知必会》读书笔记

《正则表达式必知必会》读书笔记 *正则表达式入门1.正则表达式的两种基本用途:搜索和替换。2.正则表达式是一些用来匹配和处理文本的字符串。小结:正则表达式是文本处理方面功能最强大的工具之一,正则表达式语言... 查看详情

更新完毕正则表达式必知必会读书笔记

第二章匹配单个字符正则表达式可以包含纯文本(甚至可以是只包含纯文本)。绝大多数正则表达式引擎默认行为只是返回第1个匹配结果,但是正则有办法实现全部匹配。在JavaScript中,可选是g。正则默认区分大小写,如果不可... 查看详情

更新完毕正则表达式必知必会读书笔记

第二章匹配单个字符正则表达式可以包含纯文本(甚至可以是只包含纯文本)。绝大多数正则表达式引擎默认行为只是返回第1个匹配结果,但是正则有办法实现全部匹配。在JavaScript中,可选是g。正则默认区分大小写,如果不可... 查看详情

mysql必知必会(代码片段)

姊妹篇——Hive必知必会(数据仓库):https://hiszm.blog.csdn.net/article/details/119907136文章目录第一章:数据库基础基本概念什么是SQL第二章:MySQL简介第三章:了解数据库和表第四章:检索数据SELECT语句第五章:... 查看详情

省时提效!5个必知必会的sql窗口函数!(代码片段)

SQL是数据世界中的通用语言,是作为数据科学人员必备技能。它之所以如此重要,是因为许多数据探索、数据操作、管道开发和仪表板创建都是通过SQL完成的。想要利用SQL高效处理数据任务,掌握一些窗口函数非常有... 查看详情

mysql学习--mysql必知必会(代码片段)

?上图为数据库操作分类:??下面的操作參考(mysql必知必会)创建数据库运行脚本建表:mysql>createdatabasemytest;QueryOK,1rowaffected(0.07sec)mysql>showdatabases;+--------------------+|Database|+--------------------+|infor 查看详情

mysql必知必会(初级篇)(代码片段)

mysql1.基本概念2.SQL语言2.1DCL(数据控制语言)2.1.1创建用户2.1.2使用grant命令给用户授权2.1.3使用revoke命令撤销权限2.2DDL(数据定义语言)2.2.1mysql常用约束类型2.2.2使用alter命令修改表结构2.2.3使用drop命令删除表2.3DML(数据操纵语言)2.3.1使... 查看详情

mysql必知必会,详尽入门,一文帮你学会sql必知必会(代码片段)

目录前言数据库的概念和术语SQL语言和组成DDLshow: 展示当前已有的数据库或者表create:创建一个数据库或者一个表 drop:删除表、数据库对象或者视图alter:修改现有的数据库对象,例如 修改表的属性或者字段(... 查看详情

mysql的必知必会------初识mysql(代码片段)

目录数据库简介MySQL简介MySQL的操作库操作基本数据类型字符串类型日期类型基础表操作一些小结和建议建表练习参考代码写在最后的话数据库简介我们都知道MySQL是数据库的一种,那么数据库是什么呢?数据库其实就是通过各种数... 查看详情

mysql的必知必会------初识mysql(代码片段)

目录数据库简介MySQL简介MySQL的操作库操作基本数据类型字符串类型日期类型基础表操作一些小结和建议建表练习参考代码写在最后的话数据库简介我们都知道MySQL是数据库的一种,那么数据库是什么呢?数据库其实就是通过各种数... 查看详情

mysql的必知必会------初识mysql(代码片段)

目录数据库简介MySQL简介MySQL的操作库操作基本数据类型字符串类型日期类型基础表操作一些小结和建议建表练习参考代码写在最后的话数据库简介我们都知道MySQL是数据库的一种,那么数据库是什么呢?数据库其实就是通过各种数... 查看详情

hive必知必会(代码片段)

hive: 基于hadoop,数据仓库软件,用作OLAPOLAP:onlineanalyzeprocess 在线分析处理OLTP:onlinetransactionprocess在线事务处理 事务: ACID A:atomic 原子性 C:consistent 一致性 I:isolation 隔离性 D:durability 持久性 1读未提交   脏读 //事务... 查看详情

crypto必知必会(代码片段)

crypto必知必会最近参加了个ctf比赛,在i春秋,南邮方面刷了一些crypto密码学题目,从中也增长了不少知识,在此关于常见的密码学知识做个小总结!Base编码Base编码中用的比较多的是base64,首先就说一下Base64编码方式将字符串以... 查看详情

springmvc--必知必会(代码片段)

  SpringMVC基于模型--视图--控制器(Model-View-Controller,MVC)模式实现,属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。它通过一套注解,让一个简单的Java类成为处理请求的控制器,而无需实现任何接口。同时它还支持... 查看详情

h5系列之history(必知必会)(代码片段)

H5系列之History(必知必会)目录概念兼容性属性方法H5方法概念理解HistoryApi的使用方式目的是为了解决哪些问题作用:ajax获取数据时,可以改变历史记录,从而可以使用浏览器的后退和前进。【】规范地址:http://www.w3.org/TR/html5... 查看详情