分享

sql基础语句学习

 静幻堂 2018-08-26
知了猴飞走了 2016-10-13 15:26:10

本文只考虑mysql、SQL Server、Oracle

sql对大小写不敏感

可以把sql分为两部分:数据操作语言(DML)和数据定义语言(DDL)

sql基础语句学习

查询和更新指令构成了SQL的DML部分:select-从数据库表中获取数据,update-更新数据库表中的数据,delete-从数据库中删除数据,insert into-像数据库表中插入数据

sql的数据定义语言(DDL)部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的连接,以及施加表之间的约束。:

sql中重要的DDL语句:

create database-创建数据库

alter database-修改数据库

create table-创建新表

alter table-改变数据库表

drop table-删除表

create index-创建索引(搜索键)

drop index-删除索引

如需从 Company" 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:SELECT DISTINCT Company FROM Orders

以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber(先以Company列为标准进行排列,Company列名称相同的 在以OrderNumber列为标准排列)

以逆字母顺序显示公司名称:SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

以逆字母顺序显示公司名称,并以数字顺序显示顺序号:SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC(先以Company列为标准进行逆字母顺序排列,Company列名称相同的 在以OrderNumber列为标准进行升序排列)

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

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

delete语句用于删除表中的行:delete from person where lastName = ‘Wilson’,删除了lastName为Wilson的那一行所有数据

delete from person,删除了person表中的所有数据

更新某一行的一个列:update person set firstName = ‘fred’ where lastName = ‘wlison’

更新某一行的很多列:update person set firstName = ‘sss’,city = 'nanjing' where lastName = ‘alison’

top子句(只对SQL Server中管用)

top子句用于规定返回的记录的数目,对于拥有数千条数据的大型表来说,top非常有用

只对SQL Server中管用:select top 3 * from goods;

select top 50 percent * from goods;(选取表中前百分之五十的数据)

MySQL:slelect * from goods limit 3;

Oracle:select * from goods ROWNUM <= 3;

like子句(“%”可用于定义通配符、模式中缺少的字符)

select * from goods where goods_name like '%ewq%'

select * from goods where goods_name like 'q%'

select * from goods where goods_name like '%e'

select * from goods where goods_name like 'ewq%qwe'

通配符(在搜索数据库中的数据时,sql通配符可以替代一个或多个字符。sql通配符必须与like运算符一起使用。)

a.%通配符,同上

b._通配符

“_”只能代表一个字符,只是替代了一个字符而已,其他位置字符必须一样

select * from goods where goods_name like '_qwqw'

select * from goods where goods_name like 'q_wqw'

c.[charlist]通配符(貌似对mysql不好使)

select * from goods where goods_name like '[ALN]%';(查找商品名称以A、L、N开头的的商品)

select * from goods where goods_name like '[!ALN]%';(查找商品名称不以A、L、N开头的的商品)

in子句(类似等于)

SELECT * FROM goods WHERE category_id IN (9999904,849) AND goods_name IN ('124','西红柿','青岛啤酒');

类似于

SELECT * FROM goods WHERE id = 1560 OR id = 1564;

between子句(操作符BETWEEN...AND会选取介于两个值之间的数据范围,这些值可以是数值、文本、日期,mysql中的between左右都包括)

SELECT * FROM goods WHERE goods_name BETWEEN '西红柿' AND '青岛啤酒';

SELECT * FROM goods WHERE category_id BETWEEN 99999909 AND 99999911;

having子句

在SQL中增加HAVING子句的原因是,where关键字无法与合计函数一起使用。

select customer,sum(orderPrice) from orders group by customer having sum(orderPrice)< 2000

select customer,sum(orderPrice) from orders where customer='bush' or customer='admin' group by customer having sum(orderprice)>1500

视图view:

视图就像是一个可视化的表

什么是视图:在sql中,视图是基于sql语句的结果集的可视化的表。

视图可以包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库的真实的表中的字段。我们可以向视图添加sql函数、where、join语句,我们也可以提交数据,就像这些来自于某个单一的表。

create view view_name as select column_name(s) from table_name where condition

视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用sql语句来重建数据。

创建视图

CREATE VIEW [Current Product List] AS

SELECT ProductID,ProductName

FROM Products

WHERE Discontinued=No

查看视图

SELECT * FROM [Current Product List]

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多