SQL基础

SQL基础

以Oracle语法为例

远程连接Oracle、配置Oracle OCI、tnsnames.ora 监听IP、Port、破解安装登录PL/SQL(转载他人,感谢)

会不断对文档进行修改和更新

一、SQL书写规范

  • SQL语句不是大小写敏感的,为增加可读性,SQL的大小写保持一致

  • SQL语句可以分布于一行或者多行

  • 关键字不能进行缩写,也不能分布在两行

  • 经常用跳格键或者缩进来增强可读性

二、DDL-Data Define Language

1.CREATE

create table tablename

  • 表名由字母开始,长度在1-30个字符之间。

  • 名字中只能包含a–z, 0–9, _ (下划线),$和#。

  • 同一个oracle服务器用户所拥有的表名不能重复。

  • 名字不能为oracle的保留字。

2.表的约束

primary key    --主键约束
foreign key    --外键约束
check    --检查约束
unique    --唯一约束
not null    --非空约束

3.ALTER

添加约束
alter table table_name add constraint 约束名 约束内容; --基本语法
--eg
--添加主键约束
ALTER TABLE LJ_TEST2 ADD PRIMARY KEY (order_id); 
ALTER TABLE LJ_TEST2 ADD CONSTRAINT pk_order_id PRIMARY KEY (order_id); --添加主键约束并且设置约束名

-- 添加外键约束
ALTER TABLE LJ_TEST2 ADD CONSTRAINT fk_customer_id
FOREIGN KEY(customer_id) REFERENCES LJ_TEST1(customer_id);
修改约束
删除约束
ALTER TABLE table_name DROP CONSTRAINT constraint_name; --基本语法
--查看约束名称
SELECT constraint_name,constraint_type
FROM user_constraints
WHERE table_name = 'LJ_TEST2';
--eg
ALTER TABLE LJ_TEST2 DROP CONSTRAINT constraint_name;
添加列
修改列

4.DROP

drop table tablename

  • 用drop 删除表的时候,并不是真正的将表删除了,而是将表放到回收站recyclebin里了,用 DBA_RECYCLEBIN可以查看,如果不小心删除了某个表,也可以从回收站里面还原,语法为:falshback table 表名 to before drop;
SELECT * FROM DBA_RECYCLEBIN WHERE original_name='...';
--eg
SELECT * FROM DBA_RECYCLEBIN WHERE original_name LIKE 'LJ%';
  • 如果确定要删除某个表,最好在drop语句后面加上“purge”关键词,意思是彻底删除,减少占用硬盘空间。但是要慎用purge,只有在确定删除表的的情况下才使用
DROP TABLE [tablename] PURGE;

三、DML-Data Manage Language

1.TRUNCATE

2.INSERT

基本语法

INSERT INTO 
[tablename](字段1.字段2,...,字段n)
VALUES
(参数1,参数2,...,参数n);
--eg
INSERT INTO LJ_TEST1 ( CUSTOMER_ID, NAME, ADDRESS, WEBSITE, CREATE_TIME, UPDATE_TIME )
VALUES
    ( 1, '张三1', 'yingke1', 'www.yingke1.com', SYSDATE, SYSDATE )

-- 同时插入多条数据的方法之一
INSERT ALL INTO LJ_TEST1 ( CUSTOMER_ID, NAME, ADDRESS, WEBSITE, CREATE_TIME, UPDATE_TIME )
VALUES
    ( 1, '张三1', 'yingke1', 'www.yingke1.com', SYSDATE, SYSDATE ) INTO LJ_TEST1 ( CUSTOMER_ID, NAME, ADDRESS, WEBSITE, CREATE_TIME, UPDATE_TIME )
VALUES
    ( 2, '张三2', 'yingke2', 'www.yingke2.com', SYSDATE, SYSDATE ) INTO LJ_TEST1 ( CUSTOMER_ID, NAME, ADDRESS, WEBSITE, CREATE_TIME, UPDATE_TIME )
VALUES
    ( 3, '张三3', 'yingke3', 'www.yingke3.com', SYSDATE, SYSDATE ) INTO LJ_TEST1 ( CUSTOMER_ID, NAME, ADDRESS, WEBSITE, CREATE_TIME, UPDATE_TIME )
VALUES
    ( 4, '张三4', 'yingke4', 'www.yingke4.com', SYSDATE, SYSDATE ) INTO LJ_TEST1 ( CUSTOMER_ID, NAME, ADDRESS, WEBSITE, CREATE_TIME, UPDATE_TIME )
VALUES
    ( 5, '张三5', 'yingke5', 'www.yingke5.com', SYSDATE, SYSDATE ) INTO LJ_TEST1 ( CUSTOMER_ID, NAME, ADDRESS, WEBSITE, CREATE_TIME, UPDATE_TIME )
VALUES
    ( 6, '张三6', 'yingke6', 'www.yingke6.com', SYSDATE, SYSDATE ) INTO LJ_TEST1 ( CUSTOMER_ID, NAME, ADDRESS, WEBSITE, CREATE_TIME, UPDATE_TIME )
VALUES
    ( 7, '张三7', 'yingke7', 'www.yingke7.com', SYSDATE, SYSDATE ) INTO LJ_TEST1 ( CUSTOMER_ID, NAME, ADDRESS, WEBSITE, CREATE_TIME, UPDATE_TIME )
VALUES
    ( 8, '张三8', 'yingke8', 'www.yingke8.com', SYSDATE, SYSDATE ) INTO LJ_TEST1 ( CUSTOMER_ID, NAME, ADDRESS, WEBSITE, CREATE_TIME, UPDATE_TIME )
VALUES
    ( 9, '张三9', 'yingke9', 'www.yingke9.com', SYSDATE, SYSDATE ) INTO LJ_TEST1 ( CUSTOMER_ID, NAME, ADDRESS, WEBSITE, CREATE_TIME, UPDATE_TIME )
VALUES
    ( 10, '张三10', 'yingke10', 'www.yingke10.com', SYSDATE, SYSDATE ) SELECT
    * 
FROM
    dual;
-- 当索引设置自增的时候,单条数据插入的时候可以省略主键id参数

3.UPDATE

基本语法

UPDATE [TABLENAME]
SET 
    字段=WHERE 
    条件;
--eg
UPDATE LJ_TEST1 SET WEBSITE='http://yingke10.com' WHERE CUSTOMER_ID=1;

4.DELETE

基本语法

DELETE FROM [TABLENAME]
WHERE 条件;
--eg
DELETE LJ_TEST1 WHERE CUSTOMER_ID=1;

四、DQL-Data Query Language

1.SELECT

语法结构

    select 
        -- 提取包含在结果集中的栏位    
    from 
        -- 数据集合
    join...on...
    where 
        -- 过滤条件
    group by 
        -- 群组化数据列
    having 
        -- 以群组过的的数据过滤结果集
    order by 
        -- 依据一个或多个栏位,排序结果集

运行顺序

from->where->group by->having->select->order by

WHERE

    =,<>,<,>,is [not] null
    [not] between ... and ... --定义条件范围
    and,or
    [not] in --指明范围或使用子查询
    [not] exists --使用子查询
    like --模糊查询

通配符

    _ 代表一个任意字符
    % 代表任意数量的任意字符

order by

    order by 字段 desc 降序
    order by 字段 asc 升序

五、Oracle体系结构

六、Oracle字段类型

常用

类型含义描述备注
NUMBER数字类型
VARCHAR2可变长度的字符串最大长度4000bytes可做索引的最大长度749
DATE日期(日-月-年)DD-MM-YY(HH-MI-SS),经过严格测试,无千虫问题

VARCHAR2和VARCHAR

都用于保存变长的字符串数据,最大长度为4000字节,其中最大程度可以由(size)指定。

区别在于

VARCHAR2VARCHAR
存储所有字符都占两字节处理只对汉字和全角等字符占两字节,数字、英文字符都是一个字节
空""把空串等同于null处理仍按照空串处理
兼容性一般

varchar是被废弃的类型,oracle目前都推荐使用varchar2。虽然varchar也可以用,但不确保未来的版本是否还支持

全部

ORACLE数据库字段类型说明 - 编程世界里晃荡 - 博客园 (cnblogs.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PABL01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值