一、SQL语言:
DDL(数据定义语言) Data Definition Language |
DML(数据操作语言) Data Manipulation Language |
TCL(事务控制语言) Transcation Control Language |
DQL(数据查询语言) Data Query Language |
DCL(数据控制语言) Data Control Language |
CREATE 创建表或其他对象的结构 |
INSERT 将数据插入到数据表中 |
COMMIT 提交 |
SELECT 查询 |
GRANT 授予权限 |
ALTER 修改表或其他对象的结构 |
UPDATE 更新数据表中已存在的数据 |
ROLLBACK 回滚 |
|
REVOKE 收回权限 |
DROP 删除表或其他对象的结构 |
DELETE 删除数据表中的数据 |
SAVEPOINT 保存点 |
|
CREATE USER 创建用户 |
TRUNCATE 删除数据表,保留表结构 |
|
|
|
|
二、SQL通常不区分大小写,但是为了程序可读性,通常将关键字大写,非关键字小写。
三、查看系统时间:
1.select sysdate from dual;
2.select TO_CHAR(sysdate, 'yyyy-mm-dd hh:mm:ss') from dual;;
3.SYSDATE是一个关键字,其表示一个DATE类型的值,该值表示当前系统时间。
4.在日期格式中,凡不是英文或英文符号的其他字符,都需要用双引号括起来。
5.日期格式月份输入时,MM对应的月份,单位数月前面不加0,即一月份为1,不是01。如果要在输出显示1969-01-01这种格式,将日期转换成字符串输出,即to_char(date,’YYYY-MM-DD’)即可。
user |
sys |
0-49(年) |
50-99(年) |
0-49(年) |
本世纪 |
下世纪 |
|
50-99(年) |
上世纪 |
本世纪 |
四、Date fomat:’RR’
今年是2016年,在系统时间的本世纪代表21世纪(20xx年),即上图的本世纪是指21世纪(20xx年)。如果用户输入RR=25,则表示本世纪即21世纪的第25年,即2025年。如果输入RR=79,则表示本世纪即20世纪的第79年,即2079年。
实际上RR就只能表示以本世纪为中心的三个世纪,一般都是使用YYYY给定年份。
五、表中的字段,无论是什么类型,默认值都是NULL。
但是在创建表的时候可以通过DEFAULT关键字指定字段设置一个默认值。
当我们向表中插入一条记录时,若某个字段没有给值,则使用该字段的默认值。
六、SQL语句中,字符串用单引号。
七、创建表:CREATE TABLE table_name (
col_1 type_1,
Col_2 type_2,
...
);
八、复制表:
1.即复制表结构也复制表内容:
CREATE TABLE
table_name_new
AS SELECT
column1,
column2,
...
FROM
table_name_old;
2.只复制表结构不复制表内容:
CREATE TABLE
table_name_new
AS SELECT
column1,
column2,
...
FROM
table_name_old
WHERE
1=2; --返回一个false值即可
3.不复制表结构,只复制表内容:
(1).
INSERT INTO
table_name_new
SELECT
column1,
column2,
...
FROM
table_name_old;
(2).
SELECT
column1,
column2,
...
INTO
table_name_new
FROM
table_name_old;
九、删除表:
DROP TABLE table_name;
十、当一个字段使用NOT NULL约束后,该字段在任何时候不允许为空。
十一、修改表:
1.修改表名:
RENAME old_name TO new_name;
2.修改表结构:
ALTER TABLE table_name
ADD(
column_name1 datetype1,
column_name2 datetype2,
...
);
这样修改表的结构只会在该表的末尾追加行。
十二、删除字段:
ALTER TABLE table_name
DROP(
column_name1,
column_name2,
...
);
十三、修改现有字段:
ALTER TABLE table_name
MODIFY(
column_name1 datatype1,
column_name2 datatype2,
...
);
可以修改字段的类型、长度、默认值、非空。
当表中有数据后,不建议修改类型。并且若修改长度也建议只增不减。
否则可能不成功。
十四、Sqldeveloper中注释格式:
--annotation
十五、向表中插入数据:
INSERT INTO table_name
(column1,column2,... )
VALUES
(data1,data2,... );
数据与行名一一对应。行名那一行可以不写,意味着所有字段都必须给值。
十六、插入日期格式:
1.INSERT INTO table_name
(birthday)
VALUES
(‘23-SEP-16’);
直接插入字符串的格式不建议使用。
2.INSERT INTO table_name
(birthday)
VALUES
(TO_DATE(‘2016-02-16 15:39:40’,’YYYY-MM-DD HH24-MI-SS’) );
一般使用字符串转换为日期格式进行插入。
十七、在没有提交之前,实际上修改只存在于本机进程中,没有在数据库中修改,还可 以回滚。在提交(commit)之后,数据库中的数据就实际被修改了,不能回滚了。
十八、更新表中数据:
UPDATE table_name
SET column1=value1,column2=value2,...
[WHERE condition];
如果没有WHERE语句,表中所有数据都将被更新。
十九、删除表中记录
1.DALETE:
DELETE [FROM] table_name [WHERE conditoin];
不加WHERE语句就是删除所有记录。
2.TRUNCATE:
TRUNCATE TABLE table_name;
(1)DELETE可以有条件删除,TRUNCATE将表中数据全部删除。
(2)DELETE是DML语句,可以回滚,TRUNCATE是DDL语句,立即生效,不能 回滚。
(3)如果删除全部表记录,且数据量较大,DELETE语句效率比TRUNCATE效率低。
二十、查询当前用户下所有表,生成格式为:(drop table table_name;):
SELECT 'drop table'||table_name||';'
FROM cat
where table_type='TABLE';
二十一、数据查询语句
1.查询指定表的所有字段所有记录:
SELECT * FROM table_name;
2.查询指定表指定字段的所有记录:
SELECT column1,column2,... FROM table_name;
3.查询指定表满足条件的记录:
SELECT column1,column2,... FROM table_name WHERE condition;
二十二、dual伪表,表中只有一个字段,一条记录,在使用SELECT语句查询与其他任何表都无关的数据时,使用这个表作为FROM后的表。
二十三、查询忽略大小写:
SELECT * FROM table_name
WHERE upper(column)=upper(‘value’);
也可以使用lower函数转换成小写。
二十四、去掉字符串:
1.TRIM(c2 FROM c1)函数,去掉c1中与c2匹配的第一个字符串。
2.LTRIM(c1,c2)函数,去掉c1中从左边开始所有c2字符串所包含的字符,直到遇到第一个c2中不包含的字符。
3.RTRIM(c1,c2)函数与LTRIM相同。
二十五、补位函数:
1.LPAD左补位,RPAD右补位。
2.LPAD(char1,n,char2):
(1)一共显示n位。
(2)若char1长度小于n,则从左往右截取n位返回。
(3)若char1长度大于等于n,则在左边补充char2。