CDA学习-Sql数据库
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数据库相关推荐
- 带领初学者学习 SQL 数据库编程视频教程(11 个视频)
带领初学者学习 SQL 数据库编程视频教程(11 个视频) #1 课程介绍「02:04」 #2 在各操作系统中安装 MySQL 和 PostgreSQL 数据库「05:46」 #3 工欲善其事,必先利 ...
- 【学习SQL数据库】并发操作引起的数据库不一致
文章目录 丢失修改 不可重复读 幻影现象 读脏数据 原因 丢失修改 事务1和事务2读取同一数据后,事务1对数据进行修改,事务2的提交破环了事务1的提交,导致事务1对数据的修改丢失. 假设A为4 时间序 ...
- Unity + SQL数据库创建管理玩家排行榜学习教程
Unity + SQL Databases Player Management Leaderboards + More! Unity + SQL数据库玩家管理排行榜+更多! MP4 |视频:h264, ...
- 学习sql注入:猜测数据库_对于SQL的热爱:为什么要学习它以及它将如何帮助您...
学习sql注入:猜测数据库 I recently read a great article by the esteemed @craigkerstiens describing why he feel ...
- server sql 数据库列名price无效_SQL学习笔记整理(持更)
从零开始学习SQL,在这里分享自己的笔记,主要通过自己看的.做的例题映射知识点.入门级SQL 应知应会Key Point与例题.虽然这个笔记不是最全面深入的,但一定必含小白入门必懂基础要点(非常基础) ...
- 学习sql注入:猜测数据库_面向数据科学家SQL:学习简单方法
学习sql注入:猜测数据库 We don't pick a hammer and look for nails - that would be an unusual way of solving pr ...
- Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)
知识点: 1.使用SQL Helper创建数据库 2.数据的增删查改(PRDU:Put.Read.Delete.Update) 背景知识: 上篇文章学习了保存文件,今天学习的是保存数据到SQL数据库中 ...
- 学习sql注入:猜测数据库_学习SQL:删除和更新数据SQL最佳实践
学习sql注入:猜测数据库 Deleting and updating data is very common, but if performed without taking care, which ...
- 学习sql注入:猜测数据库_学习SQL:SQL数据类型
学习sql注入:猜测数据库 What are SQL data types, why do we need them, and how to use them? Today, we'll try to ...
最新文章
- ganglia访问时出现“You don‘t have permission to access /ganglia/ on this server“
- 芯片是怎么制造的?为什么那么难?
- ajax get请求_python测试开发django50.jquery发送Ajax请求(get)
- python如何运行py程序_如何用Python汇款:Web3.py教程
- 织梦DeDeCMS友情链接文字显示不全
- java 删除指定文件夹和下面所有文件_java——File IO流
- grub配置文件丢失的解决方法
- 客户读取文件服务器上文件的过程,java从服务器上读取文件
- 安装mysql-server之后,root用户不能登录问题
- 柯美6501服务器显示AA,柯美6501维修手册全_Part1 (2).pdf
- 抖音无水印视频下载,不用借助第三方网站【详细教程】
- scrapy 报错401
- 龙芯平台的播放器和浏览器硬解1080和4k视频
- 递推和递归:一个自下而上,一个自上而下
- 隐马尔科夫模型(HMMM)
- 不忘初心,能偷懒就偷懒:C#操作Word文件
- Java实体对象为null时set方法空指针异常
- css如何将彩色图片变为黑白图片
- 程序员微信名昵称_独一无二的情侣微信名-心有所属,名花有主
- 磁场强度单位T(特斯拉)和高斯
热门文章
- 小米的隔空充电,看起来好酷
- coreldraw x8里线段显示尺寸_CorelDRAW X8轮廓线的粗细变化两种方法介绍-轮廓线的粗细变化教程_好特教程...
- 荣耀9青春版鸿蒙,荣耀9青春版吃鸡怎么样?荣耀9青春版游戏体验:流畅吃鸡没问题...
- Protocol完整的
- 这一次我不再低调,老板法拉利的车牌有我的汗水
- 股市暴跌让基金半年报更耀眼
- Android Google Map 开发步骤 地图展示空白问题
- 日记账GL追溯到AR模块
- 最优化方法:梯度下降(批梯度下降和随机梯度下降)
- 2022年全球市场一次性打火机总体规模、主要生产商、主要地区、产品和应用细分研究报告