当前位置: 首页 > news >正文

01.oracle SQL基础

SQL是结构化查询语言

SQL分类

  • 数据定义语言(DDL --- create/alter/drop)

    • sysdate --- 可以拿到当前系统时间

    • 案例:创建学生表,教师表,课程表

    -- 学生表
    create table t_student(sid number(11) primary key,sname nvarchar2(20) not null,ssex char(4) default '男',sage number(11) not null, createdate date default sysdate
    );
    comment on table t_student is '学生信息表';
    comment on column t_student.sid is '学生编号';
    comment on column t_student.sname is '学生姓名';
    comment on column t_student.ssex is '学生性别';
    comment on column t_student.sage is '学生年龄';
    comment on column t_student.createdate is '创建日期';

    注意:

    1.一个中文等于4个字节,所以char(4)

    2.sysdate 表示系统自带日期

    3.default 默认值约束,当没有传递数据时,默认值维护该字段

    4.创建表格之后,需要给每一个字段以及表格添加字段别名,方便辨识

    5.表格别名创建语法:comment on table 表名 is 'xxx'

    6.表格字段别名创建语法:comment on column 表名.字段名 is 'xxx'

    -- 教师表
    create table t_teacher(tid number(11) primary key,tname nvarchar2(20) not null
    );
    comment on table t_teacher is '教师信息表';
    comment on column t_teacher.tid is '教师编号';
    comment on column t_teacher.tname is '教师姓名';
    -- 课程表
    create table t_course(cid number(11) primary key,cname nvarchar2(50) not null,tid number(11),constraint tid_fk foreign key(tid) references t_teacher(tid)
    );
    comment on table t_course is '课程信息表';
    comment on column t_course.cid is '课程编号';
    comment on column t_course.cname is '课程名称';
    comment on column t_course.tid is '教师编号,外键';

    1.先有主键,后有外键

    2.外键语法:constraint 外键名称 foreign key(本表字段) references 教师表(教师表字段)

    3.references表示引用

    4.foreign key表示外键

    • 案例:删除表 --- 禁术

    -- 首先创建表
    create table t1(id number(11,0) primary key,name varchar2(20) not null
    );
    -- 然后删除表
    drop table t1;
    -- alter
    alter user xxx account lock|unlock -- 设置账户是上锁还是解锁
  • 数据操纵语言(DML --- insert/delete/update/select)

    • 代码编写完成之后必须先运行,然后提交,然后再右击表格,点击Query data查找数据

    • insert --- 增加

    -- 1.全表,表字段新增,values后面添加的数据值的顺序必须与表中的列的顺序一致
    -- 下面因为把列段舍弃了,所以必须按表格列段顺序来,一一对应,而且缺一不可,即使有默认约束
    insert into t_student values(1,'张三','男',21,sysdate);
    ​
    -- 2.根据列段添加值
    -- 默认值可以被覆盖
    insert into t_student(sid,sname,sage) values (2,'小气',18)
    insert into t_student(sid,sname,sage,ssex) values (3,'就赶快',18,'幺')
    • update --- 真实环境谨慎使用

      注:一般update修改操作,一定要带where条件

    -- 数字类型不加单引号,字符类型一定加单引号
    -- 所有人的年龄+1
    update t_student set sage = sage + 1;
    ​
    update t_student set ssex = '女',sage = 23 where sid = 2;
    • select --- 查询

    -- select
    select* from t_student;
    select sid,sname,ssex from t_student
    -- 别名使用,+as或者不加as
    select sid as 学生编号,sname 学生姓名 from t_student;
    -- 带条件
    select * from t_student where ssex = '幺';
    • delete --- 删除(禁用)

      • drop:删除数据+结构,不支持where条件
      • delete:数据删除,一般带where条件

      • truncate: 删除数据,不支持where条件

      • drop > truncate > delete

      -- 经典错误delete * from ...
      delete from t_student where sid = 3;
      -- 全表删除
      delete from t_student;
  • 事务控制语言(TCL --- commit : 事件提交/rollback : 事件回滚)

    • 事务四大原则(ACID)

      • 原子性

        • 表示一个事务是不可分割的单位,它要么全部执行成功,要么全部失败回滚。原子性确保了事务的完整性,即使在故障发生时也能保持数据的一致性。

      • 一致性

        • 指的是事务执行前后数据库的状态应该保持一致。这意味着事务的执行不会导致数据的冲突或破坏约束条件,保证了数据的有效性和完整性。

      • 隔离性

        • 指一个事务在执行过程中应该与其他事务相互隔离,互不干扰。这可以通过加锁和并发控制机制来实现,以避免数据的不一致性和冲突。

      • 持久性

        • 表示一旦事务提交,所做的修改将永久保存到数据库中。无论系统崩溃、断电或其他故障,已提交的事务所做的修改都将得到保证,保证了数据的可靠性和不可丢失性。

    insert into t_student values(4,'洗干净','男',25,sysdate);
    commit;
    rollback;
  • 数据控制语言(DCL --- grank : 授权/revoke : 收回)

    • 授权需要再超级管理员账号中进行,需要用户本身有权限才能给别的用户授权

    grant ... to --- 授权
    revoke ... from --- 收回权限

    1.首先登录超级管理员账号

    2.然后创建用户create user rrr identified by 1234;

    2.然后通过File - New - Command Window查看用户有没有权限

    3.输入conn 用户名/用户密码@orcl_ip地址;可以查看用户是否有权限

    4.没有权限的话,返回SQL语句编写界面,输入grant connect,resource to 用户名

    5.然后再次返回到Command Window界面,连接,可发现连接成功了

    6.可以通过revoke connect,resource from 用户名 收回权限

数据类型

  • 字符型(char --- 定长/varchar --- 不定长)

    • char

      • 民族名称不能用定长,但是性别可以用定长

    • varchar2

    • nvarchar2

    • long 可变长度2GB

  • 数值类型

    • number(p,s) --- 可表示整型、浮点型、实数

      • p : 精度

        • number(11) --- 代表11位的整数

      • s : 小数位

        • number(11,2) --- 代表11位的整数和2位的小数位

  • 日期类型

    • date --- 日期

    • timesamp --- 时间戳,从1970年1月7日到现在的日期为多少秒

  • 二进制数据

    • raw --- 可用于储存二进制数据,最多储存2000字节

    • long raw --- 用于储存可变长度的二进制数据,最多储存2GB

  • 伪列(rowid和rownum)

    • select * from dual; --- 伪表,系统提供,可以将查找到的数据临时存储

    • rowid --- 每一行的存储地址,地址都是唯一的,根据存储地址,可以定位每一行

    • rownum --- 返回行的序号,可以用来排序

操作符

  • 算数操作符:+、-、*、/

  • 比较操作符: =、!=、<、>、<=、>=、BETWEEN…AND、IN、LIKE 和 IS NULL等

    select * from t_student where sage>=16 and sage<25
    select * from t_student where sage between 16 and 25
    select * from t_student where sid in (1,4,7)
  • 逻辑操作符:and / or / not

    • and : 并且

    • or:或者

    • not:非

    select * from t_student where ssex = '男' or ssex = '幺'
    select * from t_student where not ssex = '幺'

相关文章:

  • Django之旅:第七节--模版继承
  • IDEA配置将Servlet真正布署到Tomcat
  • Matplotlib高阶技术全景解析(续):动态交互、三维可视化与性能优化
  • 【初识Trae】字节跳动推出的下一代AI原生IDE,重新定义智能编程
  • 微服务架构在云原生后端的深度融合与实践路径
  • 图论---Kruskal(稀疏图)
  • PDFMathTranslate:基于LLM的PDF文档翻译及双语对照的工具【使用教程】
  • Spine 动画教程:皮肤制作
  • 深度学习笔记22-RNN心脏病预测(Tensorflow)
  • Azure Data Factory ETL设计与调度最佳实践
  • 【RedisLockRegistry】分布式锁
  • 抖音小程序开发常见问题与代码解决方案
  • 【N8N】Docker Desktop + WSL 安装过程(Docker Desktop - WSL update Failed解决方法)
  • 从StandardMaterial和PBRMaterial到PBRMetallicRoughnessMaterial:Babylon.js材质转换完全指南
  • 附赠二张图,阐述我对大模型的生态发展、技术架构认识。
  • 力扣-160.相交链表
  • day49—双指针+贪心—验证回文串(LeetCode-680)
  • 基于Node+HeadlessBrowser的浏览器自动化方案
  • 多模态(3):实战 GPT-4o 视频理解
  • APP和小程序需要注册域名吗?(国科云)
  • 推进“即买即退”服务试点,上海静安离境退税商店近400家居全市首位
  • 173.9亿人次!一季度我国交通出行火热
  • 叶迪奇任陆金所控股董事长,赵容奭继续担任CEO
  • 百年前的亚裔艺术家与巴黎
  • 一夜跌去200美元,黄金巨震冲上热搜!涨势已近尾声?
  • 观察|动力电池步入“多核时代”,宁德时代新技术密集开箱有何启示