mysql学习笔记

一、创建、使用库

 show databases;   --查看所有的库 

 --创建数据库
create database test;
 
--选择使用哪个数据库
use test; 
 
 --删除数据库
drop database test;
 
--查看库下的表
show tables; 
 
--创建表
create table student(
id int,
name varchar(20),
age int
);
 
--查看表结构
desc 表名
 
 --插入记录
insert into 表名 (列名) values (值);
 
 --更新记录
update 表名 set 列名=值 where 条件
 
--删除记录
delete from 表名 where 条件
 
--清表
truncate [table] 表名
 
--去重
distinct
select distinct  列名 from  test ; 去除结构中重复列的值
 
--排序orber by 
select * from student order by age desc, math asc;  
 
--聚合函数
max(列名)    求这一列的最大值
min(列名)     求这一列的最小值
avg(列名)     求这一列的平均值4 / 26
count(列名)   统计这一列有多少条记录
sum(列名)     对这一列求总和
 
--IFNULL(列名,默认值)   如果列名不为空,返回这列的值。如果为 NULL,则返回默认值。
-- 查询 id 字段,如果为 null,则使用 0 代替
select ifnull(id,0) from student;
 
--分组查询是指使用 GROUP BY 语句对查询信息进行分组,相同数据作为一组
SELECT 字段 1,字段 2... FROM 表名 GROUP BY 分组字段 [HAVING 条件];
 
--先过滤后在分组
查询年龄大于 25 岁的人,按性别分组,统计每组的人数
1) 先过滤掉年龄小于 25 岁的人。
2) 再分组。
3) 最后统计每组的人数
select sex, count(*) from student3 where age > 25 group by sex ;
 
-- 对分组查询的结果再进行过滤
SELECT sex, COUNT(*) FROM student3 WHERE age > 25 GROUP BY sex having COUNT(*) >2;
只有分组后人数大于 2 的`男`这组数据显示出来
 
--having和where的区别

 

 --limit 限制查询记录

select * from student limit 10,20 ;    查询第10-20条记录

select * from student limit  20;查询0-20条记录

 

--数据库备份和还原

mysqldump -u 用户名 -p 密码 数据库 > 文件的路径  //备份
 
USE 数据库;
SOURCE 导入文件的路径;   //导入备份数据文件
 
--约束

 主键特点:非空、唯一

-- 删除 st5 表的主键
alter table st5 drop primary key;
-- 添加主键
alter table st5 add primary key(id); 
 
--AUTO_INCREMENT主键自增属性设置(主键必须是整型)
CREATE TABLE 表名(
列名 int primary key AUTO_INCREMENT
) AUTO_INCREMENT=起始值; 
 
--修改AUTO_INCREMENT起始值
ALTER TABLE 表名 AUTO_INCREMENT=起始值; 
 
 
--外键约束
当我们在 employee 的 dep_id 里面输入不存在的部门,数据依然可以添加.但是并没有对应的部门,
实际应用中不能出现这种情况。employee 的 dep_id 中的数据只能是 department 表中存在的 id 

目的:需要约束 dep_id 只能是 department 表中已经存在 id ——使用外键约束

什么是外键:在从表中与主表主键对应的那一列,如:员工表中的 dep_id

 主表: 一方,用来约束别人的表

 从表: 多方,被别人约束的表

 

创建外键约束:

 CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)

 已有表增加外键:

ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主 键字段名);

创建表时指定外键举例:

create table employee(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int,-- 外键对应主表的主键
-- 创建外键约束
constraint emp_depid_fk foreign key (dep_id) references department(id)
);
 
 
--多表查询
inner join
left join
right join
子查询
 
 --事务
开启事务
start transaction;
 
提交事务
commit;
 
回滚事务
rollback;
 
查看 MySQL 是否开启自动提交事务
select @@autocommit;
 
@@表示全局变量,1 表示开启,0 表示关闭
取消自动提交事务 
set @@autocommit=0;
 
--回滚点
savepoint 回滚点名称
要执行的sql语句
rollback to 回滚点名称   //回滚到指定的回滚点
 
--事务的隔离级别
1、事务特性

 2、事务的隔离级别

 

 3、mysql隔离级别

 

 

--查询事物的隔离级别

select @@tx_isolation;
 
--设置事务的隔离界别
set global transaction isolation level read committed;
 
--创建mysql用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'; 

 

--给用户授权

GRANT 权限 1, 权限 2... ON 数据库名.表名 TO '用户名'@'主机名';

 

 --撤销权限

REVOKE 权限 1, 权限 2... ON 数据库.表名 

 

 --查看用户的权限

SHOW GRANTS FOR '用户名'@'主机名';
 
--删除用户
DROP USER '用户名'@'主机名'; 
 
--修改管理员密码
mysqladmin -uroot -p password 新密码
 
--修改普通用户密码
set password for '用户名'@'主机名' = password('新密码'); 
 
posted @ 2020-06-24 18:28  caoyp  阅读(122)  评论(0编辑  收藏  举报