zoukankan      html  css  js  c++  java
  • SQL常用语句

    最近快速的把数据库浏览的一遍,把很常用的语句写了出来,没有注释,其实都很简单,一看都明白。

    1.自定义数据类型

    CREATE TYPE PERSON AS OBJECT//自定义数据类型

    (NAME VARCHAR (30),

    SSN VARCHAR(9));

    2.创建数据库

    create table person

    ( NAME varchar(20) not null,

      age int,    

      id varchar(13)  

    );

    3.修改,删除,添加

    alter table person modify name varchar(10) null;

    alter TABLE person drop age;

    alter TABLE person add age int not null;

    4.创建主键在表创建时  

    create table person

    ( NAME varchar(20) not null primary key,

      age int,    

      id varchar(13)  

    );

    或者

    create table person

    ( NAME varchar(20) not null,

      age int,    

      id varchar(13) 

    primary key(name) 

    );

    5唯一性约束 

    create table person

    ( NAME varchar(20) not null,

      age int,    

      id varchar(13)  unique   

    );

    6.外键约束:子表中的一个字段,引用父表里的主键,确保表和表之间引用完整性的主要机制。

    create table person

    ( NAME varchar(20) not null,

      age int,    

      id varchar(13)  unique,

      CONSTRAINT EMP_ID_FK FOREIGN KEY (NAME) Reference FATHER_TAB (NAME)//创建一个名为EMP_ID_FK的约束 将name字段和

    father_tab里面的name字段关联。

      CONSTRAINT EMP_AGE_CH CHECK( age>18);

    );

    7.插入

    insert into mytable(column1,column2...)

    values(v1v2...);

    8更新

    update mytable

    set column2=''

    [column3='value']

    [where]; 

    9.删除

    delete from mytable

    [where condition];

    10.对于数据库大规模的加载或撤销来说,应该多使用COMMIT语句。全部的修改首先是被送到临时退回区域,如果这个临时回退区没有空

    间了,就不能保存对数据库所做的修改,数据库就可能挂起,禁止下一步。但过多的COMMIt会产生大量的额外时间。

    COMMIT

    11.ROLLBACK//撤销回退区里的全部修改。

    12.savepoint

    SAVEPOINT NAME;

    ROLLBACK TO NAME;

    RELEASE SAVEPOINT NAME;//删除保存点

    12.

    SELECT DISTINCT(NAME)

    FROM MYTAB;//distinct用去去除重复的数据。

    13.

    SELECT COUT(*)

    FROM MYTAB;//显示数据的数量

    14.逻辑判断

    WHERE NAME IS NULL

    WHERE NAME = NULL

    WHERE AGE BETWEEN 18 AND 24

    WHERE NAME IN ('KEPTON','LIU')

    15.ALL

    SELECT COST 

    FROM PRODUCTS_TAB

    WHERE COST > ALL ( SELECT COST

                       FROM PRODUCTS_TAB

       WHERE COST < 10);//显示cost所有大于10

    WHERE SALARY > ANY (SELECT SALARY FROM EMPLOYEE_TAB WHERE CITY ='JINAN')//条件是salary大于所有居住在济南的薪水

    16.

    WHERE PROID=12 AND PROID=23

    WHERE SALARY = 2000 OR SALARY = 3000

    17.

    WHERE SALARY <> 2000

    WHERE SALARY != 2000

    WHERE SALARY NOT BETWEEN 2000 AND 3000

    WHERE SALARY NOT IN (2000,3000,4000)

    WHERE SALARY IS NOT NULL

    18汇总函数

    SELECT COUT [(*)|(DISTINCT | ALL) (COLUMN NAME)

    SELECT SUM(SALARY) FROM EMPLOYEE_TAB

    SELECT SUM(DISTINCT SALARY) FROM EMPLOYEE_TAB

    SELECT AVG(SALARY) FROM EMPLOYEE_TAB

    SELECT AVG(DISTINCT SALARY) FROM EMPLOYEE_TAB

    SELECT MAX(SALARY) FROM EMPLOYEE_TAB

    SELECT MAX(DISTINCT SALARY) FROM EMPLOYEE_TAB

    SELECT MIN(SALARY) FROM EMPLOYEE_TAB

    SELECT MIN(DISTINCT SALARY) FROM EMPLOYEE_TAB

    19.串连接

    select name+' '+address

    from person

    20.

    Translate(city, 'IND', 'ABC')//city里面的美每一个I换成ANBDCmotherfucker

    REPLACE(CITY,'i','z')//将一个字符或字符串整体替换成

    UPPER(CITY)

    LOWER(CITY)

    SUBSTRING(COLUMN NAME, STARTING POSTION, LENGTH)

    INSTR(COLUMN NAME,'A',1,1)//返回NAME里面A从第一个字符开始第一次出现的位置,若无返回0

    21.外结合

    WHERE  P.ID=O.ID(+) 

    返回第一个表全部,不管0.ID是否存在

    22.自结合

    同一个表去别名

    FROM TABLE A, 

         TABLE B

    23.卡迪尔积

    24.子查询

    1.子查询必须位于()

    2.除非主查询里有多个字段让子查询进行比较,否则子查询的SELECT子句中只能有一个字段

    3.子查询里面不能有ORDER BY ,可以用GROUP BY 来实现ORDER BY功能。

    25.UNION

    SELECT EMP_ID FROM EMPLOYEE_TBL

    UNION

    SELECT EMP_ID FROM EMPLOYEE_PAY_TBL//不会出现重复数据

    26.UNION ALL

    SELECT EMP_ID FROM EMPLOYEE_TBL

    UNION ALL

    SELECT EMP_ID FROM EMPLOYEE_PAY_TBL//包括重复的数据

    25.INTERSECT

    SELECT EMP_ID FROM EMPLOYEE_TBL

    INTERSECT

    SELECT EMP_ID FROM EMPLOYEE_PAY_TBL//返回两个数据一样的记录

    26.EXCEPT

    SELECT EMP_ID FROM EMPLOYEE_TBL

    EXCEPT

    SELECT EMP_ID FROM EMPLOYEE_PAY_TBL//返回第一个有,但第二个没有的记录

    27.HAVING

    GROUP BY之后,ORDER BY之前,对满足的条件的记录进行分组。

    28.INDEX的使用

    CREATE  INDEX  INDEX_NAME

    ON  TABLE_NAME  (COLUMN  NAME)

    DROP  INDEX  INDEX_NAME

    数据量庞大并且where子句返回数据量很小或者是某一特定的值的时候,可以考虑索引。

    29.性能的优化

    1.FROM子句里的表的顺序,较小的表在前面,较大的表在后面。

    2.WHERE 子句里面的一般基表在结合操作的右侧,没有基表,就是较大的表在右侧

    3.SQL查询里面,最严格的条件放在下面

    4.避免使用or操作符,尽量用in来代替

    5.避免是用having子句,尽量避免对大规模数据进行排序,如ORDER BY, GROUP  BY,  HAVING.

    6.创建存储过程。

    30.视图 view

    VIEW是一个虚拟表,存放在内存中,和表的用法类似。

    CREATE  VIEW  VIEW_NAME AS

    SELECT  LASTNAME, FIRSTNAME 

    FROM  EMPLOYEE_TAB

    WHERE  FIRSTNAME IS NOT NULL

    WITH  CHECK  OPTION;//确保FIRSTNAME字段非空。

    VIEW不能使用ORDER BY group by 在定义视图的时候 代替orderby

  • 相关阅读:
    centos7 go ENV 部署
    sock5客户端解密数据流
    sock5协议转换http协议工具polipo使用笔记(Centos7)
    【转】nc 使用说明
    前端移动框架Framework7入门
    Ext.NET-WebForm之TreePanel组件
    在VS2019创建WebForm程序,开个箱
    web认证
    ABP框架是怎么一回事呢?
    C#4并行计算
  • 原文地址:https://www.cnblogs.com/kepton/p/2111033.html
Copyright © 2011-2022 走看看