常用经典SQL

1.查询语句

  主要由 select 关键字完成

2.DML语句(数据操作语言)

  主要由 insert、update、delete 三个关键字完成

  主要操作 表

  

3.DDL语句(数据定义语言)

  主要由 creat、alter、drop、truncate 四个关键字完成

  操作数据库对象的语句

  数据库对象:表、数据字典、约束、视图、索引、函数、存储过程、触发器

4.DCL语句(数据控制语言)

  主要由 grant、revoke 完成

5.事物控制语句

  主要由 commit、rollback、savepoint 三个关键字完成

 

---------------------------------DDL----------------------------------

1.创建表

1.1 创建一张新表

  CREATE TABLE 表名 (

    字段名  字符类型(大小),

    字段名  字符类型(大小)

  )

1.2 利用子查询复制表

  CREATE TABLE hehe

  AS

  SELECT * FROM user_if;

2.修改表结构

  2.1 增加定义列

    ALTER TABLE hehe ADD

      hehe_id INT,

      hehe_name VARCHAR2(255)

    )

  2.2 修改定义列

    ALTER TABLE hehe MODIFY  hehe_id VARCHAR2(225) ;

  2.3 删除列

    ALTER TABLE hehe DROP hehe_name ;

  2.4 重命名列

    alert table  表名   rename  cloumn  旧名  to   新名

3.删除表

  DROP TABLE 表名;

4.清空表数据

  TRUNCATE  table   表名;

---------------------------------数据库约束----------------------------------

1. 非空约束

 NOT NULL  确保指定列不允许为空

 hehe_id INT   NOT NULL  ( 为 hehe_id 字段 添加 非空约束)

 hehe_id   INT   NULL     ( 取消 非空约束 )

2. 唯一约束  

 UNIQUE  保证指定列 或 指定列组合 不允许出现重复值(但可以出现多个null,因为在数据库中 null 不等于 null)

 2.1 建表时创建唯一约束

 CONSTRAINT  test_uniique  UNIQUE( hehe_id , hehe_name ) ;  ( 为 hehe_id , hehe_name 组合创建唯一约束)

   2.2 修改表示时 增加唯一约束

 ALTER TABLE hehe

 ADD UNIQUE ( hehe_id , hehe_name );

 2.3 修改时添加唯一约束(列级)

 ALTER TABLE hehe

 MODIFY  hehe_id  INT UNIQUE;

 2.4 删除约束

 ALTER TABLE hehe

 DROP  CONSTRAINT  hehe_id ;

 

3. 主键

   PRIMARY KEY  主键相当于 非空约束 和 唯一约束

 3.1 列级创建 

 CREATE TABLE hehe

 hehe_id  INT  PRIMARY KEY;

 3.2 表级创建

 CREATE TABLE hehe

 CONSTRAINT test_primary_key PRIMARY  KEY ( hehe_id );

 3.3 组合主键

 CREATE TABLE hehe

 PRIMARY KEY ( hehe_id , hehe_name );

 3.4 删除主键约束

 ALTER TABLE hehe

 DROP PRIMARY KEY;

 3.5 表级 增加主键约束

 ALTER TABLE hehe

 ADD PRIMARY KEY ( hehe_id , hehe_name );

 3.6 列级 增加主键约束

 ALTER TABLE hehe

 MODIFY PRIMARY KEY  hehe_id INT PRIMARY KEY ;

4. 外键

   FOREIGN KEY

 4.1列级外键约束

 CREATE  TABLE  teacher_table

 PRIMARY KEY ( teacher_id);

  

 ***

 CREATE  TABLE  student_table

 java_teacher INT REFERENCE teacher_table ( teacher_id );

5. 检查

   CKECK

 CREATE  TABLE  check_test

 emp_salary INT

 CHECK (emp_salary > 0 )

6. 单列约束

7. 多列约束

8. 建表的同时为相应的数据列指定约束

9. 建表后创建,以修改表的方式来增加约束

---------------------------------索引----------------------------------

 CREATE INDEX emp_last_name_idx ON  表名 (列名[,列名])

--创建唯一索引
create UNIQUE index SEQUENCE_DEPTNO on CCCC_WORK(deptno)

--自增长的序列索引

CREATE SEQUENCE  "SEQUENCE_ENTER"   
MINVALUE 1                   
MAXVALUE 10000000
INCREMENT BY 1
START WITH 561
CACHE 20
NOORDER  NOCYCLE ;

---------------------------------注释----------------------------------

comment on column 表名.字段名 is '注释';

comment on column CCCC_WORK.uname is '姓名';

---------------------------------视图----------------------------------

1. 创建视图

  CREATE OR REPLACE VIEW 视图名

  AS

  SELECT * FROM hehe

2. 删除视图

  DROP  VIEW   视图名

---------------------------------DML----------------------------------

1.增

  INSERT INTO teacher_table (teacher_name) VALUES ( '张三' );

  INSERT INTO teacher_table VALUES ( NULL,18 );

2.改

  UPDATE  teacher_table  SET   teacher_name = '小花';

3.删

  DELET  FROM  teacher_table  ;  ( 删除表中的所有数据 )

  DELET  FROM  teacher_table  WHERE  teacher_name = '小花'  ;  ( 按条件删除 )

 ---------------------------------函数----------------------------------

1. 平均值

  AVG()

2. 最大值

  MAX()

3. 最小值

  MIN()

4.求和

  SUM()

5.计数

  COUNT()

6.分组

  GROUP  BY

  GROUP BY ----HAVING---

7.排序

  ORDER  BY

  7.1 升序(默认) exc

  7.2 降序  desc

 ---------------------------------多表链接查询----------------------------------

1. 交叉连接

2. 自然连接

3. 左、右、全外连接

4. 子查询

  IN

  NOT IN

  =

  =ANY

  ALL

 

 

时间:

从当前时间减去年龄,计算出生日期

SELECT  to_char(add_months(SYSDATE, -12 * 34), 'yyyy') FROM dual;

从当前时间减去出生日期计算年龄

SELECT * FROM tblstudent WHERE stuage = to_char(add_months(SYSDATE,-1 * 1981 * 12),'yy')

posted @ 2015-01-14 20:37  江湖一笑  阅读(176)  评论(0编辑  收藏  举报