找回密码
 加入
搜索
查看: 2683|回复: 8

[原创] 一些 SQL 数据库 基础查询语句及语法

  [复制链接]
发表于 2016-10-30 19:33:16 | 显示全部楼层 |阅读模式
有不足或不对的地方,请指出,大家共同探讨吧.


常规查询
        "SELECT * FROM 高二期中考试成绩表;"  ;查询 高二期中考试成绩表  所有列所有行的(全部)数据
        "SELECT  姓名,分数 FROM 高二期中考试成绩表;"  ;查询所有学生的姓名和他们的相应的考试分数
       
       
复合(高级)查询
        "SELECT 班级, 姓名 FROM 高二期中考试成绩表 where 成绩 = '及格';"  ;查询成绩及格的学生,显示其班级和姓名
        "SELECT 班级, 姓名 FROM 高二期中考试成绩表 where 成绩 = '不及格' and 分数 <= 30;" ;查询不及格且不高于30分的学生, 显示其班级和姓名
        "SELECT 班级, 姓名 FROM 高二期中考试成绩表 where 成绩 = '优良' or 分数 >= 80;"    ;查询成绩优良,或者是不少于79分的学生...
        "SELECT 班级, 姓名 FROM 高二期中考试成绩表 where 分数 between 60 and 100;"     ;查找分数在60和100之间的学生....
       
        "SELECT * FROM 高二期中考试成绩表 WHERE 姓名 LIKE '张%';"
        ;查询所有姓"张"的学生的所有考试情况, % 是通配符,代表一个或多个任意字符, _  代表一个任意字符
       
        "SELECT 姓名 FROM 高二期中考试成绩表 WHERE 姓名 LIKE '[张赵李]%';"
        ;查询所有姓"张"和姓"赵",还有姓"李"的学生...     [张赵李]  和 [^张赵李] 这两组字符组合集,意义相反
       
       
        "SELECT COUNT(姓名) FROM 高二期中考试成绩表;"       ;统计参加考试的学生总人数
        "SELECT DISTINCT 成绩 FROM 高二期中考试成绩表;"     ;查询成绩分为几等,显示各等成绩的名称(不及格,及格,优良...各值只显示一次)
        "SELECT COUNT(DISTINCT  成绩) FROM 高二期中考试成绩表;"   ;查询成绩分为几等, 返回确切的数字
       
        "SELECT TOP 30 * FROM Persons ORDER BY 分数 DESC;"
        ;查询考试分数是前30名的数据, (ORDER BY 分数 DESC ;  分数以降序排列,所有列的数据默认为升序)


查询并获取数据的简约示例(抱歉,无实质数据库文件,所以无正确输出结果,只能作思路参考):
#include<sqlite.au3>
Local $aRow, $hQuery
_SQLite_Startup()
If @error Then Exit -1
_SQLite_Open('高二期中考试成绩表.db')
If @error Then Exit -2
_SQLite_Query(-1, '"SELECT TOP 30 * FROM Persons ORDER BY 分数 DESC;"') ;开始相关查询
While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK ; = $SQLITE_OK 即等于查到了数据
        ;一次获取一行数据, 注意 $aRow 是个数组, 查了多少列的数据,就有多少个元素(多少维).
        ;假设要把查询结果显示在ListView中时,可以像下面编写代码:
        Local $Item = ''
        For $i = 0 To UBound($aRow) - 1
                $Item &= $aRow[$i] & '|' 
        Next
        ConsoleWrite($Item & @CRLF)
        ;GUICtrlCreateListViewItem(StringTrimRight($Item, 1), $ListView)
WEnd

评分

参与人数 1金钱 +10 收起 理由
heroxianf + 10 好东西

查看全部评分

发表于 2016-10-30 19:42:15 | 显示全部楼层
用autoit来写sql 感觉没什么意义啊。
而且你还需要登陆了才能输入。
发表于 2016-10-30 22:26:26 | 显示全部楼层
本帖最后由 heroxianf 于 2016-10-30 22:51 编辑

回复 1# Alam

没能成功,现在录入是学会了,查询和读取不会,请指点一二。

#include <MsgBoxConstants.au3>
#include <SQLite.au3>
;~ #include <SQLite.dll.au3>
#AutoIt3Wrapper_UseX64=n
Local $aRow, $hDb, $hQuery
Local $dbFile = @ScriptDir & '\MY1.DB'

_SQLite_Startup()
If @error Then Exit -1
$hDb = _SQLite_Open($dbFile)
If @error Then Exit -2
_SQLite_Query(-1, "SELECT * FROM settings WHERE key 2;", $hQuery) ;开始相关查询
While _SQLite_FetchData($hQuery, $aRow) = $SQLITE_OK ; = $SQLITE_OK 即等于查到了数据
        ;一次获取一行数据, 注意 $aRow 是个数组, 查了多少列的数据,就有多少个元素(多少维).
        ;假设要把查询结果显示在ListView中时,可以像下面编写代码:
        Local $Item = ''
        For $i = 0 To UBound($aRow) - 1
                $Item &= $aRow[$i] & '|'
        Next
        ConsoleWrite($Item & @CRLF)
        ;GUICtrlCreateListViewItem(StringTrimRight($Item, 1), $ListView)
WEnd


数据是这样储存的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2016-10-30 23:13:29 | 显示全部楼层
改成这样可以查出数据了。
_SQLite_Query(-1, "SELECT * FROM settings WHERE key = 2;", $hQuery) ;开始相关查询
发表于 2016-10-31 17:22:03 | 显示全部楼层
回复 4# heroxianf

Where 欄位='某個值'   這是 SQL語法問題  你寫成  Where  欄位  值

當然過不了....
 楼主| 发表于 2016-10-31 17:57:58 | 显示全部楼层
回复 3# heroxianf

查询语句应该根据需要来编写.
首先我们要明白查询的目的, 比如(根据3楼表的数据):
查询整个表的数据时, "SELECT * FROM settings"
只输出 key 列时,      "SELECT key FROM settings"
只输出前5条记录时,   "SELECT * FROM settings where rowid < 6"

"SELECT * FROM settings WHERE key = 2;"
这是输出 key = 2 的那些行, 如果有多行key = 2 )
发表于 2016-10-31 23:09:48 | 显示全部楼层
回复 6# Alam


    太谢谢了,请问哪里可以学习这些数据库的语句?
 楼主| 发表于 2016-11-1 20:03:19 | 显示全部楼层
回复 7# heroxianf
http://www.w3school.com.cn/sql/sql_syntax.asp
发表于 2019-9-7 16:56:35 | 显示全部楼层
SELECT * FROM  get到了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-19 16:48 , Processed in 0.084716 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表