知了猴飞走了 2016-10-13 15:26:10 本文只考虑mysql、SQL Server、Oracle sql对大小写不敏感 可以把sql分为两部分:数据操作语言(DML)和数据定义语言(DDL) 查询和更新指令构成了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] |
|