目录
1.打开Mysql
首先打开cmd,进入mysql的bin目录,然后输入指令
services.msc
然后找到mysql服务,并启动服务
(绝对不是别的方法忘了)
2.登录mysql
在bin目录下,输入指令
mysql -u 登录用户名 -p
然后输入密码即可
3.使用mysql
1.DDL:操作数据库
对数据库进行增删查
show databases; // 查看所有数据库
create database 数据库名称 //创建数据库
create database 数据库名称 IF NOT EXITS; //若不存在,则创建
use 数据库名称 ; //使用这个数据库
select database(); //查看当前数据库
drop database 数据名称; //删除数据库
2.DDL:操作数据表
对表进行增删改查
show tables; //查看当前数据库中的所有表
desc 表名; //查看此表的结构信息
create table 表名 (
字段1 数据类型1 约束,
字段2 数据类型2 约束,
....
); //创建表
drop table [IF EXISTS] 表名 ;// 删除表
alter table 表名 rename to 新表名//重命名
alter table 表名 add 字段 数据类型;//增加一列
alter table 表名 modify 列名 数据类型; //修改某一列的数据类型
alter table 表名 change 列名 新列名 数据类型;//修改列名和数据类型
alter table 表名 drop 列名;//删除列
3.DML
主要对数据进行增删改
insert into 表名(列名1,列名2,列名3···) value(值1,值2,值3····);//增加数据
update 表名 set 列名1=值1,列名2=值2,列名3=值3··· [where 条件];// 修改数据
delete from 表名 [where 条件]; //删除数据
4.DQL
主要对数据进行查询
1.基础查询
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名; -- 查询所有数据
SELECT DISTINCT 字段列表 FROM 表名; 去除查询
AS: AS 也可以省略 起别名
2.模糊查询
用模糊查询: _代表单个字符,%代表多个字符。
例:
select smoke from furongwangyuan where name like '_真%'
3.排序查询
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
升序:ASC(默认)
降序:DESC
如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
4.聚合函数
将一列数据作为一个整体,进行纵向计算。
select 聚合函数 from 表名 ;
注意,NULL值不会计入。
5.分组查询
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
不满足where条件 不参与分组
having是分组后进行过滤
where不能过滤聚合函数的结果,而having可以聚合函数计算后,对不同组的聚合函数结果进行分类。
先判断where,满足where的开始分组,最终只显示结果满足having的组。
6.分页查询
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数;
起始索引
=
(
当前页码
-
1
)
*
每页显示的条数
5.约束
NOT NULL //非空约束,该值不能为NULL
UNIQUE //该值不能有重复的
PRIMARY KEY //主键约束 非空且唯一 相当于识别码
DEFAULT //默认值
FOREIGN KEY //外键,用来让两个表的数据之间建立链接,保证数据的一致性和完整性
删除约束:
ALTER TABLE 表名 约束;
1.主键约束
CREATE TABLE 表名(
列名 数据类型 PRIMARY KEY [AUTO_INCREMENT],
…
);
建表后设置主键:
ALTER TABLE 表名 ADD PRIMARY KEY(字段名);
2.外键约束
外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性
添加外键约束:
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
删除外键约束:
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
6.多表查询
select * from 表1,表2,表3···
可以明显看到,这种查询方式会有大量无效数据,是几个表的排列组合的结果。
可以通过where限定得到期望数据。这个就叫做链接查询
1.内连接查询
内连接查询即为查询A与B的交集部分
SELECT 字段列表 FROM 表1,表2… WHERE 条件;
-- 显示内连接
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;
2.外连接查询
左外连接查询为查询A的左部分+交集部分数据
右外连接查询为查询B的右部分+交集部分数据
-- 左外连接
SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;
-- 右外连接
SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;
3.子查询
子查询即为嵌套查询,不在此赘述。
7.事务
1.事务概述
- 数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令。
- 事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败。
-
事务是一个不可分割的工作逻辑单元。
简单来讲,就是存个档,如果这个档运行正常,就把原来的存档覆盖掉;如果出现异常,就回到存档点。
2.开始事务
START TRANSACTION;
或者
BEGIN;
3.提交事务
commit; 1
4.回滚事务
rollback;
5.事物的特征
-
原子性( Atomicity): 事务是不可分割的最小操作单位,要么同时成功,要么同时失败
-
一 致性( Consistency): 事务完成时,必须使所有的数据都保持一致状态
-
隔离性(isolation):多个事物之间,操作的可见性
-
持久性 ( Durability ) : 事务一旦提交或回滚,它对数据库中的数据的改变就是永久的