一、数据库级及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:返回指定数据的和,只能用于数字列。
    

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

数据库基础(常用SQL语句)相关推荐

  1. SQL基础:常用SQL语句详解(转)

    到今天为止,人们对关系数据库做了大量的研究,并开发出关系数据语言,为操作关系数据库提供了方便的用户接口.关系数据语言目前有几十种,具有增加.删除.修改.查询.数据定义与控制等完整的数据库操作功能.通常 ...

  2. mysql dede arctiny_如何用织梦SQL命令行工具操作数据库及常用sql语句整理

    用织梦的朋友都知道,如果需要对数据库进行批量操作,可以用织梦后台[系统]-[sql命令行工具]实现.其实这只是织梦系统为了大家操作方便,提供的一个对mysql数据库操作的工具,这样大家在需要批量操作数 ...

  3. Oracle数据库基础知识+sql语句练习

    文章目录 四.数据库 4.1 Oracle 准备知识 SQL基本分类 Oracle数据类型 基本用法 事务 事务特性: 隔离性问题: 隔离级别: 锁 锁的介绍 锁的分类 锁的类型 锁等待和死锁 查看是 ...

  4. MySQL数据库中常用SQL语句

    开发过程中我们经常会用到各种SQL语句,今天小编就来和大家分享一些简单的SQL语句的使用,便于大家对于项目的开发. 1.查询:查询本字段带文字的数据. select * from student  w ...

  5. 软件测试--------数据库MySQL 常用sql语句

    1 --选择:    select * from table1 where 范围 2 --插入:       insert into table1(field1,field2) values(valu ...

  6. 数据库基础的SQL语句

    1.创建新的数据表 primary key 为主键 类型则有Int类型,varchar()类型,char()类型, foreign key 为外键. 2.向表中添加数据(数据的列数一定要与表中列相对应 ...

  7. 常用SQL语句 - 基于MySQL数据库

    常用SQL语句 - 基于MySQL数据库 基础 连接数据库 mysql -h10.20.66.32 -uroot -p123456 -h后面是mysqlServer所在地址,-u后面是用户名,-p后面 ...

  8. MySQL 数据库 之 高级 SQL 语句(常用查询,正则表达式,运算符,库函数,存储过程)

    文章目录 前言 一 . 常用查询介绍 1.按关键字排序 1.1默认升序 1.2 降序 1.3 多字段的排序 2. 对结果进行分组 2.1 分组统计 3.限制结果条目 3.1 查看前4行 3.2 查看第 ...

  9. mysql备份数据库语句6_13.4 MySQL用户管理;13.5 常用sql语句;13.6 MySQL数据库备份恢复...

    扩展 : SQL语句教程 什么是事务?事务的特性有哪些? 根据binlog恢复指定时间段的数据 mysql字符集调整 使用xtrabackup备份innodb引擎的数据库  innobackupex  ...

  10. mysql用户管理,常用sql语句,mysql数据库备份恢复

    2019独角兽企业重金招聘Python工程师标准>>> mysql用户管理 grant all on . to 'user1' identified by 'passwd'; gra ...

最新文章

  1. 现代化权限管理解决方案平台推动商业模式的演进
  2. android 蒙版图片带拖动_推荐一个好用小巧的Android引导蒙版(浮层)库
  3. phpcms函数:用*号替换(私密信息)中间数据(如手机号、邮箱)
  4. spark python入门教程_你是如何自学 Python 的?
  5. 打造安全可靠的研发中心桌面
  6. windows c语言 socket通信
  7. 分享一篇文章,博主的经历值得借鉴
  8. 「镁客·请讲」归墟电子王景阳:以桌面小型机器人切入市场,沿着“机器人+教育”的方向前进...
  9. 优秀博士生和普通博士生差距能有多大?
  10. wifi卡慢延迟高_如何解决WiFi又慢又卡
  11. java打造手机远程控制电脑之详细教程
  12. Nature:给研究生的四条金玉良言;颜宁:写的真好,相见恨晚
  13. spark 相关性分析_《Spark机器学习进阶实战》——2.3.2 相关性分析
  14. 影像去雾软件(雾气消除)免费版
  15. americdan-life
  16. javascript最常用的技巧
  17. 上海市房管局局长否认房产税试点政策失败
  18. dxe 如何跟smm 沟通 SMM Communication Protocol
  19. 一款令人印象深刻的FCPX插件:3D Photo Animator (3D照片动画制作器)
  20. 金融结构对技术创新的影响效应 及其区域差异研究(马 微 惠 宁)

热门文章

  1. MySQL(14) 数据库优化方案
  2. 电脑显示已连接网络但是无internet访问
  3. 匿名飞控代码解读汇总
  4. 微信小程序后端Java接口开发
  5. 0 基础 Java 自学之路(2021年最新版)
  6. 小甲鱼python【魔法方法-算数运算】学习笔记
  7. Python深度学习三剑客,你集齐了吗?
  8. 吉利嘉际车机安装第三方软件教程(2022年更新)
  9. python 代理抓包_python requests代理设置,fiddler抓包
  10. Python开发手册