启动或停止
net start mysql;
net stop mysql;
登录或退出
mysql -uroot -p123
mysql -uroot -p 这种方式可隐藏输入的密码
mysql -h IP地址或域名 -uroot1 -p 远程登录服务器的Mysql
exit 退出
\c 终止当前命令
查看信息或使用
show databases;
show tables;
use tableName;
select * from tableName; 查看表的数据
desc tableName; 查看表的结构
查看数据库版本和当前数据库
select version();
select database();
导入sql文件和执行脚本
source C:\xx.sql
创建
创建数据库 create table tableName;
数据导出
//导出fruitshop数据库
mysqldump fruitshop > D:\xxx\xxx.sql -uroot -p123
//导出fruitshop数据库的user表
mysqldump fruitshop user > D:\xxx\xxx.sql -uroot -p123
数据导入
create database table;
source D:\.....
数据库概念理论知识
DQL:数据库查询语言 ,例如select ...
DML:数据库操作语言(对表的数据进行操作)
凡是对表当中的数据进行增删改
例如:insert增、delete删、update改
DDL:数据库定义语言(对表的结构进行操作)
凡是带有create增、drop删、alter改的搜索DDL
TCL:事务控制语言(包括事务提交commit、事务回滚rollback)
DCL:数据控制语言(授权grant、撤销权限revoke...)
表的命名和字段命名 使用下划线分隔单词,例如 table_name,user_phone
常见的数据类型
varchar 可变长度的字符串,会根据实际的数据长度分配大小,优点:节省空间,缺点:需要动态分配空间速度慢
char 定长字符串,char(6) 就是6,优点:速度较快,缺点:使用不当会导致空间浪费
int 数字中的整数型,等同于java 的int
bigint 数字中的整数型,等同于java 的long
float 单精度浮点数
double 双精度浮点数
date 短日期 只包括年月日
datetime 长日期 包括年月日时分秒
text 长文本
clob 字符大对象,最多可存4G的字符串,比如存文章
blob 二进制大对象 用于存储图片、声音、视频;需要使用IO流插入
建表 Create
create table 表名 (
字段名1 数据类型,
字段名2 数据类型,
...);
//将查询结果 插入到一张新表中
create table 新的表名 as select * from user;
删表 Drop
drop table 表名;
修改表 Alter
alter table t_student rename to student;
插入数据 Insert
insert into 表名(字段名1,字段名2) values('数据1','数据2');
insert into 表名 values('数据1','数据2'); 省略字段名,等同插入所有字段
insert into 表名 values('数据1','数据2'),('数据3','数据4');
将查询结果插入到一张表中
insert into 插入的表名 select * from user;
修改数据 Update
update 表名 set 字段名1='数据1',字段名2='数据2' where 条件;
update user set username='test',user_emai='xx@qq.com' where id=1;
删除数据 Delete
delete 语句 删除的不是真实删除,可以支持回滚
delete from 表名 where 条件;
delete from user where id=1;
快速删除表中的数据(物理删除)
truncate 删除后不支持回滚,优点快速
truncate table 表名;
数据库范式
第一范式:要求任何一张表必须有主键,每一个字段原子性不可再分。
第二范式:建立在第一范式基础之上,要求所有的非主键字段完全依赖主键,不要产生部分依赖;
第三范式:建立在第二范式基础上,要求所有非主键字段直接依赖主键,不要产生传递依赖;
设计数据库表的时候,按照以上的范式进行,可以避免表中数据冗余,空间的浪费;
MySQL 约束和事务
约束
什么是约束(constraint) ,在创建表的时候,我们可以给表中的字段加入一些约束,来保证表中数据的完整性、有效性。
约束包含哪些?
约束
create table user(
id int not null unique, //如果一起使用这两,自动设为主键
age int not null, //非空,只有列级约束
name varcah(255) unique,//唯一
email varchar(255),
phone varchar(255),
uniqe(eamil,phone)
//约束没有添加在列的后面,这种约束被称为表级约束,如上行
);
int id primary key auto_increment 单一主键,自动增长
primary key(id,name) 联合主键,不建议使用!
任何一张表都应该有主键,主键一般为自动增长id
外键约束
foreign key
foreigh key(uid) references user(id) 将user表的id作为外键
外键要唯一性,才能引用
存储引擎
create table user(......)engine=引擎名 defaule charset=utf8;
InnoDB
这是mysql默认的存储引擎,安全,同时也是个重量级的存储引擎。
支持事务,支持数据库奔溃后自动恢复机制。
表空间tablespace 被用于存储表的内容
---------------------------------------------------
MyISAM
使用三个文件表示每个表
格式文件、数据文件、索引文件
对于一张表老说,只要是主键或者加有unique约束的字段上会自动创建索引
特点:可被转换为压缩、只读表来节省空间,不支持事务。
----------------------------------------------------
Memory
内存存储引擎,数据和索引存在内存中,速度快。
不能包含text或blob字段
特点:查询效率最高,不安全,断电后数据消失
事务
一个事务其实就是个完整的业务逻辑(增、删、改)
事务的四大特性:
- 原子性: 说明事务是最小的工作单元,不可再分;
- 隔离性:A事务在操作一张表时,另一张表也操作这张表,具有一定的隔离性;
- 一致性:要么同时成功,要么同时失败;
- 持久性:事务提交后,将数据保存在磁盘上;
假设转账,从A账户向B账户中转账1w
将A账户的钱减去1w,将B账户的钱加上1w
这就是个完整的业务逻辑。
以上的操作是一个最小的工作单元,要么同时成功,要么同时失败。
事务是怎么做到多条DML语句同时成功和同时失败的呢?
InnoDB引擎:提供了一组用来记录事务性活动的日志文件
在事务的执行过程中,每一条DML操作都会记录到”事务性活动的日志文件“中,在提交事务过程中,我们可以提交事务,也可以回滚事务。
提交事务?
清空事务性活动的日志文件,将数据全部彻底持久化到数据库表中
提条事务标志着,事务的借宿,并且是一种全部成功的结束。
回滚事务?
将之前所有的DML操作全部撤销,并且清空事务性活动的日志文件。
回滚事务标志着,事务的结束,并且是一种全部失败的结束;
提交后将不可回滚;
怎么提交事务?
提交事务:commit;
回滚事务:rollback;
事务对应的英语单词是transaction
MySQL 默认的事务是自动提交方式
如果关闭mysql自动提交机制
先执行:start transaction;
再执行SQL语句,insert .....
然后 rollback; 即可回滚
-
事务的隔离级别:
读未提交(read uncommitted)(没有提交就能读到):
最低的隔离级别,事务A可以读取到事务B未提交的数据,会造成脏读;
这重隔离级别一般没人用; -
读已提交(read committed)(提交之后才能读到):
事务A只能读取到事务B提交之后的数据,可解决脏读。
存在缺点:不可重复读数据,在事务开启之后,第一次读到的数据是3条,当前事务还没有结束,可能第二次再读取的 时候,读到的数据是4条。
这种隔离级别读到的数据是绝对的真实,是oracle默认的。 -
可重复读(repeatable read)(提交之后也读不到,读到的是刚开启事务时的数据):
事务A开启之后,每次事务A中读取的数据都是一致的,即使事务B已修改并提交,读取到的数据还是没有改变。会出 现幻读,不够真实。
这是MySQL默认的隔离级别; -
序列化(serializable):
最高的隔离级别,效率最低,但解决了所有问题,但不能并发,有点类似synchronized,需要排队,线程同步。设置全局的隔离级别
set global transaction isolation level read uncommitted;查询隔离级别
select @@tx_isolation
索引
索引是数据库表的字段上添加的,是为了提高查询效率存在的一种机制,有点像书的目录。
底层通过自平衡二叉树BTree 实现,缩小扫描的范围,避免全表扫描,
mysql中,主键上和unique字段上会自动添加索引
啥情况使用索引呢?
- 数据量庞大;
- 该字段经常出现在where的后面,已条件的形式存在,也就是说这个字段总是被扫描;
- 该字段很少的DML操作,因为DML后,索引要重新排序
建议不要随意添加索引,因为索引也是需要维护的,太多的话反而会降低速度,建议通过主键查询或nnique字段查询
create index emp_ename_index on emp (ename);
给emp表的ename字段添加索引,起名emp_ename_index
drop index emp_ename_index on emp;删除索引
查看是否有索引
explain select * from user where ename='abc'
查看type和扫描行数rows,判断是否有索引
索引的失效?
- select * from user were username like '%c';
username 即使添加了索引也不会走索引
因为%号开始的原因,不知道开头是啥,走不了索引 - 使用or也会失效,要求or的两边都要有索引,索引其中有一边没,就失效了,建议使用union不会失效;
- 使用复合索引的时候,没有使用左侧的列查找,索引失效
什么是复合索引?两个字段,或者更多字段联合起来添加一个索引。(a,b),使用右边的b会失效 - 索引的列参与了运算 例如,where sal +1 = 800,索引失效
- 索引列使用了函数,例如 where lower(name),索引失效
视图
创建视图对象
create view user_view as select * from user;
删除视图
drop view user_view
只有查询语句才能以view视图的形式创建
我们可以面向视图对象进行增删改查,通过对视图的操作,会影响到原表数据。
例如对视图进行查询 select * from 视图名;
视图对象在实际开发中 有什么用?
视图用来简化sql语句的,面向视图进行查询,假设有条很复杂的sql语句,每次都在不同的位置反复使用。每一次使用都需要重复编写,这时候,可以使用视图代替。
使用视图时,可以像使用表一样,视图不是在内存当中,视图对象也是存储在硬盘上,简化开发,利于维护。
order tadalafil 5mg online cheap – cialis 10mg cheap cialis 20
hydroxychloroquine buy online – plaquenil for sale buy hydroxychloroquine 200mg pills
generic ivermectin cream – stromectol cost in usa ivermectin 6mg for people
cephalexin cheap – order cephalexin generic order erythromycin 250mg generic
order fildena 100mg sale – buy generic nolvadex 10mg cheap antabuse
purchase rhinocort without prescription – seroquel pills ceftin 250mg us
careprost without prescription – buy careprost generic desyrel 50mg pill
viagra drug – buy viagra 100mg pill zantac 150mg price
tadalafil 20mg price – buy ivermectin pills ivermectin 12 mg tablets for humans
tadalafil 20mg over the counter – ivermectin human medicine for impotence
casinos online – real online gambling prednisone 40mg brand
prednisone 10mg uk – buy accutane 10mg pill buy isotretinoin pills
amoxicillin online – order amoxil 500mg generic oral viagra 100mg
generic cialis canada – cialis 5mg usa buy cialis 10mg for sale
ivermectin pills for humans – azithromycin 500mg tablet buy zithromax pill
order azithromycin online cheap – medrol oral medrol 16mg over counter
order baricitinib for sale – order chloroquine 250mg online cheap buy dapoxetine sale
glucophage 1000mg ca – generic glucophage 1000mg atorvastatin 10mg uk
buy norvasc 5mg online – prilosec 10mg over the counter omeprazole 20mg us
cost lopressor – tenormin 50mg for sale cialis 40mg uk
buy cialis pills – sildenafil 100mg england sildenafil tablet
ivermectin oral 0 8 – ivermectin 12mg for humans for sale ivermectin for sale online
clomid 100mg without prescription – purchase ventolin online cheap cetirizine 10mg over the counter
brand desloratadine – desloratadine price aristocort 10mg for sale
cytotec 200mcg tablet – buy misoprostol without prescription synthroid 75mcg without prescription
sildenafil without prescription – viagra sildenafil 100mg gabapentin 100mg pill
cialis 5mg canada – order cialis 20mg online cheap cenforce 100mg pill
diltiazem pill – order zyloprim 100mg generic brand acyclovir 400mg
cost hydroxyzine – atarax 10mg generic order crestor 20mg pills
zetia 10mg brand – order motilium 10mg for sale order citalopram
viagra pills 150mg – buy flexeril online flexeril buy online
sildenafil 150mg brand – cialis 10mg uk generic cialis
toradol generic – purchase tizanidine for sale ozobax sale
colchicine pill – brand inderal 10mg order strattera 10mg without prescription
viagra canada – buy methotrexate 2.5mg generic clopidogrel 75mg price
buy viagra 150mg pill – usa viagra overnight viagra 100 mg
esomeprazole 40mg drug – purchase phenergan pills purchase promethazine pill
tadalafil 5mg canada – cialis otc tadalafil dosage
order generic provigil – order provigil 200mg generic best drug for ed
buy accutane pills – purchase isotretinoin generic order zithromax sale
furosemide for sale – lasix 100mg without prescription viagra next day
tadalafil 40mg ca – cheap cialis sale brand viagra 150mg
tadalafil 5mg sale – buy cozaar online cheap buy warfarin 2mg
topiramate 200mg us – cost topamax 100mg imitrex 25mg over the counter
cheap avodart – buying cialis cheap cialis tadalafil 5mg
overnight viagra delivery – cheap viagra pills buy cialis online safely