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('新密码');