1、数据库概述

数据库库是存储、调用、分析数据的仓库,主要分为关系型数据库管理系统(RDBMS)与非关系型数据库管理系统两类

  • 关系数据库是数据库应用的主流
  • 关系型数据库以行和列的形式存储数据,这一系列的行和列被称为表,一组表组成数据库。
  • 目前主流关系型数据库有Oracle、DB2、Microsoft SQL Server、MySQL等。

操作关系型数据库时使用的语言叫结构化查询语句,简称SQL结构化查询语言。

2、数据定义语言DDL

数据定义语言是用来对数据库管理系统中的对象进行“增删改查”操作的SQL语句,一般应用DDL语言对数据库不同对象进行定义操作时,需要提前具备相应数据库管理权限。

  • 针对数据库对象的操作语言
  • 针对数据表对象的操作语言

3、数据库基本命令

定义数据库

  • 创建数据库:create database 数据库名称;
  • 查看数据库:show create database 数据库名称;
  • 查看数据库列表:show databases;
  • 使用数据库:use 数据库名称;
  • 删除数据库:drop database 数据库名称;

数据表-增删改查

  • 创建数据表:create table 表名;
  • 使用test数据库:use test;
  • 创建员工信息表:

create table emp(

depid char(3),

depname varchar(20),

peoplecount int);

  • 查看表是否创建成功:show tables;
  • 删除数据表:drop table emp;
  • 自增字段:

create table emp(

id int primary key auto_incerment,

name varchar(4) not null,

math int default 0,

minmax float unique);

数据表-约束条件

  • 主键约束

单字段主键

create table emp(

depid char(3) primary key,

depname varchar(20));

  多字段主键

create table emp(

depid char(3) primary key,

depname varchar(20)

peoplecount int,

primary key(depname,depid));

  • 非空约束

create table emp(

depid char(3),

depname varchar(20) not null,

peoplecount int);

  • 唯一性约束

create table emp(

depid char(3) primary key,

depname varchar(20) not null,

peoplecount int unique);

  • 默认约束

create table emp(

depid char(3) primary key,

depname varchar(20) default,

peoplecount int unique);

数据表-修改数据表

  • 修改数据表名:alter table emp rename emodep;
  • 修改数据类型:alter table empdep modify depname varchar(30);
  • 修改字段名:alter table empdep change depname dep varchar(30);
  • 修改字段名+字段类型:alter table empdep change dep depname  varchar(20);
  • 添加新字段+添加约束条件:alter table empdep add maname varchar(10) not null;
  • 修改字段排列顺序:
    • 将顺序放第一位:alter table empdep modify maname varchar(10) first;
    • 将a顺序放b顺序之后:alter table empdep modify maname varchar(10) after depid;
  • 删除字段:alter table empdep drop maname;

数据库操作语言DML

  • 数据填充insert/load:

    • 插入数据: insert into 表名(字段1,字段2,...) values ......
    • 导入外部数据: load data local infile '文件路径.txt' into table Mon fields terminated by '\t' ingore 1 lines;
  • 数据修改update:
    • 为字段赋值:update 表名 set 字段名 = 值;

eg:update fruits set f_name = concat('fruit_',f_name);

  • 数据删除delete:

    • 删除某字段:delete from fruits where f_id = 'b5';

数据库查询

  • select 查询语法

select <目标列表组> from <数据源表名> where <元组选择条件>

group by <分列组> having <组选择条件>

order by <排序列1>  <排序要求1>;

  • 多表查询

将两个以上的数据表通过关键字段连接在一起,并从不同表中选取不同字段进行查询的方法

select a_list1,a_list2,a_list3,b_list1,b_list2,b_list3,concat(a_list1,b_list1)

from a join b on a.key = b.key

  • 内连接:select <sekect_list> from a inner join b on a.key=b.key;
  • 左连接:select <sekect_list> from a left join b on a.key=b.key;
  • 右连接:select <sekect_list> from a right join b on a.key=b.key;
  • 联合查询:select a.* from a union all select b.* from b
  • 全连接查询:

select * from a left join  b on key1=key2 union select * from a right join  b on key1=key2

  • 子查询:写在()中,把内层查询结果当做外层查询参照的数据表来用

查询操作符

and:用来联合多个条件进行查询,条件与条件之间是“和/且”的意思;

or:用来联合多个条件进行查询,条件与条件之间是“或”的意思;

in:判断某个字段的值是否在指定的集合中,若在指定集合中则满足查询条件,若不在则不满足;

between:判断某个字段的是否在指定的范围内,若在则满足查询条件,若不在则不满足;

like:用来匹配字符串是否相等,如果与指定的字符串相匹配,则满足查询的条件,否则不满足;

is null:用来判断字段的值是否为空值(null),如果为空值则满足查询条件,否则不满足;

其中not是可选参数,加上not表示字段不是空值是满足条件。

distinct:用来消除重复记录,达到数据去重作用;

  • 操作符合子查询组合应用

        any:表示满足其中任意一个条件即可

select * from fruits where id=any

(select id from fruits where price between 10 and 20);

        all:表示满足所有条件才满足:

select * from fruits where price >all

(select price from fruits where price<=20);

        exist:表示存在:select * from fruits where exist (select * from fruits where price>20);

as:可以将表和字段名重新命名为别的名称使用,只在查询中有效

limit:查询后只显示limit指定数字的行数结果

4、数据库常用函数

  • 数学函数

abs(x)

绝对值
bin(x) 二进制(oct返回八进制,hex返回十六进制)
exp(x) e的x次方
greatest(x1,x2,x3,...,xn) 最大值
least(x1,x2,x3,...,xn) 最小值
ln(x) x的自然对数
log(x,y) x的以y为底的对数
mod(x,y) x/y的模(余数)
pi() pi的值(圆周率)
rand()

0-1内的随机值

可以提供一个参数使随机数生成器生成一个指定值

floor(x) 小于x的最大整数值(去掉小数取整)
ceiling(x) 大于x的最小整数值(进一取整)
round(x,y) 参数x的四舍五入的有y位小数的值(四舍五入)
truncate(x,y) x截短为y为小数的结果
sign(x) 数字x的符合值(正数为1,负数为-1,0为0)
sqrt(x) 平方根
  • 字符串函数
ascii(char) ascii码值
bit_length(str) 字符串的比特长度
concat(s1,s2,...,sn) 将s1,s2,...,sn连接成字符串
insert(str,x,y,instr) 将字符串str从第x位置开始,y个字符长的子串替换为字符串instr,返回结果
find_in_set(str,list) 如果发现str,返回str在list中的位置
lcase(str)/lower(str) 将所有大写字母给为小写
ucase(str)/upper(str) 将所有小写字母给为大写
left(str,x) 最左边的前x个字符
right(str,x) 最右边的后x个字符
length(str) 字符长度数
position(substr,str) 子串substr在字符串str中第一次出现的位置
quote(str) 用反斜杠转义str的单引号
repeat(str,srchstr,rpicstr) str重复x次的结果
reverse(str) 颠倒字符str
rtrim(str) 去掉字符串str开头的空格
trim(str) 去掉字符串str开头和结尾的所有空格
  • 日期及时间函数
date_format(date,fmt) 依照指定的fmt格式格式化日期date值
from_unixtime(ts,fmt) 依照指定的fmt格式,格式化unix时间戳ts
monthname(date) 返回英文月份名(eg:October)
dayname(date) 返回英文星期名(eg:Monday)
now() 当前日期和时间
curdate()/current_date() 当前日期
curtime()/current_time() 当前时间
quarter(date) date在一年当中的季度(1-4)
week(date) date在一年当中的第几周(0-53)
dayofyear(date) date在一年当中的第几天(1-366)
dayofmonth(date) date在一个月当中的第几天(1-31)
dayofweek(date) date在一周当中的第几天(1-7)
year(date) 年份
month(date) 月份
day(date) 天数部分
hour(time) 小时值
minute(time) 分钟值
second(time) 秒值
date(datetime) 日期值
time(datetime) 时间值
  • 逻辑函数

    • 空值函数

      • ifnull(expression,alt_value)
    • 判断函数
      • if(expr1,expr2,expr3)
    • 逻辑表达式
      • case when expr1 then expr2 [when expr3 then expr4 ... else expr] end;
    • 开窗函数

    (1)over()函数:如查看每位员工与公司所有员工的平均工资之间的情况

select *,avg(sal) over() 平均工资 from emp;

(2)partition by 子句:如查询各部门的平均工资

select *,avg(sal) over(partition by deptno);

  • 其他函数
group_concat(col) 由属于一组的列值连接组合而成的结果
cast() 将一个值转换为指定的数据数据

数据表ER图

E-R图也称实体-联系图(Entity Relationship Diagram),用来描述现实世界的概率模型。

CDA学习-Sql数据库相关推荐

  1. 带领初学者学习 SQL 数据库编程视频教程(11 个视频)

    带领初学者学习 SQL 数据库编程视频教程(11 个视频) #1 课程介绍「02:04」 #2 在各操作系统中安装 MySQL 和 PostgreSQL 数据库「05:46」 #3 工欲善其事,必先利 ...

  2. 【学习SQL数据库】并发操作引起的数据库不一致

    文章目录 丢失修改 不可重复读 幻影现象 读脏数据 原因 丢失修改 事务1和事务2读取同一数据后,事务1对数据进行修改,事务2的提交破环了事务1的提交,导致事务1对数据的修改丢失. 假设A为4 时间序 ...

  3. Unity + SQL数据库创建管理玩家排行榜学习教程

    Unity + SQL Databases Player Management Leaderboards + More! Unity + SQL数据库玩家管理排行榜+更多! MP4 |视频:h264, ...

  4. 学习sql注入:猜测数据库_对于SQL的热爱:为什么要学习它以及它将如何帮助您...

    学习sql注入:猜测数据库 I recently read a great article by the esteemed @craigkerstiens describing why he feel ...

  5. server sql 数据库列名price无效_SQL学习笔记整理(持更)

    从零开始学习SQL,在这里分享自己的笔记,主要通过自己看的.做的例题映射知识点.入门级SQL 应知应会Key Point与例题.虽然这个笔记不是最全面深入的,但一定必含小白入门必懂基础要点(非常基础) ...

  6. 学习sql注入:猜测数据库_面向数据科学家SQL:学习简单方法

    学习sql注入:猜测数据库 We don't pick a hammer and look for nails - that would be an unusual way of solving pr ...

  7. Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)

    知识点: 1.使用SQL Helper创建数据库 2.数据的增删查改(PRDU:Put.Read.Delete.Update) 背景知识: 上篇文章学习了保存文件,今天学习的是保存数据到SQL数据库中 ...

  8. 学习sql注入:猜测数据库_学习SQL:删除和更新数据SQL最佳实践

    学习sql注入:猜测数据库 Deleting and updating data is very common, but if performed without taking care, which ...

  9. 学习sql注入:猜测数据库_学习SQL:SQL数据类型

    学习sql注入:猜测数据库 What are SQL data types, why do we need them, and how to use them? Today, we'll try to ...

最新文章

  1. ganglia访问时出现“You don‘t have permission to access /ganglia/ on this server“
  2. 芯片是怎么制造的?为什么那么难?
  3. ajax get请求_python测试开发django50.jquery发送Ajax请求(get)
  4. python如何运行py程序_如何用Python汇款:Web3.py教程
  5. 织梦DeDeCMS友情链接文字显示不全
  6. java 删除指定文件夹和下面所有文件_java——File IO流
  7. grub配置文件丢失的解决方法
  8. 客户读取文件服务器上文件的过程,java从服务器上读取文件
  9. 安装mysql-server之后,root用户不能登录问题
  10. 柯美6501服务器显示AA,柯美6501维修手册全_Part1 (2).pdf
  11. 抖音无水印视频下载,不用借助第三方网站【详细教程】
  12. scrapy 报错401
  13. 龙芯平台的播放器和浏览器硬解1080和4k视频
  14. 递推和递归:一个自下而上,一个自上而下
  15. 隐马尔科夫模型(HMMM)
  16. 不忘初心,能偷懒就偷懒:C#操作Word文件
  17. Java实体对象为null时set方法空指针异常
  18. css如何将彩色图片变为黑白图片
  19. 程序员微信名昵称_独一无二的情侣微信名-心有所属,名花有主
  20. 磁场强度单位T(特斯拉)和高斯

热门文章

  1. 小米的隔空充电,看起来好酷
  2. coreldraw x8里线段显示尺寸_CorelDRAW X8轮廓线的粗细变化两种方法介绍-轮廓线的粗细变化教程_好特教程...
  3. 荣耀9青春版鸿蒙,荣耀9青春版吃鸡怎么样?荣耀9青春版游戏体验:流畅吃鸡没问题...
  4. Protocol完整的
  5. 这一次我不再低调,老板法拉利的车牌有我的汗水
  6. 股市暴跌让基金半年报更耀眼
  7. Android Google Map 开发步骤 地图展示空白问题
  8. 日记账GL追溯到AR模块
  9. 最优化方法:梯度下降(批梯度下降和随机梯度下降)
  10. 2022年全球市场一次性打火机总体规模、主要生产商、主要地区、产品和应用细分研究报告