【Mysql数据库】学习笔记
一、数据库的创建
create database database_name DEFAULT CHARACTER SET utf8; //创建一个数据库
drop database database_name; //删除数据库
1.1 DOS常用命令
1.1.1 数据库命令
mysqld install // 安装MySQL数据库服务
net start mysql 或 net stop mysql // 启动或停止MySQL服务
mysql -u username -p // 登录MySQL管理系统
use database_name; // 引用数据库
show databases; // 显示所有数据库
source path(.sql文件路径) //导入数据库文件,生成数据库,即根据sql脚本生成数据库;例如:source F:\mysql.sql
1.1.2 数据表操作命令
show tables; // 显示某数据库中所有表
desc table _name; //显示表的字段信息
show create table table_name; //显示表的创建信息
1.2 查询关系运算符
- =、 !=、 <>、<、<=、>、>=;
- between ····· and ········;
- in(set) ; //set是集合
- is null;is not null
- and ;
- or;
- not;
- like '%三'; //%表示任意多个字符,_表示任意单个字符
1.3 内连接和外连接
>内连接:
select t1.id,t1.name,t1.age,t2.score from table1_name t1 join table2_name t2 on t1.id=t2.id
或:
select t1.name,t1.age,t2.score from table1_name t1 , table2_name t2 where t1.id=t2.id
>外连接:
select t1.id,t1.name,t1.age,t2.score from table1_name t1 left join table2_name t2 on t1.id=t2.id //左连接
或:
select t1.id,t1.name,t1.age,t2.score from table1_name t1 right join table2_name t2 on t1.id=t2.id //右连接
select t1.id,t1.name,t1.age,t2.score from table1_name t1 full join table2_name t2 on t1.id=t2.id //全连接,MySQL不支持!
1.4 数据库备份和恢复
a. 备份
mysqldump -u root -p123 database_name>d:\myDB\demo.sql
b. 恢复
mysql -u root -p123 database_name<d:\myDB\demo.sql
或:
进入需要还原到的目的数据库;
source d:\myDB\demo.sql
二、基本表的创建
2.1 创建表
数据类型:int,char,varchar,text(字符串类型),blob(字节类型);double(5,2)表示最多5位,其中2位小数。
create table 表名
(
字段名1 数据类型 [not null] [默认值],
字段名2 数据类型,
字段名3 数据类型
);
例如:
create table student
(
stu_num int auto_increment, //自增量
stu_name char(10) not null,
stu_gender char(2),
stu_score int,
primary key(stu_num), //主键
foreign key(stu_name) references anotherTable_name(stu_name) //外键
);
2.2 常用约束
主键约束: primary key(字段名); //或在定义字段时直接在后面追加 primary key
外键约束: foreign key(字段名) references 表名(字段名);
非空约束: 字段名 数据类型 not null
唯一性约束: 字段名 数据类型 unique
默认约束: 字段名 数据类型 default 默认值
自增量: 字段名 数据类型 auto_increment //默认初始值为1,增量为1;如需从100开始,可以设置为auto_increment=100
2.3 修改表
alter table 旧表名 rename 新表名 //修改表名
alter table 表名 modify 字段名 数据类型; //修改字段数据类型
alter table 表名 change 旧字段名 新字段名 新数据类型 //修改字段名
alter table 表名 add 新字段名 数据类型 //添加字段
alter table 表名 drop 字段名 //删除字段
alter table 表名 AUTO_INCREMENT=100 //设置自增量初始值为100
2.4 删除表
drop table [if exist] 表名;
三、CRUD增删改查操作
3.1 数据插入-Insert
1. 插入单条记录
insert into 表名(字段名,字段名,字段名) //当插入所有字段时,字段名可以省略
values('值1','值2','值3');
2. 插入多条记录
insert into 表名(字段名,字段名,字段名)
values('值1','值2','值3'),
('值1','值2','值3'),
('值1','值2','值3');
3. 插入一个查询结果
insert into 表名()
select xxx //返回值个数应和需插入字段个数相同
from xxx
3.2 数据删除-Delete
delete from student(表名)
where name='zs';
3.3 数据修改-Update
update student(表名)
set score=90
where name='zs';
3.4 数据查询-select
1. 模式
select number,name,score
from student
where age>20
group by 字段名[字段名,字段名,字段名] //一个或多个字段名
having <条件表达式> //分组后的条件
order by 字段名 [ASC|DESC],字段名[ASC|DESC]; //默认升序
2. 常用聚合函数
count(*) //计算记录个数
count(字段名) //对一列中的值计算个数
sum(字段名) //求一列值得总和(数值型数)
avg(字段名) //求一列值得平均值(数值型数)
max(字段名) //求一列值得最大值
min(字段名) //求一列值得最小值
四、视图的创建
create view view_name(字段名,字段名,字段名)
as <select查询语句>
例如:
create view stu_sub(stu_num,stu_name) //创建视图
as select stu_num,stu_name
from student;
drop view stu_sub; //删除视图
五、触发器
create trigger trigger_name //创建触发器
on table(表名)
for insert|delete|update
as <sql_statement>(sql语句)
例如:
create trigger student_backup //学生备份表随学生表的改变而改变
on student
for insert,delete,update
as
begin
if((select count(*) from deleted) > 0)
begin
delete from student_backup
where stu_name in(select stu_name from deleted)
end
if((select count(*) from inserted) > 0)
begin
insert into student_backup
select *
from inserted
end
end
六、事务
6.1 事务四大特性
原子性;
一致性;
隔离性;
持久性。
6.2 事务隔离级别
赃读:一个事务A读取另一个事务B未提交的数据;
不可重复读:一个事务A读取另一个事务B提交后的数据(update);
虚读(幻读):一个事务A读取另一个事务B插入的数据(insert),前后不一致。
以上情况均为事务A已开启,但未提交时发生!
四个级别:
1* read uncommitted :赃读,不可重复读,虚读都有可能发生;
2* read commited :避免赃读。不可重复读,虚读都有可能发生;
4* repeatable read :避免赃读,不可重复读。虚读有可能发生;
8* serializable :避免赃读,不可重复读、虚读;
级别越高,安全性越高,性能越差!
6.3 查看和设置事务级别
查看当前事务隔离级别:select @@tx_isolation; //dos命令
设置事务隔离级别:set transaction isolation level 四个级别之一; //dos命令
设置隔离级别,必须在开启事务之前!
【Mysql数据库】学习笔记的更多相关文章
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- Mysql数据库学习笔记之数据库索引(index)
什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...
- MYSQL数据库学习笔记1
MYSQL数据库学习笔记1 数据库概念 关系数据库 常见数据库软件 SQL SQL的概念 SQL语言分类 数据库操作 创建数据库 查看数据库的定义 删除数据库 修改数据库 创建表 数据类型 约束 ...
- MySQL数据库学习笔记<一>
MySQL基本概念以及简单操作 一.MySQL MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系 ...
- MySQL数据库学习笔记(四)----MySQL聚合函数、控制流程函数(含navicat软件的介绍)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(三)----基本的SQL语句
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- mysql 数据库学习笔记一
一.navicat的引入: (第三方可视化的客户端,方便MySQL数据库的管理和维护)安装网址:https://www.navicat.com.cn/ NavicatTM是一套快速.可靠并价格相宜的数 ...
- MySql数据库学习笔记(1)
MySql数据库 下载地址 https://dev.mysql.com/downloads/mysql/5.1.html#downloads 连接到本机上的MYSQL mysql -u root -p ...
随机推荐
- idea设置控制台不打印日志
这样做的好处是当想打印数据到控制台查看就特别方便,这个在大数据spark sql使用的多.当然如果代码报错也会打印,这个不必担心. 方案Ⅰ 方法是将这个log日志文件放到idea的资源目录里即可 lo ...
- 多选下拉框(select 下拉多选)
方法一:使用multiple-select.js和multiple-select .css实现 HTML代码: <select id='checkedLevel' style="wid ...
- VS2019 字符串对指针char*赋值编译器报错原因及解决方法
2019-05-26 21:55:08 前几天在敲代码时,将字符串“Hellow world!”赋值给指针char*类型指针时编译器报错的问题 网上搜索后发现 char*是历史遗留问题,如果程序修 ...
- 跨域时发送预检请求,tp5的restful无options方法的解决方案
解决 跨域问题解决 问题:使用vue-resource发送delete请求时报options请求404 思考:明明发送的是delete请求,为何变成了options请求? 答:跨域情况下,PUT,DE ...
- Linux下VIM配置以及常用快捷键
一.VIM配置 在目录 /etc/vim下面,有个名为vimrc的文件,这是系统中公共的vim设置文件,对所有用户都有效.而在每个用户的主目录下,都能自己建立私有的设置文件,命名为:“.vimrc”. ...
- 洛谷 P2312 解方程
题目 首先,可以确定的是这题的做法就是暴力枚举x,然后去计算方程左边与右边是否相等. 但是noip的D2T3怎么会真的这么简单呢?卡常卡的真是熟练 你需要一些优化方法. 首先可以用秦九韶公式优化一下方 ...
- webapp开发学习---Cordova环境搭建
Cordova 使用HTML, CSS & JS进行移动App开发;多平台共用一套代码;免费开源 步骤:(来自Cordova官网) 1.安装Cordova(在node.js环境下进行安装) 命 ...
- iOS Programming Camera 1
iOS Programming Camera 1 1 Displaying Images and UIImageView 1.1 put an instance of UIImageView o ...
- LigerUI用Post\Get\Ajax前后台交互方式的写法
parms 参数统一 json格式的数据 url 访问后台的url 设置同步参数 [javascript] view plain copy $.ajaxSetup({ async : false} ...
- angular2快速开始
简介 5 分钟从0搭建一个ng2项目demohttps://angular.io/docs/js/latest/quickstart.html 你运气真好,竟然看到了这篇文章,你省事了,一分钟让你完成 ...