数据库基础(常用SQL语句)

article/2025/9/22 17:19:33

一、数据库级及SQL语言简介

1、目前主流数据库
微软:sql server、access
瑞典:mysql
ibm: db2
sybase:sybase
ibm: informix
oracle: oracle

2、SQL语言
DQL-------------数据查询语言
select … From … Where
DML-------------数据操纵语言
insert、update、delete
DDL-------------数据定义语言
create、alter、drop
DCL-------------数据控制语言
commit、rollback、savepoint

二、数据库的数据类型(MySQL)

1、字符类型:

  • char类型:固定长度的内容,效率高。存储空间范围(1-2000)字节。
  • varchar类型:动态长度的字符类型,存储空间范围(1-4000)字节。
  • long类型:存储2G的文件大小。

2、数值数字类型:
在这里插入图片描述

3、日期类型:
在这里插入图片描述

三、基本Sql语句

1、表设计
  • 创建表:

     create table 表名 (字段 字段类型);
    
  • 复制表结构及数据:

     create table 新表 as select * from 旧表
    
  • 复制表结构不需要数据:

     create table 新表 as select * from 旧表 where 2<>2
    
  • 查看表结构:desc 表名.

  • 复制表数据:

     insert into 目标表 select * from 参考表
    
  • 伪表:系统中保留的虚拟表,不能更改,也不能删除。

     名称:dual通过伪表显示当前系统时间:select sysdate from dual;
    
  • 查看指定用户下所有的表

     SELECT table_name FROM all_tables WHERE owner = upper('用户名');注意:用户名必须大写
    
2、操作字段
  • 增加字段:

     alter table 表名 add (字段名称 字段类型)
    
  • 修改字段:

     alter table 表名 modify (字段名称 字段类型)注意:实际上大部分时间我们修改的是字段类型的大小,而不是类型本身,如果非在改成其它类型,则需要满足兼容性。或者把对应这列数据全部清除。
    
  • 删除字段:

     alter table 表名 drop column 字段名称
    
3、表约束
  • 约束说明

    NOT NULL 指定字段不能包含空值
    UNIQUE 指定字段的值(或字段组合的值)表中所有的行必须唯一
    PRIMARY KEY 表的每行的唯一标识,即主键
    FOREIGN KEY 在字段和引用表的一个字段之间建立并且强制外键关系,即外键
    CHECK 指定一个必须为真的条件

  • 主键与唯一约束的区别:

    1.主键只能有一个,而唯一约束可以有多个;
    2.主键可以由一列或多列充当,但唯一约束只能一列一列创建;
    3.主键不允许为空,而唯一约束在Oracle中可以多次为空,在SQL中唯一约束只能一次为空;

    NOT NULL:此约束为行级约束,不在能表级约束中定义。

  • 添加约束:

     ALTER TABLE 表名 ADD  [CONSTRAINT 约束标识名称]  约束类型(字段名称);例:ALTER TABLE stu ADD CONSTRAINT stuid_pk  PRIMARY KEY(stuid);
    
  • 删除约束:

     ALTER TABLE tableDROP  PRIMARY KEY | UNIQUE(字段名) | CONSTRAINT 约束名 [CASCADE]例:ALTER TABLE stu DROP PRIMARY KEY;
    

-----------------------------------------------------------------

示例一:【创建表的同时指定约束】
create table 表(
字段 字段类型 CONSTRAINT 约束标识名称 约束类型;
);
示例二:【先创建表,后创建约束】
ALTER TABLE 表名 ADD CONSTRAINT 约束标识名称 约束类型(字段);
外键约束的创建:
alter table table_name add constraint cid_fk foreign key(cid) references classes(cid) 【on delete cascade】

(主-从)建表规则:
1.先create父表(要有pk或uk),再create子表(FK)
2.先insert父表,然后insert子表。
3.先delete子表,在delete父表。
4.先drop子表,在drop父表。
父表先于子表存在,子表比父表先消亡。
--------------------------------------------------------------

4、表查询
  • 基本查询

     语法格式:select [列名],... from 表名
    
  • 条件查询(where)

     语法格式:select [列名],... from 表名  where 条件
    
  • 逻辑运算

     操作符包括如下几种:1、算术操作符:算术操作符包括加(+)、减(-)、乘(*)、除(/)2、比较操作符:比较操作符包括 =、!=、<、>、<=、>=、BETWEEN…AND、IN、LIKE 和 IS NULL等3、逻辑操作符:逻辑操作符包括与(AND)、或(OR)和非(NOT)。 4、集合操作符:集合操作符包括冻并集(UNION)、交集(INTERSECT)、剪集(MINUS)5、连接操作符:||   例:SELECT ename || ' is a ' || job FROM emp;集合操作符:多用于数据量比较大的数据局库,运行速度快。1). union该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中重复行。SELECT ename, sal, job FROM emp WHERE sal >3000UNIONSELECT ename, sal, job FROM emp WHERE job = 'MANAGER';2).union all该操作符与union 相似,但是它不会取消重复行,而且不会排序。SELECT ename, sal, job FROM emp WHERE sal >2500UNION ALLSELECT ename, sal, job FROM emp WHERE job = 'MANAGER';3). intersect使用该操作符用于取得两个结果集的交集。SELECT ename, sal, job FROM emp WHERE sal >2500INTERSECTSELECT ename, sal, job FROM emp WHERE job = 'MANAGER';4). minus使用改操作符用于取得两个结果集的差集,他只会显示存在第一个集合中,而不存在第二个集合中的数据。SELECT ename, sal, job FROM emp WHERE sal >2500MINUSSELECT ename, sal, job FROM emp WHERE job = 'MANAGER';(MINUS 就是减法的意思)注意: 集合运算中各个集合必须有相同的列数,且类型一致,集合运算的结果将采用第一个集合的表头作为最终的表头,order by必须放在每个集合后
    
  • 排序

     语法格式:select [列名],... from 表名  where 条件 order by 字段 (desc | asc)说明:DESC:表示按降序排序(即:从大到小排序)ACS:表示按升序排序(即:从小到大排序)
    
  • 函数

     1、常用的系统函数1.1 日期函数:-ADD_MONTHS(d,f):指定时间d,推移f月,得到推移后的时间d:指定一个时间(需要使用to_date函数转换)f:在指定时间上推移多少个月例:在“2010-05-12”时间上推移3个月后的时间select ADD_MONTHS(to_date('2012-05-12','yyyy-mm-dd'),3) from dual;-Months_between(d1,d2):显示两个时间相差的月份d1:第一个时间d2:第二个时间注意:必须注意的是,d1与d2都为Date类型,不然会出现错误。须用to_date('','') 	来转换为日期格式,才能参加计算。例:计算 2012-12-12 与 2012-2-12 相差的月份。SELECT MONTHS_BETWEEN(to_date('2012-12-12','yyyy-MM-dd'),to_date('2012-2-12','yyyy-MM-dd'))FROM dual;-last_day(m):返回特定日期所在月份的最后一天m:时间例:计算“2010-10-12”所在月份的最后一天SELECT last_day(to_date('2010-10-12','yyyy-mm-dd')) FROM dual;-next_day(x,y)用于计算x时间后第一个星期y的时间。例子,当前时间是2014-08-15 select next_day(to_date('2014-08-15','yyyy-mm-dd'),'星期二')from dual;返回的结果是: 2014-08-19-trunc(date,[fmt]):处理时间date:一个日期值fmt :日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去例:trunc(sysdate,'yyyy') --返回当年第一天.trunc(sysdate,'mm') --返回当月第一天.trunc(sysdate,'d') --返回当前星期的第一天.trunc(sysdate,'dd')--返回当前年月日trunc(sysdate, 'hh')--返回当前小时trunc(sysdate, 'mi')--返回当前分钟-trunc(number,[decimals]):处理数字number:	 待做截取处理的数值decimals:指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分例:TRUNC(89.985,2)=89.98TRUNC(89.985)=89TRUNC(89.985,-1)=802、常用的字符函数:-lower(string):转小写用法:比如将字符“ABC”转为小写 select lower('ABC') from dual;结果:abc-upper:转大写用法:比如将字符“abc”转为大写 select upper('abc') from dual;结果:ABC-length():长度函数用法:获取字符“abc”的长度select  length('abc') from dual;结果:3注:长度是指字符串的长度 如“中国”为2 “ab”也为2-substr(char,m,n):截取字符串用法:将字符“abcde”中的“cd”进行截取select substr('abcde', 3 ,2 ) from dual;结果:cd-replace(s1,s2):替换用法:将字符“abcde”中的“c”替换为“123”;select replace('abcde', 'c' ,'123' ) from dual;结果:ab123de-concat(s1,s2):拼接用法:将字符“abc”与字符“de”拼接显示select concat('abc','de') from dual; 结果:abcde等价于: 'abc'||'de'lpad( string, padded_length, [ pad_string ] ):指定长度,不够则填充用法:将字符“abcde”以10个长度显示,左侧用“X”填充select lpad('abcde',10,'x') from dual;结果:xxxxxabcde3、数字函数:ceil:往上取整,与小数位的大小无关floor:往下取整,与小数位的大小无关.mod:取余。求模。round:四舍五入。trunc(m,n):4、 转换函数:-to_char:日期转化为字符串  例:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;    select to_char(sysdate,'yyyy') as nowYear   from dual;   //获取时间的年   select to_char(sysdate,'mm')    as nowMonth from dual;   //获取时间的月   select to_char(sysdate,'dd')    as nowDay    from dual;   //获取时间的日   select to_char(sysdate,'hh24') as nowHour   from dual;   //获取时间的时   select to_char(sysdate,'mi')    as nowMinute from dual;   //获取时间的分   select to_char(sysdate,'ss')    as nowSecond from dual;   //获取时间的秒select to_char(sysdate,'day')    as nowSecond from dual;   //获取时间的星期-to_date:把字符串类型日期转换为date类型日期。例:select to_date('2014-02-11','yyyy-mm-dd') from dualsysdata当前日期-to_number:把某种类型转换为数字类型。注意:如果字符类型的内容是数据,则可以实现自动转换为数字类型5、 其它函数:-NUL函数:把数字类型为null的值转换为0;结构:nvl(字段名称,0);nvl(comm,0);转换之后,可以实现算术运算。-decode函数:decode(参数一,参数二,参数三,....);参数一:字段名称参数二:参数一字段对应的内容。参数三:把参数一字段对应的内容替换成其它的内容。示例:select decode(JOB,'CLERK','业务员') from emp;6、聚合函数:MAX、MIN、SUM、AVG、COUNT-AVG :返回指定组中的平均值。-COUNT:返回指定组中项目的数量。 -MAX:返回指定数据的最大值。-MIN:返回指定数据的最小值。-SUM:返回指定数据的和,只能用于数字列。
    

看完了以上的数据库基础,你是否有一种想要了解多表查询的冲动呢,请看下一篇


http://chatgpt.dhexx.cn/article/nO1rYBny.shtml

相关文章

SQL基本语句(整理)

一、DDL(Data Definition Language) 数据定义语言&#xff0c;用来定义数据库对象&#xff08;数据库&#xff0c;表&#xff0c;字段&#xff09; ①查询 查询所有数据库 show databases; 查询当前数据库 select database(); ②创建 create database [if not exists] 数…

SQL常用语句(基础篇)

SQL常用语句&#xff08;基础篇) 说明&#xff1a;创建数据库 CREATE DATABASE database-name 说明&#xff1a;删除数据库 drop database dbname 说明&#xff1a;备份sql server —创建备份数据的device USE master EXEC sp_addumpdevice ‘disk’&#xff0c;‘testBac…

SQL最常用的语句

语法&#xff1a; 一步步由浅到深&#xff0c;这里用的都是mysql做的。 基础&#xff1a; 连接数据库&#xff1a; mysql -h10.20.66.32 -uroot -p123456 1 -h后面是mysqlServer所在地址&#xff0c;-u后面是用户名&#xff0c;-p后面是密码。 查看数据库 show database…

数据库常用sql语句总结

查看时右侧可以打开CSDN自带的目录&#xff0c;方便查看 目录 一、基础 1.SELECT 语句 2.SELECT DISTINCT 语句 3.WHERE 子句 4.AND 和 OR 运算符 5.ORDER BY 语句 6.INSERT INTO 语句 7.Update 语句 8.DELETE 语句 二、高级 1.TOP 子句 2.LIKE 操作符 3.SQL 通配…

10个必须掌握的SQL常用语句

世界上70%的相关性数据可以被储存为表格数据&#xff0c;即类似Excel&#xff0c;Csv类型的数据&#xff0c;如何去查询和分析相关性的数据&#xff1f;对于少量数据&#xff0c;我们可以使用Excel&#xff0c;更多一点数据&#xff0c;我们可以使用Python, pandas 处理大数据 …

从零开始USRP+GNRRADIO系列(基础入门篇和C++自定义模块)

从零开始USRPGNRRADIO系列&#xff08;基础入门篇&#xff09; 文章目录 从零开始USRPGNRRADIO系列&#xff08;基础入门篇&#xff09;usrp简介创建第一个usrp图C自定义模块 usrp简介 通用软件无线电外设&#xff08;USRP&#xff09;是由Ettus Research及其母公司National I…

入门学习计算机第十八天——自定义数据类型(结构体)

入门学习计算机第十八天——自定义数据类型&#xff08;结构体&#xff09; 编译器&#xff1a;Microsoft Visual Studio 2019 自定义类型&#xff1a; 结构体枚举联合体 结构体 结构体类型的声明 结构的基础知识 结构是一些值的集合&#xff0c;这些值称为成员变量 结构的…

【计算机基础】

文章目录 线程、协程的状态 计算机网络DNS解析 计算机基础进程间通讯的7种方式讲一下程序的虚拟内存、常驻内存和逻辑内存。堆和栈是存啥的&#xff1f;什么是大小端? 什么是死锁&#xff1f;什么情况下会发生&#xff08;避免&#xff09;死锁&#xff1f;死锁产生的4个必要条…

计算机基础(1)

目录 一、计算机发展 1.1计算机发展史 1.2计算机分类 1.2.1按规模划分 1.2.2服务器与客户机 1.2.2.1 服务器按外形分类 1.3服务器硬件 一、计算机发展 1.1计算机发展史 1、第一代计算机(1946-1957) 电子管时代 冯诺依曼体系结构&#xff1a;数字计算机的数制采用二进…

计算机基础介绍

1、组成部分 中央处理器、内存、存储设备、输入/输出设备、通信设备&#xff08;各部分通过总线来连接&#xff09; 2、冯诺依曼体系结构&#xff1a;现代计算机的基础 3、中央处理器&#xff08;CPU&#xff09;——计算机的大脑 &#xff08;1&#xff09;作用&#xff1a…

C语言基础入门——自定义类型

学习目标&#xff1a; 学习并了解C语言自定义类型 目录 学习目标&#xff1a; 一、结构体 ●结构体的声明 ●结构体的引用 ●结构体的定义和初始化 ●结构体的内存对齐 ●结构体的传参 ●结构体的位段&#xff08;位段的可填充和可移植性&#xff09; 二、枚举 ●枚举的定…

1.计算机基础

目录 1.1计算机系统 1.3 计算机硬件 1.4 计算机常用计数制 1.5 数据表示 1.1计算机系统 计算机多种形式&#xff1a;电脑&#xff0c;笔记本&#xff0c;智能手机&#xff0c;服务器等&#xff1b; 两部分组成&#xff1a;硬件系统和软件系统。 1.1.1 世界上第一台计算机 世…

一、计算机基础

计算机基础 一、第 1 章 计算机基础知识1-1 计算机概述1-1-1 计算机的产生与发展&#xff08;一&#xff09;计算工具的发展&#xff08;二&#xff09;现代计算机的发展&#xff08;三&#xff09;计算机的分代&#xff08;四&#xff09;计算机新技术的发展 1-1-2 计算机的特…

计算机基础及入门

1、计算机基本概念 1.1、计算机是什么 计算机&#xff08;computer&#xff09;&#xff1a; 俗称电脑&#xff0c;是现代一种用于高速计算的电子计算机器 特点&#xff1a; 数值计算&#xff1b;逻辑计算&#xff1b;存储记忆&#xff1b;能按照程序运行、自动、高速处理处理…

计算机基础入门

说明&#xff1a;计算机包含硬件(hardware)和软件(software)两部分。 计算机分为6大硬件&#xff1a; 1.CPU 即中央处理器&#xff08;central processing unit&#xff0c;简称CPU&#xff09;作为计算机系统的运算和控制核心&#xff0c;是信息处理、程序运行的最终执行单元。…

计算机基础的介绍

计算机概念 这是一个家用计算机的硬件和软件组成&#xff1a; 计算机软件代码最基层 — 固件&#xff0c;在计算机首次启动时由处理器运行一些引导加载程序&#xff0c;比如从U盘、光盘等读取操作 系统。这些程序永久储存在计算机内存中&#xff0c;所以称作固件。嵌入式操作…

计算机基础

文章目录 一、数据结构1. 排序算法快排归并排序堆 2. 结构堆和栈区别数组与链表数据库相关的B树、B树跳表LSM树红黑树前缀树 二、Java基础0 基础问题1. 抽象类和接口的区别2. final关键字、内部类、static3. 多态4. 成员变量和局部变量5. String类、StringBuilder类6. Java集合…

计算机基础知识——基础入门(一)

目录 CPU 一、CPU是什么 二、CPU 实际做什么 三、CPU 的内部结构 CPU 是寄存器的集合体 四、CPU 指令执行过程 内存 一、什么是内存 二、内存的物理结构 内存的读写过程 内存的现实模型 三、内存的使用 指针 数组是内存的实现 栈和队列 链表 二叉树 磁盘 认…

计算机基础教程(一)

《大学计算机基础教程PDF》下载链接 链接&#xff1a;https://pan.baidu.com/s/1PGsvh1oRD1euWUedEXNl8w 密码&#xff1a;zt4x 推荐先看下面的两本&#xff1a; 计算机是怎样跑起来的 程序是怎样跑起来的 这两本百度云连接&#xff0c;CSDN审核不通过&#xff0c;可以自己…

韩漫《绿色镌像》又名《绿色镌刻》

雕塑专业的学生马修在第一眼遇到陈时感受到了命运&#xff0c;而陈青宇看透了充满肮脏金钱和背叛的冷酷世界&#xff0c;他不断忍受着心中的疼痛&#xff0c;直到与马修相见&#xff0c;他开始展露自己的欲望...隐藏着不同欲望的两个男人的故事自此开幕——