前言
常用的数据库
oracle(中大型项目必用), mysql(常用), SQL Server(微软开发必用), db2(二次开发必用 erp)
sqllite(物联网使用), mongdb…
提示:以下面案例仅供参考
一、mysql是什么?
mysql数据库是属于oracle公司的产品,他最大的特点就是免费(200万条数据以下免费 中小型公司使用较多)
1.三大范式
第一范式 (1NF):列不可再分
第二范式 (2NF):属性完全依赖于主键
第三范式 (3NF):属性不依赖于其他非主键属性 属性直接依赖于主键
2.acid事务的四大特性
-
Atomicity(原子性):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完
成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 -
Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
-
Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
-
Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
3.环境
启动
视图工具
建立连接
二、使用步骤
1.DDL语句(数据库的增删查)
命令连接数据库(window + r)
或者使用可视化工具
查看所有的数据库
show databases;
添加数据库
create database 数据库名字;
加入数据库
use 数据库名字;
查看所有的表
show tables;
创建数据表
create table 表名(列名 类型 是否为空, 列名 类型 是否为空…)
删除数据表
drop table 表名
删除数据库
drop database 库名
2.数据表结构更改及相关操作
查看数据表结构
desc 数据表名;
添加字段
alter table 表名 add column 列名 类型 约束;
删除字段
alter table 表名 drop column 列名;
修改列 (modify修改结构 修改列的内容)
alter table 表名 change column 需要修改的列名 列名 类型 约束;
alter table 表名 modify column 需要修改的列名 类型 约束;
二 DML语句 (数据表数据的增删改查 crud)
1.简单的sql语句
添加(插入)
不指定字段(按照添加字段的顺序,将所有的字段填入)
-- 插入数据 insert into 表名 VALUES(值1,值2....)
insert into t_user VALUES(null,'jack');
指定对应的字段
insert into t_user VALUES(null,'jack');
查询
-- SELECT 字段 from 表名
select username from t_user
查询所有的字段(*不建议使用)
select * form t_user
修改(一般会根据主键修改)
-- 修改 update 表名 set 字段名=字段值,字段名=字段值... where 主键=某个值
update t_user set username='张三' where id = 1
删除(一般不会做删除操作)
-- 删除 delete from 表名 where 条件
delete from t_user where id=3
2. 查询语句
条件查询
where关键词
根据id查询对应的用户
select * from t_user where id = 1
查询对应的年纪小于10岁的用户
select * from t_user where age<10
查询年纪小于10岁的用户个数
select count(*) from t_user where age<10
分页查询
-- limit 两个值第一个是开始位置(下标) 第二个值为个数
select * from t_user where username = '刘德华' LIMIT 0, 10
所有的价格统计
select sum(money) from t_user
多条件查询
-- 查询id为 6 7 10 12的数据和名字叫rose 年纪小于15岁 and与 or或 not非
select * from t_user where id = 6 or id = 7 or id = 10 or id = 12 or (username='rose' and not age<15)
--所有in关键词
select * from t_user where id in(6,7,10,12) or (username='rose' and not age<15)
排序
--根据年龄排序
-- desc降序 asc 升序 ORDER BY 排序 where 在 order by 前面 order by 在 limit前面
select * from t_user where username = '刘德华' ORDER BY age asc LIMIT 0,3
2.复杂查询(多表查询)
查询张三拥有的商品
select * from t_car where user_id = (select id from t_user where username = '张三')
查询张三拥有的商品的总价
select sum(money) from t_car where user_id = (select id from t_user where username = '张三')
查询所有的商品并显示商品的拥有者名字
select t_car.*,t_user.username from t_car JOIN t_user where t_car.user_id = t_user. id
总结