sql语法学习

在工作之初,知道数据库是保存数据的地方,但是要去查询数据,只能通过表提供的筛选功能进行查询,想要一次查询、筛选多组数据内容,不知道怎么办,看到开发大佬们,运行几句语句,就能轻松的查到需要的数据,当场羡慕.jpg,所以也决定要学习好sql查询语句,能在测试造数,核实数据的时候,自己编写查询语句,给开发描述bug的时候,也不需要一大堆的中文堆砌,因为我发现,扔一串查询语句,远远比一堆中文清晰明了。

数据库表

一个数据库有一张或者多个表,每个表都有一个名字标识,每张表的数据都有一个唯一的标识。
学习的链接传送门:http://www.w3school.com.cn/sql/

快速了解数据表的关系

1.找开发问,自己拿小本本记着
2.自己查资料:开发表设计资料,数据库的资料以及产品需求
当然了,方法一应该是一个最笨的方法,但是估计最简单直接,所以我一开始是适用的方法一,但是随着自己的成长(这个说法有点假),了解了产品需求的同时,了解了数据库表的设计资料,再查看一下DDL(数据定义语言),不明白的地方再找开发大佬指导,提升了自身的本领不是?

查看DDL的方法:

找到对应的表,右键--查看对象信息即可,能查到对应表的每个字段表示什么意思

查询语句

1.select 从表中选取数据

select 列名称 from 表名称
select *from 表名称

*:选取所有列

2.select distinct 选择的数据去掉重复值

SELECT DISTINCT   列名称  from  表名称;

3.where语句:有条件的筛选数据

SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

运算符:=,<>(不等于),>,<,>=,<=,between,like
like:一般跟着正则表达式做一些模糊查询,比如注册邮箱有@163,@126等,只需要查询@163的用户,就用到模糊查询

SELECT * FROM 表名称 WHERE mail LIKE '%@163.com'; 

4.and & or 语句:基于一个条件的记录进行过滤

SELECT * FROM 表名称 WHERE 列名称=1 AND 列名称=2;
SELECT * FROM 表名称 WHERE 列名称=1 OR 列名称=2;
SELECT * FROM 表名称 WHERE (列名称=1 OR 列名称=2) AND 列名称2=1 【结合使用】

5.order by 排序

order by 列名称:顺序排序
order by 列名称 desc : 倒序排列

insert into 语句

向表中插入新的行

INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

update 语句

更新表中的数据

UPDATE 表名称 SET 列名称 = new WHERE 列名称 = old:更新某一列数据
UPDATE 表名称 SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson':更新一行中若干列

delete 语句

删除表的行

DELETE  FROM 表名称 WHERE 列名称= 1 :删除“列名称=1”的行
DELETE  FROM 表名称/DELETE * FROM 表名称:删除所有行

top 指令

规定返回的记录的数目,比如查询出来的数据有几千条数据,此时top可以规定只返回10条

SELECT TOP 10 * FROM 表名称  WHERE mail LIKE '%@163.com';
SELECT TOP 50 percent  * FROM 表名称  WHERE mail LIKE '%@163.com'; 返回50%的数据

like 操作符

SELECT * FROM 表名称 WHERE City LIKE 'N%':筛选city以 【N开头】的行
SELECT * FROM 表名称 WHERE City LIKE '%g':筛选city以 【g结尾】的行
SELECT * FROM 表名称 WHERE City LIKE '%lon%':筛选city【包含lon】的行
SELECT * FROM 表名称 WHERE City not  LIKE '%lon%':筛选city【不包含lon】的行

通配符:

WHERE City LIKE 'Ne%:筛选city【以Ne开头】的行
WHERE City LIKE '%lond%':筛选city【包含lond】的行
WHERE FirstName LIKE '_eorge':筛选名字【名字的第一个字符之后是 "eorge" 】的行
WHERE LastName LIKE 'C_r_er':筛选名字【以 "C" 开头,然后是一个任意字符,然后是 "r",然后是任意字符,然后是 "er": 】的行
WHERE City LIKE '[ALN]%':选取居住的城市以 "A" 或 "L" 或 "N" 开头的人
WHERE City LIKE '[!ALN]%':选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人

_:只能匹配一个字符; [charlist]:匹配字符

in 操作符

在where中规定多个值

SELECT * FROM  表名称 WHERE allmeter in(1000,2000);

between 操作符

在where中筛选,介于两个值之间的数据

SELECT *from 表 WHERE id BETWEEN 11 AND 15; 筛选id在[11,15]之间的数据。
可以为文本,日期等,是否包含11,15 取决于各个数据库的差异
SELECT *from 表 WHERE id  not BETWEEN 11 AND 15; 筛选id不在[11,15]之间的数据

AS 操作符

1.指定别名,连表查询的时候使得我们的语句更容易阅读

SELECT p.title,q.uid,q.prize FROM activity AS p,user AS q WHERE p.id=11;

筛选id=11的用户的uid,prize以及activity的title
2.给一个列指定别名

SELECT id as abc,create as qwe FROM activity;

从表activity中筛选id,create,并分别命名为abc,qwe

join操作符

根据两个或者多个表之间的关系,从这些表中查询数据,这个在多张表查询的时候,特别实用

数据库中表通过键将彼此联系起来,主键是一个列,在这个列中,每一行的值都是唯一的,在表中,每个主键都是唯一的。目的是,在不重复表的所有数据的情况,把表的数据,交叉捆绑在一起

筛选id=11的用户的uid,prize以及activity的title
方法一:连表查询

SELECT p.title,q.uid,q.prize FROM activity AS p,user AS q WHERE p.id=11;

方法二:join查询

SELECT *FROM activity as o JOIN user as b
ON o.id = b.id
WHERE o.challenge_id=28

left join ,right join ,full join

union 、union all 操作符

用于合并两个或者多个select语句的结果,注意是select语句必须拥有相同数量的列,列的数据类型也要相似,且顺序也要必须相同

SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA

列出中国+美国的人员,此时会去重处理,如果要全部显示,用union all

select into语句

创建表的备份复件,从表中选取数据,然后把数据插入到另一个表中,用于创建表的备份或者对记录进行存档。(这个暂时不敢尝试)

select *into person_backup from person

备份person表,备份表为person_backup

SELECT   *INTO Persons IN 'Backup.mdb'   FROM Persons

in:向另一张表Backup.mdb拷贝表

SELECT LastName,FirstName INTO Persons_backup FROM Persons

拷贝某些域

SELECT LastName,Firstname INTO Persons_backup FROM Persons WHERE City='Beijing'

从 "Persons" 表中提取居住在 "Beijing" 的人的信息,创建了一个带有两个列的名为 "Persons_backup" 的表

group by

用于结合合计函数,根据一个或多个列对结果集进行分组。

SELECT uid,SUM(pay_amount) FROM user_info GROUP BY uid ORDER BY pay_amount DESC;

筛选每个用户支付总金额,并按照总金额进行倒序排列

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容