数据库基础操作总结

数据库:存储数据,管理数据的仓库
常见数据库分为:关系型数据库和非关系型数据库(数据之间的紧密程度) 关系型:Oracle MySQL SQL server Access
非关系型:MongoDB Redis Solr Hive HBase ElasticSearch
MySQL 数据库:
1、 MySQL 服务端:处理具体数据维护,保存磁盘
2、 MySQL 客户端:(Create Rentrieve (读取) Update Delete)
数据库结构: 数据库—表—数据(行和列组成)
SQL 语句:结构化查询语言,是一种特殊目的的编程语言,是一种数据库查询和程序设 计语言,用于数据存取、查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩 展名。
分类:DML (DATA Manipulation language) 数据库操纵语言 DDL (DATA Definition language) 数据库定义语言
DCL (DATA Control language) 数据库控制语言
DQL (DATA Query language) 数据库查询语言
数据库的操作:
1、 查看数据库 show databases
2、 新建数据库 create database 数据库名 default character set utf8/
create database 数据库名 charset utf8 3、 删除数据库 drop database 数据库名
4、 使用数据库 use database 数据库名
表的操作:
1、 查看表 show table 表名

2、 新建表 create table 表名(字段名 字段类型(字段长度))
3、 添加字段 alter table 表名 add column 字段名 字段类型 字段长度
4、 描述表 desc 表名
5、 删除表 drop table 表名
6、 修改表内字段名和字段类型 alter table 表名 change 旧字段名 新字段名 新
数据类型
7、 修改表内字段类型 alter table 表名 modify 字段名 字段类型 8、 删除字段 alter table 表名 drop 字段名
表记录的操作:
修改:update 表名 set 字段名=字段值(不用 where 限制就全部删除) 查询:select * from 表名
插入:insert into 表名 values( 值,值,值)
删除:delete from 表名 (不用 where 限制就全部删除)
数据类型:
1、 命名规则:字母开头,长度不超 30 个字符,不使用 SQL 保留字(select、update...),
多个单词下划线隔开,只能使用 A~Z,a~z,0~9,$..... mysql 习惯全小写(tb_user) oracle 习惯全大写(TB_USER)
2、 数字类型:tinyint/int 整数类型 float/double 小数类型 decimal(5,2)/numeric(5,2)
一共 5 位,小数占 2 位 3、 字符:
长度确定:char,查询快浪费空间(不足使用空格填充,最多容纳 2000 个字符) 长度不确定:varchar,查询慢节省空间(最多容纳 4000 个字符,变长字符串) 大文本:大量文字(不推荐使用,尽量使用 varchar 代替)
4、日期:date 年月日 time 时分秒 datatime 年月日时分秒 Timestamp 时间戳 从 1970 年 1 月 1 日到指定日期的毫秒数
4、 图片视频音频:只存路径,文件在磁盘上

基础函数:
为了方便的操作数据,MySQL 提供了很多函数(方法)
1、 转大小写 upper()/lower() select upper(字段名) from 表名
2、 求长度 length(字段名)
3、 截取 substr(字段名,1,2) 从第 1 行截取 截取 2 行
4、 拼接 concat(字段名,要拼接的字符)
5、 替换 replace(字段名,’替换谁’,‘替换成谁’)
6、 Ifnull(字段名,’替换成什么’) 如果是 null 就替换
7、 处理小数 round(字段名,’保留位数’)四舍五入 ceil()/floor() 向下向上取整
8、 日期处理 now() year() month() day() hour() minute() second()
SELECT YEAR ( NOW () )
9、 转义字符 \ 输出 xi’an “xi’an”或者’xi\’an’
高级函数:(聚合函数 aggregation)max、min、avg、sum、count 注意:conut(1) 或 count(*)代替 count(字段名) 此写法不统计 null,计算不准确
3. count(*) 和 count(1)和 count(列名)区别 执行效果上:
count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为 NULL
count(1)包括了忽略所有列,用 1 代表代码行,在统计结果的时候,不会忽略列值为 NULL
count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只 空字符串或者 0,而是表示 null)的计数,即某个字段值为 NULL 时,不统计。
事务:将一堆的 SQL 语句绑定在一起执行,要么都执行,要么都不执行。
数据库事务:是指作为单个逻辑工作单元执行的一系列操作,要么完全执行,要么完全 不执行。
条件查询:
1、 去重(distinct):select distinct 字段名 from 表名

分组:
Select
降序:select * from 表名 order by 字段名 desc
name , count(1) from student group by name;
2、 过滤条件(where):
3、 模糊查询(like):select * from 表名 where 字段名 like ‘%*%’
4、 Null: is null is not null
5、 Between and(含头含尾):
6、 分页(limit):select * from 表名 limit 2,2 从第三页开始连续分两页
Select * from 表名 limit 2 取前两条
7、 排序(order by):select * from 表名 order by 字段名 默认升序
注意事项:
分组以后过滤条件使用 Having 不用 Where
1、 什么时候分组??? 答:当查询结果出现了混合列的时候,必须分组。
2、 按照什么分组??? 答:按照非聚合列分组
事务的四个特征:(Atomicity,Consistency,Isolation,Durability) 原子性(或称不可分割性):同成或同败 一致性:保证数据在多台设备上是一致的 隔离性(又称独立性):高并发但保证数据的安全(锁机制) 持久性:处理事务后,数据的修改是永久的
隔离性分类:
读未提交(read uncommited):性能高,安全性差,可能发生数据并发问题。 读提交:(read commited):Oracle 默认的隔离级别。
可重复读:(repetable read):MySQL 默认的隔离级别,安全性好,性能一般。 串行化:(serializable):表级锁,读写都加锁,效率低,安全性高,不能并发。
查询 MySQL 的隔离级别:MySQL 提供事务管理,默认一条 SQL 一个事务,如果想自己

管理事务,那么需要手动开启事务和结束事务。
1、 开启事务:start transaction(begin)
2、 执行 SQL(增删改)
3、 结束事务:commit(提交) rollback(回滚)
事务处理
1、 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务(show
engines)
2、 事务处理可用来维护数据的完整性,保证成批的 SQL 语句同时执行或不执行
3、 事务用来管理增删改语句,该类语句会破坏数据
4、 MySQL 默认数据库的事务是开启的,执行 SQL 后自动提交
5、 MySQL 的事务可手动开启结束
字段约束
1、 非空约束:not null
2、 唯一约束:unique
3、 主键约束:primary key
4、 主键自增约束:auto_increment
5、 默认约束:default
6、 检查约束:check
7、 外键约束:foreign key
主表:
CREATE TABLE tb_user(
id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(10),age INT )
子表:
CREATE TABLE tb_user_address(
user_id INT PRIMARY KEY,address VARCHAR(30),
FOREIGN KEY(user_id) REFERENCES tb_user(id)
)
约束效果:

子表主键的值必须取自主表,主表的记录要想删除,要确保子表有没有在用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊渊啊渊.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值