mysql操作
修改mysql的密码
mysql理论
1,数据库分为
1.1关系型数据库:(RDBMS)
Oracle: 在以前的大型项目中使用,银行,电信等项目
(奥瑞扣)
MySQL: web时代使用最广泛的关系型数据库
SQLite: 轻量级数据库,主要应用在移动平台
Microsoft SQL Server :在微软的项目中使用
1.2关系型数据库管理系统分为:
1.1.1,客户端:客户端通过SQL语句查询服务端的数据。
1.1.2,服务端
非关系型数据库(又称NoSQL):
MongoDB
Redis
2,SQL语言的主要分类
注:DQL 、DML、 DDL 重点
SQL语言不区分大小写,以分号结尾。
3,关系型数据库中核心元素
数据行(记录)
数据列(字段)
数据表(数据行、数据列的集合)
数据库(数据表的集合)
4,数据库的特点
现代:
持久化储存、读写速度极高、保证数据的有效性、
对程序容易扩展
传统:
不易保存、难以拷贝、查找不易
5,MysQL介绍
MysQL是一个关系型数据库管理系统,由瑞典MysQL AB公司开发,后来被Sun公司收购,Sun公司后来又被Oracle公司收购,目前属于Oracle旗下产品。
注:
MySQL的默认引擎: Innodb (首字母大写i)
特点:
1,开源,免费。
2,支持大型数据库。
3,为多种语言提供接口。
4,标准的SQL语句。
5,
mysql命令使用
数据类型
1,数字类型:
int 整数、 decimal 小数、
decimal(4,1) 表示共存4位数,小数占1位。如(300.1)
2,字符串类型:
char() 固定长度, char(3) 如: ‘ab ’还有一个字符的位置会自动补充空格进去
varchar 可变长度 varchar(3) 如:‘ab’ 还有一个位置会被释放
text 大文本类型 超过4000字符
3,日期类型:
注:插入日期 一定要加 “ ”
4,枚举类型:
enum(“男” , ”女” , ”人妖”)
5,布尔类型
tinyint
注:一个汉字占多少长度与编码有关:
UTF - 8:一个汉字=3个字节
GBK:一个汉字=2个字节
字段约束
1,主键 primary key
2,自增 auto_increment
3,无符号约束 unsigned
4,非空 not null
5,唯一 unique 字段内容不能重复
6,默认 default (空格,直接写值)
7,外键 foreign key (福瑞针)
8,关联 references
基础操作
1,建立连接: mysql -uroot -ptest
(登录操作,-u后面跟用户,-p后面跟密码)
2,创库: create database 库名 charset=utf8;
库名不能是纯数字
3,查库: show databases;
4,删库: drop database 库名;
删表:drop table 表名;
5,退出: quit \ exit
6,使用库: use 库名;
7,查指定的库: show create database 库名;
8,查看当前使用的数据库:select database();
9,查看mysql版本: select version();
10,查看当前时间: select now();
表的操作
基本操作
1,创建表
unsigned 无符号约束
外键
作用:保持数据的一致性和完整性
添加 的两种方式:
1,在创建表的时候添加(外键字段类型和要关联的主表一致)
foreign key(子表的关联主表的字段) references 主表(主键);
2,在创建表之后添加
alter table 子表表名 add foreign key(子表的字段)
references 主表(主键);
注意:
1.哪个表里有外键,哪个表就是子表
2.外键关联的必须是主表的主键
3.子表里必须创建一个字段用来存放外键,字段的类型必须和主表的主键类型一致
4.在两张表创建成功后再添加数据
删除外键
1,要知道外键名称
如何查看外键名称
show create table 表名;
2,删除语句
alter table 子表名 drop foreign key 外键字段名称;
注:删除表之前必须删除外键
2,查看表的创建语句:show create table 表名;
3,查看表结构: desc 数据表的名字;
4,查表: show tables;
5,查表的所有数据:select * from 表名;
6,起别名:selelct name as '姓名',high as ‘身高’ from students;
7,给表插入数据:insert into 表名 values(...);
修改表–字段的修改
对表名重命名
alter table 旧表名 rename to 新表名;
排序
select * from 表名 order by 字段名 asc/desc;
表数据的增,删,改,查
1,增
全列插入:insert into 表名 values(),(),();
(#为空的数据可以写null)
部分插入:insert into 表名(列名,列名) values(z,z),(z,z);
2,删
3,改
update 表名 set 列名=新值 where 条件;
注:无条件默认全部修改。
4,查
select * from 表名
比较运算符:
例:> , >= , < , <= , = , !=
逻辑运算符:
and :两个条件同时成立
or :两份条件满足一个就可以
not : 呈现相反的数据
模糊查询:
select * from 表名 where 列名 like 条件;
范围查询
连续范围: between…and…
非连续范围: in
空判断查询
判断为空使用:is null
判断非空使用:is not null
相反的 :not
条件优先级
1,小括号 > not > 比较运算符 > 逻辑运算符
2,and > or 如果希望or比and优先 加()
聚合函数
- count() 计算总行数
- max(列名) 计算最大值
- min() 计算最小值
- avg() 计算平均值
- round(avg(),2) 平均值保留2位小数
- sum() 求和
消除重复行 diatinct 字段(迪斯in克特)
分组
1.把内容一样的放到一起
group by·
select 字段名 from 表名 group by 要分组的字段名;
2,group _concat (name) 统计每个分组指定字段的信息集合,每个信息之间使用逗号进行分割
3,having
分页查询
limit 放在代码最后面写
语法
注:n是第几页,m是每页多少行,
连接查询(连接多张表)
内连接
左连接
右连接
from前面的字段(可以是*,字段)
三表联查
select * from a inner join b on a.字段=b.字段 inner join c on a.字段=c.字段;
自连接
1,自连接查询必须起别名。
2,自连接查询就是把一张表模拟成左右两张表,然后进行连表查询。
注:自连接必须取别名
子查询
在一个select语句中,嵌套了另外一个select语句,那么被嵌套的select语句称为子查询语句,那么外部那个select语句则称之为主查询。
例:
视图
1,一个select 查询数据后返回的结果集,
是一张虚拟的表,会随着基本的数据改变而变化,
适用于经常查询的表。
创建语句:
2,查看视图的语句
show tables;
3,使用视图语句
select * from 视图名;
4,删除语句
drop view 视图名;
5,作用:
1,方便查询,让数据更加清晰
2,提高重用性,像一个函数一样
3,提高安全性,可以针对不同用户
4,对数据库重构,却不影响数据的执行
事务
事务是一个操作序列,要么不执行,要么一起执行。
四大特性:
1,一致性
2,原子性
3,持久性
4,隔离性
事务的开启:
begin / start transaction
事务的提交:
commit
回滚:
rollback
索引
目的:提高查询速率
创建索引:
create index 索引名称 on 表名(字段名称);
删除索引:
drop index 索引名称 on 表名;
查看索引
show index from 表名;