SQL自学笔记.docx
- 文档编号:27449915
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:10
- 大小:20.57KB
SQL自学笔记.docx
《SQL自学笔记.docx》由会员分享,可在线阅读,更多相关《SQL自学笔记.docx(10页珍藏版)》请在冰豆网上搜索。
SQL自学笔记
SQL语言自学笔记
SQL是StructureQueryLanguage的缩写,中文译为结构化查询语言,用于存取数据以及查询、更新和管理关系型数据库。
SQL语言是一种非过程语言,它本身不具备执行能力,需要其他语言协助执行,这与正则表达式有点相似。
目前SQL是关系型数据库标准语言,也是使用最广泛的一种数据库操作语言。
SQL语言比较通俗,很容易理解和编写
从功能角度看,SQL语言可分为数据定义语言、数据查询语言、数据操作语言、数据控制语言和事物控制语句。
SQL语言分类列表
分类
说明
数据定义语言
DDL(DataDefinitionLanguage),用来创建、修改和删除数据表、视图等数据库对象。
如:
creat,alter,drop
数据查询语言
DQL(DataQueryLanguage),用来从数据库中查询符合条件的数据。
如:
select语句
数据操作语言
DML(DataManipulationLanguage),用来对数据库中的数据进行操作,如:
Insert,update,delete
数据控制语言
DCL(DataControlLanguage),用来管理数据库中各种对象的访问权限。
事务控制语言
TCL(TransactControlLanguage),用来监控数据库中各种操作,避免数据操作时发生混乱或错误
(1)SQL语言不区分大小写,且不受所引用的语言的影响。
(2)在SQL语法中,表明、字段名不需要加引号,不管是中文名称还是英文名称。
(3)输入的字段值是字符串或备注等,要加单引号。
(4)在SQLSERVER数据库中,如果要使用日期,需要子日期前后加单引号。
(5)在SQL字符串中,所有的标点符号都必须是英文的。
语言之DQL语言
实例数据表:
产品
产品名称
单价
订购量
再订购量
苹果汁
19
75
25
牛奶
18
2
25
4.1查询表中所有数据
select*from产品
注:
“*”表示所有记录
4.2查询指定列
select产品名称,单价from产品
注:
字段列表之间用逗号隔开,表示返回这些字段中的数据。
4.3查询前几条记录
selecttop10产品名称,单价from产品
注:
返回产品表中前10条记录的产品名称和单价
4.4派生字段查询
(1).派生字段是利用表中原有字段经过计算产生一个新的字段,常用来显示字段数据汇总。
(2).select产品名称,单价,订购量,再订购量,(单价*(订购量+再订购量))as总订购资金from产品
(3).用关键字as为字段起别名
(4).派生字段仅是一个临时字段,数据库中不存在该字段,但如果把查询数据回写如数据库时,该字段也被写入。
(5).结果:
牛奶18225180即(18*(75+25))
4.5查询指定条件记录
(1).select*from产品where在订购量=25
(2).select*from产品where产品名称=‘牛奶’
(3).注:
查询指定条件的记录一般使用where子句,在where后面加上要查询的条件,where子句可以包含任何逻辑运算,只要返回值为True或false即可
(4).SQL语言比较运算符
=、>、<、>=、<=、<>(不等于)
(5).SQL语言逻辑运算符
运算符
说明
and
逻辑与,表示连个条件都为true时返回true,否则返回false
or
逻辑或,表示只有一个条件为true,即返回true,否则返回false
Not
逻辑非,如果条件为true,就返回false.
(6).SQL的一些特殊运算符
运算符
说明
Between
介于。
。
。
。
。
之间
NotBetween
不介于。
。
。
。
之间
In
在指定列值范围内
NotIn
不在指定列值范围内
IsNull
记录值为空的记录
IsNotnull
记录值不为空的记录
Like
匹配查询
(7).Like常用通配符列表
通配符
说明
%
任何长度的字符串
-(下划线)
任意一个字符
[](中括号)
某个范围类的一个字符,如[123],表示从1,2,3中取一个值;[a-z]表示从小写字母a-z之间取一个字符
(8).查询订购量为10,20,30的所有产品记录
select*from产品where订购量in(10,20,30)
(9).在供应商表中,查询没有填写传真号的记录
select*from供应商where传真isnull
(10).查询产品名称中含有肉字的产品记录
select*from产品where产品名称like‘%肉%’
(11).查询产品名称中以肉字结尾的产品记录
select*from产品where产品名称like‘%肉’
(12).查询产品单位数量为每箱1~29瓶的所有记录
Select*from产品where单位数量like‘每箱[12][09]瓶’
4.6查询记录排序
查询记录排序一般使用OrderBy子句,在orderby子句后面加上要进行排序的字段,默认为升序(asc),降序为desc。
列子如下:
Select*from产品where单位数量like‘每箱[12][09]瓶’orderby单价desc
4.7select聚合查询
聚合查询就是根据Sql提供的聚合函数来计算查询记录。
常用的聚合函数包括:
sum,avg,count,max,min函数
计算某个查询字段的总和,如:
selectsum(单价)from产品where订购量>100
计算某个查询字段的平均值
selectavg(单价)from产品where单位数量=20
计算某个查询字段的记录个数
selectcount(单价)from产品where订购量=20
计算某个字段的最大值。
selectmax(单价)from产品where订购量>100
注:
查询订购量>100的记录,然后查出其中单价最大的记录
计算某个字段的最小值
selectmin(单价)from产品where再订购量<10
4.8select分组查询
1.分组查询就是使用GroupBy子句对查询字段进行分组,或附带having子句查询指定条件的组。
2.select供应商id,sum(库存量)from产品groupby供应商id
注:
上述语句是根据产品表中的供应商id字段进行分组(id相同的为一组),然后计算每组的总库存量。
3.注意事项:
(1)where子句必须放在Groupby子句前面
(2)select子句只能选择分组字段或聚合字段
(3)having子句必须房子groupby子句之后,且只能包含分组字段或聚合函数,例如:
select库存量,avg(单价)from产品groupby库存量having库存量=112
或
select库存量,avg(单价)from产品where库存量=112groupby库存量
上述语句的功能是:
根据产品表中的库存量字段进行分组,然后计算库存量为112的所有记录的平均值,并显示计算结果,此时返回的结果不是一个值,而是一条记录。
4.9select多表查询
多表查询就是根据多个表之间的内在联系,使用一个select语句同时从多个数据表中获取数据。
1.select公司名称,sum(库存量)from产品,供应商where产品·供应商id=供应商·供应商id
2.
(1)内连接 join/innerjoin 只连接两表中匹配的行
(2)外连接(左外连接/右外连接/全外连接)
leftouterjoin/leftjoin 以左表为主,返回左表所有行及右表匹配行
rightouterjoin/rightjoin 以右表为主,返回右表所有行及左表匹配行 fullouterjoin/fulljoin 包含左右表中全部行,不计算是否匹配
(3)交差连接 crossjoin生成笛卡尔积 返回两表中记录数之乘积条记录.所以交差连接中没有on子句
3.注意事项:
(1)必须保证要查询的多个表之间有连接,即存在公共字段,且公共字段必须在一个表中是主键.
(2)在sql字符串的from子句中列出所有连接的表名,并用逗号隔开.
(3)在sql字符串的where子句中用等号把各个表中的公共字段连接在一起.,表名与字段之间用点号表示所属关系.
(4)在sql字符串的select字句中也可以用点号表明每个字段所属的表.
(5)也可为多个表起别名,方便引用
selectb·公司名称,sum(a·库存量)as库存总量from产品a,供应商bwherea··id
(6)当多个表建立连接之后,可以把多个表当作一个表来操作
4.10select嵌套查询
(1)在select查询语句里可以嵌入select查询语句,称为嵌套查询。
(2)实例
A.显示那些jobID与雇员141相同的雇员。
SELECTlast_name,job_id
FROMemployees
WHEREjob_id=(SELECTjob_id
FROMemployees
WHEREemployee_id=141);
B.显示jobID与雇员141相同,并且薪水高于雇员143的那些雇员
SELECTlast_name,job_id,salary
FROMemployees
WHEREjob_id=(SELECTjob_id
FROMemployees
WHEREemployee_id=141)
ANDsalary>(SELECTsalary
FROMemployees
WHEREemployee_id=143);
C.带in的嵌套查询
SELECTemployee_id,
last_name
FROMemployees
WHEREemployee_idNOTIN
(SELECTmanager_id
FROMemployees)
(3)说明
A.一个子查询必须放在圆括号中。
B.将子查询放在比较条件的右边以增加可读性。
C.子查询不包含ORDERBY子句。
对一个SELECT语句只能用一个ORDERBY子句,并且如果指定了它就必须放在主SELECT语句的最后。
D.放在select下的子查询的返回值必须是一个具体值,
from后面也可以加子查询;
having后面也可以加子查询;
orderby后面也可以;
5.SQL语言之DML语言
insert插入数据
(1)insert语句在SQL语言中表示向数据表中插入新的记录.
(2)其语法如为
insertinto表名(字段1,字段2,….)values(字段1的值,字段2的值,…)
(3)说明
A.利用上面语句可以给表中全部或部分字段赋值,表名和Values后面括号中的列表必须是一一对应的,列表之间用逗号隔开。
B.如果字段值类型为字符串,日期或备注类型,则应把字段值用单引号引起;如果是字段值类型为布尔型,则字段值为true或false;如果是自动编号,则不需要赋值。
若为数值类型,则不需要加引号。
C.如果保留默认值,则字段值为DEFAULT;如果输入空值,则字段值为NULL.
D.如果某个字段为必填字段,而Insert语句中没有插入该字段值,则会报错
(4)实例
insertintostudents(姓名,年龄,出生日期)values(‘张三’,18,‘2008-12-1’)
5.2update更新数据
(1)update语句在SQL语句中表示修改数据表中一条或多条记录。
(2)语法结构
update表名set字段1=字段1的值,字段2=字段2的值,….[where条件]
(3)说明
update语句可以更新一条或多条记录,主要根据where条件指定哪些记录,凡是符合where条件的记录都将被更新,如果没有符合条件的记录,则不更新。
(4)实例
update产品set产品名称=‘桃子’,订购量=25where产品idbetween41and20
5.3delete删除数据
(1)delete语句在sql语言中表示删除数据表中一条或多条记录。
(2)语法结构
deletefrom表名[where条件]
(3)说明
根据where条件来确定要删除的记录,如果没有符合where条件,则不删除任何记录。
但如果要省略where条件,将删除所有数据
(4)实例
deletefrom产品where供应商idNotin(12,15,19)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL 自学 笔记