《SQL基础教程》第⼆版读书笔记
基于最近⾯试的内容,复习⼀下SQL的基础知识,感觉。
第⼀章数据库和SQL
1、数据库database:存储数据的仓库,通过计算机加⼯⽽成的可以进⾏⾼效访问的数据集合。
2、数据库管理系统DBMS:⽤来管理数据库的计算机系统。可实现多个⽤户同时安全简单地操作⼤量数据。
DBMS的种类(以数据的保存格式分类):
层次数据库HDB:把数据通过层次结构(树形结构)的⽅式表现出来。
关系数据库RDBMS:由⾏和列组成的⼆维表来管理数据,使⽤SQL来操作数据。
⾯向对象数据库OODB:将数据以及对数据的操作集合起来以对象为单位进⾏管理。
XML数据库:
键值存储系统Key-Value Store:⽤来保存查询所使⽤的的主键和值的组合的数据库。常⽤的有MangoDB
图数据库:⽤来存储关系⽹络的数据库,常见的有Neo4j
3、客户端——SQL语句——服务器——操作数据库——返回数据
4、SQL根据操作⽬的可以分为DDL、DML和DCL:
DDL:数据定义语⾔,包括create、drop、alter
DML:数据操作语⾔,包括select、insert、update、delete
DCL:数据控制语⾔,包括commit(确认对数据库中的数据进⾏的变更)、rollback(取消变更)、grant(服务⽤户操作权限)、revoke(取消⽤户的操作权限)
5、SQL的基本书写规则:
sql语句以分号结尾
关键字⼤写、表名的⾸字母⼤写、列名⼩写
在书写⽇期与字符串时,加单引号
6、表的创建:
easyui图标库通过CREATE TABLE 语句创建
表和列的命名要使⽤有意义的⽂字
指定列的数据类型(整数型、字符型、⽇期型等)
INTEGER 整型
CHAR \ VARCHAR(可变长度)
DATE ⽇期型
可在表中设置约束(主键约束和NOT NULL约束等)
对数据进⾏限制或者追加条件
NOT NULL约束
主键约束 PRIMARY KEY
comment 字段备注
DEFAULT 默认值
建表时注意设置默认字符集:default charset=utf8,否则不⽀持中⽂
# 更改已创建好的表格的字符集charset
ALTER TABLE t1 CONVERT TO CHARACTER SET utf8mb4;
7、表的删除和更新:
DROP TABLE 删除表
ALTER TABLE 表名 ADD (COLUMN) \ DROP 在表格中添加列或者删除列
修改列的数据类型:ALTER TABLE 表名 MODIFY 列名 新数据类型;
INSERT INTO 向表格中插⼊数据
表重命名:RENAME TABLE poduct to product;或者ALTER TABLE poduct RENAME TO product;
第⼆章查询基础
1、SELECT语句基础:
AS 设置别名,使⽤中⽂时需要⽤双引号括起来
常数的查询:使⽤字符串或者⽇期常数时,必须使⽤单引号’’;常数将出现在每⼀⾏。
使⽤DISTINCT或者GROUPBY 来删除重复⾏,执⾏过程中NULL也会作为⼀类
DISTINCT 关键字只能⽤在第⼀个列名之前
多列使⽤时,数据组合去重
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-MTw8ud7b-1595076801591)
(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1594711712208.png)] WHERE条件筛选
SELECT <;列名>, ……
FROM <;表名>
WHERE <;条件表达式>;
**执⾏顺序:**⾸先通过WHERE ⼦句查询出符合指定条件的记录,然后再选取出 SELECT 语句指定的列 (选取⾏再输出列)注释的书写⽅法:
⼀⾏注释:-- 注释内容
多⾏注释:/* 注释内容 */
2、算数运算符和⽐较运算符
算数运算符:
算数运算符:+、-、*、/ 加减乘除
包含NULL 的计算,结果都为NULL
⽐较运算符:
⽐较运算符:=、<、>、<>、>=、<=
字符串数据⽐较时按照字典顺序进⾏排序
不能对NULL值进⾏⽐较 ,可使⽤IS NULL 或者 IS NOT NULL
3、逻辑运算符
SQL中的逻辑运算是包含对真、假和不确定进⾏运算的三值逻辑
NOT(取反)、AND(并且、逻辑积)、OR(或者、逻辑和)
AND运算符优先于OR运算符,多条件查询时需注意逻辑顺序
第三章聚合与排序
1、对表进⾏聚合查询
聚合函数包括COUNT、SUM、AVG、MAX、MIN
MAX / MIN 函数可适⽤于任何数据类型的列
SUM / AVG 函数只能对数值型的列使⽤
可⽤于SELECT⼦句、HAVING⼦句、以及ORDER BY ⼦句(可⽤别名)
聚合函数会对NULL以外的对象进⾏汇总
COUNT函数的结果根据参数的不同⽽不同。 COUNT(*)会得到包含NULL的数据⾏数,⽽COUNT(<;列名>)会得到NULL之外的数据⾏数。
DISTINCT去重操作,函数间可组合使⽤
mysql入门基础教程2、对表进⾏分组
GROUP BY ⼦句⽤于分组,组合使⽤聚合函数时其结果是⽆序的
聚合键中包含NULL时,在结果中会以“不确定”⾏(空⾏)的形式表现出来
使⽤GROUP BY 分组后,SSLECT⼦句中只能存在以下三种元素:
常数
聚合函数
GROUP BY ⼦句中指定的列名(聚合键/分组键)
3、为聚合结果指定条件
使⽤COUNT函数等对表中数据进⾏汇总操作时,为其指定条件的不是WHERE⼦句,⽽是HAVING⼦句
聚合函数可以在SELECT⼦句、 HAVING⼦句和ORDER BY⼦句中使⽤
HAVING⼦句要写在GROUP BY⼦句之后
WHERE⼦句⽤来指定数据⾏的条件, HAVING⼦句⽤来指定分组的条件
4、对查询结果进⾏排序
使⽤ORDER BY⼦句对查询结果进⾏排序。
在ORDER BY⼦句中列名的后⾯使⽤关键字ASC可以进⾏升序排序(默认),使⽤DESC关键字可以进⾏降序排序。
ORDER BY⼦句中可以指定多个排序键。
排序健中包含NULL时,会在开头或末尾进⾏汇总。(NULL不能使⽤⽐较运算符)
ORDER BY⼦句中可以使⽤SELECT⼦句中定义的列的别名。(执⾏顺序在SELECT⼦句后)
ORDER BY⼦句中可以使⽤SELECT⼦句中未出现的列或者聚合函数。
ORDER BY⼦句中不能使⽤列的编号。
第四章数据更新
1、数据的插⼊ INSERT
INSERT INTO <;表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);
原则上,执⾏⼀次INSERT 语句插⼊⼀⾏数据。
多⾏INSERT时,每⾏数据()之间⽤逗号隔开(不易于查错)。
省略INSERT语句中的列名,就会⾃动设定为该列的默认值(没有默认值时会设定为NULL)。
插⼊NULL时需要在VALUES⼦句的值清单中写⼊NULL。
插⼊默认值可以通过两种⽅式实现,即在INSERT语句的VALUES⼦句中指定DEFAULT关键字(显式⽅法),或省略列清单(隐式⽅法)。——推荐使⽤显式⽅法
使⽤INSERT…SELECT可以从其他表中复制数据。
INSERT语句的SELECT语句中,可以使⽤WHERE⼦句或者GROUP BY⼦句等任何SQL语法
使⽤ORDER BY⼦句并不会产⽣任何效果
2、数据的删除 DELETE
如果想将整个表全部删除,可以使⽤DROP TABLE语句,如果只想删除表中全部数据,需使⽤DELETE语句或者TRUNCATE语句。
DELETE FROM 表名;
TRUNCATE TABLE 表名;
如果想删除部分数据⾏,只需在WHERE⼦句中书写对象数据的条件即可。通过WHERE⼦句指定删除对象的DELETE语句称为搜索型DELETE语句。
DELETE FROM 表名 WHERE 条件;
3、数据的更新 UPDATE
radio gagaUPDATE <;表名>
SET <;列名> = <;表达式>
WHERE <;条件>;
更新部分数据⾏时可以使⽤WHERE来指定更新对象的条件。通过WHERE⼦句指定更新对象的UPDA
TE语句称为搜索UPDATE语句。
使⽤UPDATE语句可以将值清空为NULL(但只限于未设置NOT NULL约束的列) 。国密sm2算法基于openssl实现
同时更新多列时,可以在UPDATE语句的SET⼦句中,使⽤逗号分隔更新对象的多个列 。
-- 使⽤逗号对列进⾏分隔排列
UPDATE Product
SET sale_price = sale_price * 10,
purchase_price = purchase_price / 2
WHERE product_type = '厨房⽤具';
全国计算机c语言二级-- 将列⽤()括起来的清单形式(在MYSQL中执⾏报错)
UPDATE Product
SET (sale_price, purchase_price) = (sale_price * 10, purchase_price / 2)
vba判断是否在列表内WHERE product_type = '厨房⽤具';
4、事务
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论