数据库表和视图的区别
- 数据库中的数据都是存储在表中的,而视图只是一个或多个表依照某个条件组合而成的结果集 一般来说你可以用update,insert,delete等sql语句修改表中的数据 而对视图只能进行select操作
- 表示数据库存储的基础 而视图只是为了满足某种查询条件而建立的一个对象
数据库视图
CREATE VIEW [Current Product List] AS
SELECT ProductID,ProductName
FROM Products
WHERE Discontinued=No
SELECT * FROM [Current Product List]
数据库索引
CREATE INDEX index_name ON table_name(column_name)
CREATE UNIQUE INDEX index_name ON table_name(column_name)
- 在经常需要搜索的列上,可以加快搜索的速度 primary-key 经常用在连接的列上 加快连接的速度 使用where子句上的列创建索引
索引的常用种类和创建方法
数据库中的数据类型
char和varchar nvarchar的区别
- char 固定长度 最长n个字符
- varchar 最大长度为n的可变字符串
- char 效率好一些 varchar 比char节省空间
- varchar是可变字符串 当修改数据时,可能因为长度不够,导致数据迁移
- nvarchar 是按照字符存储数据
where语句
- select * from emp where name=”“
- where子句中的运算符 = > < <> >= <= between in like
- like模糊查询 select * from emp where ename like “M%”
- %表示多个字值 _下划线表示一个字符
- M% 为能配符 以M开头的
- %M% 表示查询包含M的所有内容
- %M_:表示查询以M在倒数第二位的所有内容
order by
- 关键字对于结果集按照一个列或者多个列进行排序
- 降序是desc关键字
update
- update table_name set column1=value1,column2=value2, where some_column=some_value
delete
- delete 语句 用于删除表中的行
- delete from table_name where some_column = some_value
使用通配符的技巧
- 不要过度使用通配符 如果其他操作符能达到相同的目的,应该使用其他操作符
- 在确实需要使用通配符时,除非绝对有必要,否则不要把他们用在搜索模式的开始处,因为把通配符置于搜索模式的开始处,搜索起来是最慢的
正则匹配
- select prod_name from products where prod_name regexp ‘.000’
- 进行or匹配 select prod_name from products where prod_name regexp ‘1000|2000’;
- 匹配几个字符之一 select prod_name from products where prod_name regexp ‘[123] Ton’
- 转义字符 select vend_name from vendors where vend_name regexp ‘\.’;
匹配多个实例
-
-
- ?0个或1个
- {n}指定数目的匹配
- {n,}不少于指定数目的匹配
- {n,m}匹配数目的范围
- select prod_name from products where prod_name regexp ‘\([0-9] sticks?\)’;
- select prod_name from products where prod_name regexp ‘[[:digit:]]{4}’;
定位符
- ^ 文本的开始
- $ 文本的结尾
- [[:<:]]词的开始
- [[:>:]]词的结尾
创建计算阶段
- 执行算数计算 select prod_id, quantity, item_price from orderitems where order_num = 20005;
- select prod_id, quantity, item_price, quantity*item_price as expanded_price from orderitems where order_num =20005;
使用数据处理函数
- 文本处理函数 Left() Length() Locate() Lower() LTrim() Right() RTrim() Soundex() SubString() Upper()
日期处理函数
聚集函数
- 运行在行组上,计算和返回单个值的函数
- AVG() 返回某列的平均值
- COUNT()返回某列的行数
- MAX()返回某列的最大值
- MIN() 返回某列的最小值
- SUM()返回某列值之和
分组数据
- select vend_id, COUNT(*) AS num_prods from products group by vend_id
- 过滤分组 having 过滤分组 select cust_id, COUNT() as orders from orders group by cust_id having COUNT() >= 2;
select 子句顺序
- select
- from
- where
- group by
- having
- order by
- limit