SQL语言基础

采集自百度百科&某人博客(sorry啊我找不到了)

1)语言简介

▪ 应用
结构化查询语言(Structured Query Language), 最重要的关系数据库操作语言, 用于存取数据以及查询、更新和管理关系数据库系统
▪ 支持标准
ISO在1992年11月公布了SQL92标准,把数据库分为三个级别:基本集、标准集和完全集。
▪ 其他版本
DB2、SQL/DS、ORACLEINGRESSYBASESQLSERVER、DBASEⅣ、PARADOX、MICROSOFTACCESS等

2)语言特点

1.一体化:SQL集数据定义DDL、数据操纵DML和数据控制DCL于一体,可以完成数据库中的全部工作。
2.使用方式灵活:可以命令方式交互使用;也可嵌入到C、C++、FORTRAN、COBOLJAVA等主语言中使用。
3.非过程化:只提要求,不描述操作步骤。
4.语言简洁,语法简单,好学好用:包含94个单词,核心功能6个动词,语法接近英语口语。

3)数据类型

▪ 字符型 :VARCHARVS CHAR
▪ 文本型 :TEXT
▪ 数值型:整数INT 、小数NUMERIC、钱数MONEY
▪ 逻辑型: BIT
▪ 日期型:DATETIME VS SMALLDATETIME

4)语句结构

一:数据查询语言(DQL:Data Query Language)
    保留字:SELECTWHERE,ORDER BY,GROUP BY和HAVING
     排序:select * from table1 order by field1,field2 [desc]
二:数据操作语言(DML:Data Manipulation Language)
    动作查询语言。包括动词INSERTUPDATEDELETE
     插入:insert into table1(field1,field2) values(value1,value2)
     删除:delete from table1 where 范围
     更新:update table1 set field1=value1 where 范围
三:数据定义语言(DDL):
    动词CREATE和DROP。创建新表或删除表;为表加入索引等。动作查询的一部分。
       创建数据库:create DATABASE database-name
      删除数据库:drop database dbname
      创建新表:create table name(col1 type1 [not null] [primary key],col2 type2 [not null],..)
     根据已有的表创建新表:
        A:create table tab_new like tab_old (使用旧表创建新表)
        B:create table tab_new as select col1,col2… from tab_old definition only
      删除表:drop table tabname
四:数据控制语言(DCL):
    通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。
五:事务处理语言(TPL):
    确保被DML语句影响的表的所有行及时得以更新。BEGIN TRANSACTION,COMMIT和ROLLBACK。
六:指针控制语言(CCL):
    DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

5)使用简要

▪ 选择列表

1、选择所有列
    SELECT * FROM table
2、选择部分列并指定次序
    查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
3、更改列标题
    在选择列表中,可重新指定列标题。定义格式为:
        列标题=列名 列名 列标题
    如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT 昵称=nickname,电子邮件=email FROM testtable。
4、删除重复行
    ALL显示所有行,默认为ALL。
    DISTINCT删除重复行。
5、限制返回的行数
    TOP n [PERCENT],TOP n说明返回n行,TOP n PERCENT说明n是表示百分数。
    TOP命令仅针对SQL Server系列数据库,不支持Oracle数据库

▪ FROM子句

▪ WHERE子句:设置查询条件

可包括的条件运算符:
    比较运算符(大小比较):>;、>=、=、<;、<=、<>;、!>;、!<
    范围运算符(表达式值是否在指定的范围):BETWEEN…AND…;NOT BETWEEN…AND…
        age BETWEEN 10 AND 30相当于age>=10 AND age<=30
    列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……);NOT IN (项1,项2……)
        country IN ('Germany','China')
    模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE
        常用于模糊查找。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。可使用以下字符:
            百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。
                    查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
            下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。
            方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。
            [^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
    空值判断符(判断表达式是否为空):IS NULL、IS NOT NULL
    逻辑运算符(用于多条件的逻辑连接):NOT、AND、OR

▪ 查询结果排序

ORDER BY {column_name [ASC|DESC]} [,…n]

6)相关函数

SQL Aggregate 函数计算从列中取得的值。
  • AVG() - 平均值
        平均:select avg(field1) as avgvalue from table1
  • COUNT() - 行数
       总数:select count as totalcount from table1
  • FIRST() - 第一个记录的值
  • LAST() - 最后一个记录的值
  • MAX() - 最大值
    最大:select max(field1) as maxvalue from table1
  • MIN() - 最小值
    最小:select min(field1) as minvalue from table1
  • SUM() - 总和
        求和:select sum(field1) as sumvalue from table1
SQL Scalar 函数:基于输入值,返回需要值。
  • UCASE() - 将某个字段转换为大写
  • LCASE() - 将某个字段转换为小写
  • MID() - 从某个文本字段提取字符
  • LEN() - 返回某个文本字段的长度
  • ROUND() - 对某个数值字段进行指定小数位数的四舍五入
  • NOW() - 返回当前的系统日期和时间
  • FORMAT() - 格式化某个字段的显示方式

7)索引 index

数据库表中一列或多列的值进行排序的一种结构,为了增加查询速度而对表字段附加的一种标识。

一、优点

1.加快检索速度;
2.创建唯一性索引,保证数据库表中每一行数据的唯一性;
3.加速表和表之间的连接;
4.用分组和排序进行数据检索时,可显著减少查询中分组和排序的时间。

二、缺点

1.占物理空间。
2.对数据进行增删改时,索引也要动态维护,降低了数据的维护速度。

三、分类

1、普通索引
创建索引:CREATE INDEX <索引的名字> ON tablename (列的列表);
修改表:ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);
创建表的时候指定索引:CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );
删除索引:DROP INDEX [indexName] ON mytable;

2、唯一索引
唯一索引是不允许两行具有相同索引值的索引。
例如,如果在 employee 表中职员的姓 (lname) 上创建了唯一索引,则任何两个员工都不能同姓。
创建索引:CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);
修改表:ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表); ;
创建表的时候指定索引:CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) );

3、主键索引
唯一索引的特定类型,不允许有空值
主键:其值唯一标识表中的每一行。

4、聚集索引(聚簇索引):
在聚集索引中,按照数据存放的物理位置为顺序。一个表只能包含一个聚集索引。 
与非聚集索引相比,聚集索引能提高多行检索的速度
ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age); 

8)视图 view

简单、安全、逻辑数据独立性
创建视图:create view viewname as select statement
删除视图:drop view viewname、


9)其他语句

备份sql server

--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice ‘disk‘, ‘testBack‘, ‘c:\mssql7backup\MyNwind_1.dat‘
--- 开始 备份
BACKUP DATABASE pubs TO testBack

增加一个列

Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

主键

添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)

union、except、intersect

A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。

外连接

A、left outer join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right outer join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full outer join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值