常用经典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')