数据库

来源:互联网 发布:西安和沈阳知乎 编辑:程序博客网 时间:2024/06/14 04:25

数据库表和视图的区别

  • 数据库中的数据都是存储在表中的,而视图只是一个或多个表依照某个条件组合而成的结果集 一般来说你可以用update,insert,delete等sql语句修改表中的数据 而对视图只能进行select操作
  • 表示数据库存储的基础 而视图只是为了满足某种查询条件而建立的一个对象

数据库视图

  • 视图是基于sql语句的结果集的可视化的表
CREATE VIEW [Current Product List] ASSELECT ProductID,ProductNameFROM ProductsWHERE Discontinued=NoSELECT * 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子句上的列创建索引

索引的常用种类和创建方法

数据库中的数据类型

  • TINYINT 1字节 小整数值

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个或多个
  • ?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