SQL 语句几个理解

1. SELECT * FROM TABLE (产生对象vector )

  1. 重点: Select 是用来形成新对象 vs 不是直接产生成新表格
    (如果产生新表格是需要使用 Seletct * Into newTable From TableName)

  2. Select 产生新对象 .默认是利用表的所有列明 产生新对象

  3. 表格是表格 vs Select 是产生对象vector
    表格 NameList

idNameAgeClass
1Lee18Class.1
2change19Class.1
3Mary17Class.2

Select * From NameList 的效果

struct Student 
{
 int id ;
 string Name;
 int Age;
 string Class;
}
std::vector<Student >  result;  
  1. 挑选新"对象"的变量
    Select id , Name From NameList; // 这里id ,name 没有括号 是因为,没有表明在前
struct Student 
{
int id ;
string Name;
}
std::vector<Student >  result;  

2.Where and / or ( 过滤 选中结果过滤)

重点: Where 是从Select 产生的 std::vector result; 再过滤
(on 是在join内部进行过滤)

  1. Select * From tab Where Name= ‘lee’ and age = 18
    注意where 是使用Select 的result 再进行过滤. 所以必须有变量名

3. Order By 排序

重点 Order By 只是对产生的result 进行个排序
(相当于使用std::sort())

  1. ORDER BY column_name,column_name ASC|DESC;

先Select产生对象 => Where 过滤 => 为了显示一下order by一下

  1. Order By 其实存在意义不大, 事不过是为了显示一下.

4. Insert Into 插入到"表" (不是插入到对象vector)

重点: 是插入到表中
Insert Into TableName (colName1,colName2) Values (v1,v2)
(一旦值前面需要表名了 那么列就要放到括号里面了)

Insert Into NameList(id,Name,age,Class) Vaules(4,“Lisa”, 25,“Class.1”);

5. Updata 更新"表" (不是更新到对象vector)

Update NameList Set age=12, Class= ‘Class.3’ Where id = 4; // 把 id=4 lisa的年龄改为12
(Update 如果没有where 那么,将会把整个表都设置了)

6. Delete (不是删除对象vector)

Delete From Table Where col = XXX
(如果没有where 会把所有内容都删除)

7 join 先拼凑临时表 ,再产生对象

重点 Join 新编个新"表" - (临时新表)
From LTable Inner Join RTable (一直说 From选中表) [Inner Join 产生一个新的临时表]

Inner Join == Join

Left Join

Right Join

7.0 表格

NameList - 姓名列表

idNameAgeClass
1Lee18Class.1
2change19Class.1
3Mary17Class.2

ScoreList - 成绩列表

orderNameScore
1Mary100
2change88
3Lee86
4Tom85
4Jim84

7.1 Inner Join

SELECT * FROM NameList INNER JOIN ScoreList ON NameList.Name=ScoreList.Name
解释

  1. SELECT 是为了最后产生vecotor
  2. FROM 是表明要从一个表中 (临时表也行)
  3. NameList INNER JOIN ScoreList 是两个表相连 Innert 相连
    Inner Join 表示 把On 那列先列出来, 然后其他表格向这个表格对数据
    操作方法 : 把相等的列 放到"中间" 左右表 分列两侧

左表 ----------Name--------------右表

orderAgeClass<—Name—>orderScore
318Class.1Lee863
219Class.1change882
117Class.2Mary1001

7.2 Left Join (类数据扩展)

NameList - 姓名列表

idNameAgeClass
1Lee18Class.1
2change19Class.1
3Mary17Class.2

类扩展家庭住址
HomeInfo - 家庭信息

idaddressNation
1No A StreetFranch
2Street CEngland

用唯一ID 来拼新表.
主要原因,原来的类已经有id,且是唯一,现在就需要新表补充新的信息.
SELECT * FROM NameList LEFT JOIN HomeInfo ON NameList .id = HomeInfo.id;

id ---->NameAgeClassaddressNation
1Lee18Class.1No A StreetFranch
2change19Class.1Street CEngland
3Mary17Class.2NULLNULL

8 约束

1. ID 的 NOT NULL PRIMARY KEY

P_Id int NOT NULL PRIMARY KEY
PRIMARY KEY 默认带有属性 UNIQUE KEY

CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY 
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
)

2. FOREIGN KEY

一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)。

HomeInfo - 家庭信息

Home_idaddressNationid
1No A StreetFranch1
2Street CEngland2

也就是home_id 可以独立管理,而且 id 还必须来自NameList 更加方便管理
CREATE TABLE HomeInfo
(
Home_id int NOT NULL PRIMARY KEY,
address varchar(255) NOT NULL,
Nation varchar(255) NOT NULL,
id int FOREIGN KEY REFERENCES NameList (id)
)

2.1 类数据扩展记录表

重点:

  1. 扩展表需要自己的hode_id – 自动维护方便使用
  2. 扩展表使用id –

3. AUTO_INCREMENT

AUTO_INCREMENT primary key

9.CREATE VIEW

重点:用来延时处理:
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

10 部分 Select 产生vector

SELECT TOP 前50个
SELECT LIMIT 限制
SELECT ROWNUM 行数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值