MySQL

MySQL启动与关闭

  • 打开服务的窗口启动与关闭
  • 以管理员身份打开cmd,输入net start mysql启动,输入net stop mysql关闭

MySQL登入与退出

  • 登入 mysql -uroot -proot或mysql -ip -hip -uroot -proot或mysql --host=ip --user=root --password=root
  • 退出 exit 或 quit

SQL定义了操作所有关系型数据库的规则
SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾。
  2. 可使用空格和缩进来增强语句的可读性。
  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
  4. 三种注释(单行注释:-- 或 # 多行注释:/* 注释 */)

SQL分类
1)DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字: create,drop,alter等
2)DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改。关键字:insert,delete,update 等
3)DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录(数据)。关键字: select,where等
4) DCL(Data control Language)数据控制语言(了解)
用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT,REVOKE等

DDL:操作数据库,表

  1. 操作数据库:CRUD
    (1)C(Create)创建
    create dadabase 数据库名称
    判断是否存在并指定字符集create database if not exists 数据库名称 character set 字符集
    (2)R(Retrieve)查询
    查询所有数据库的名称show dadabases
    查询数据库的创建语句show create database 数据库名称
    (3)U(Update)修改
    修改数据库字符集alter database 名称 character set 字符集
    (4)D(Delete)删除
    删除数据库drop database 数据库名称
    (5)使用数据库
    查询当前正在使用的数据库名称select database()
    使用数据库use 数据库名称
  2. 操作表
    (1)C(Create)创建
    复制表create table 表名 like 表名
    create table 表名(列名1 数据类型1,列名2 数据类型2…列名n 数据类型n);
    常用数据类型:
    1.int:整数类型
    2.double:小数类型 double(5,2)
    3.date:日期 只包含年月日,yyyy-MM-dd
    4.datetime:日期 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
    5.timestamp:时间错类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss,如果不赋值,则默认使用当前系统时间自动赋值
    6.varchar:字符串 varchar(20)
    (2)R(Retrieve)查询
    查询某个数据库中所有的表名称show tables
    查询表结构desc 表名
    (3)U(Update)修改
    修改表名 alter table 表名 rename to 新的表名
    修改表的字符集 alter table 表名 character set 字符集名称
    添加一列 alter table 表名 add 列名 数据类型
    修改列名称 类型 alter table 表名 change 列名 新列名 新数据类型
    修改列的类型 alter table 表名 modify 列名 新数据类型
    删除列 alter table 表名 drop 列名
    (4)D(Delete)删除
    drop table 表名
    drop table if exists 表名

详细的数据类型
在这里插入图片描述
DML:增删该表中数据
(1)添加数据:insert into 表名(列名1,列名2,…列名n) values(值1,值2,…值n);除了数字类型,其他都需要使用引号
(2)删除数据:delete from 表名[where 条件] 不加条件则删除所有数据
先删除表,再创建一张一样的表 TRUNCATE TABLE 表名
(3)修改数据:update 表名 set 列名1=值1,列名2=值2,…[where 条件]
不加条件会修改表中所有记录

DQL:查询表中的记录
获取表中所有数据select * form 表名
语法:
select 字段名称
from 表名列表
where 条件列表
group by 分组字段
having 分组之后的条件
order by 排序
limit 分页限定

基础查询

  • 去除重复的结果集distinct
  • 若null参与计算,可以使用IFNULL防止NULL造成错误,IFNULL(exp1,exp2),exp1为可能为NUll的字段,exp2为替换值

条件查询

  • where后跟条件
  • 运算符 >,<.<=,>=,=,<>,BETWEEN…AND,IN(集合),IS NULL,LIKE,and,or,not

模糊查询
LIKE:占位符:_:单个任意字符;%:任意多个字符

排序查询
order by 子句
order by 排序字段1,排序方式1,排序字段2,排序方式2…
ASC:升序,默认的 DESC:降序

聚合函数:将一列的数据作为一个整体,进行纵向的计算
1.count:计算个数
2.max:计算最大值
3.min:计算最小值
4.sum:计算和
5.avg:计算平均值

分组查询
group by 分组字段
where在分组之前限定条件,不能跟聚合函数;having在分组之后限定条件,可以跟聚合函数

分页查询(只能在MySQL中使用)
limit 开始的索引,每页查询的条数
开始的索引=(当前的页码-1)*每页显示的条数

约束:对表中的数据进行限定,保证数据的正确性,有效性和完整性
分类:主键约束:primary key
非空约束:not null
唯一约束:unique
外键约束:foreign key

非空约束:not null
可以创建表时增加约束,也可以创建好后修改

唯一约束:unique
创建表时可以添加唯一约束,也可以之后增加或删去
删除语句:ALTER TABLE 表名 DROP INDEX 列名;

主键约束:primary key
创建表时可以添加主键约束
删除语句:ALTER TABEL 表名 DROP PRIMARY KEY;
自动增长:如果某一列是数值类型的,使用auto_increment可以完成值的自动增长,使用modify可以删除自动增长

外键约束:foreign key
创建表时,添加外键约束

	create table 表名(
		....
		外键列
		constraint 外键名称 foreign key(外键列名称) references 主表名称(主表列名称)
)

删除外键 ALTER TABLE 表名 DROP FOREIGN KEY 外键名称
添加外键 ALTER TABLE 表名 ADD constraint 外键名称 foreign key(外键列名称) references 主表名称(主表列名称)
级联操作 ALTER TABLE 表名 ADD constraint 外键名称 foreign key(外键列名称) references 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE;
级联更新:ON UPDATE CASCADE
级联删除:ON DELETE CASCADE;

DCL
管理用户:

  1. 添加用户:CREATE USER ‘用户名‘@’主机名’ IDENTIFIED BY ‘密码’;
  2. 删除用户:DROP USER ‘用户名’@‘主机名’;
  3. 修改用户密码:UPDATE USER SET PASSWORD=PASSWORD(‘新密码’) WHERE USER=‘用户名’;
    SET PASSWORD FOR’用户名’@‘主机名’=PASSWORD(‘新密码’);
  4. 查询用户:先切换到mysql数据库,再查询user表SELECT * FROM USER;

mysql中忘记root用户的密码

  1. 打开cmd,输入net stop mysql停止mysql服务
  2. 使用无验证方式启动mysql服务:mysqld --skip-grant-tables
  3. 打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登入成功
  4. use mysql;
  5. update user set password=password(‘你的新密码’) where user=‘root’;
  6. 关闭两个窗口
  7. 打开任务管理器,手动结束mysqld.exe的进程
  8. 启动mysql服务
  9. 使用新的密码登入

权限管理 :

  1. 查询权限:SHOW GRANTS FOR ‘用户名’@‘主机名’;
  2. 授予权限:GRANT 权限列表 ON 数据库名.表名 TO ‘用户名’@‘主机名’;
    (ALL表示所有权限) (*表示所有的库或表)
  3. 撤销权限:REVOKE 权限列表 ON 数据库名.表名 FROM ‘用户名’@‘主机名’;

数据库的备份与还原:
备份:mysqldump -u用户名 -p密码 数据库名称>保存路径
还原:use 数据库;source 导入文件的路径;

事务基本概念:如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么成功,要么同时失败。
操作:1.开启事务:start transaction
2.回滚:rollback
3.提交:commit

事务提交的两种方式:自动提交和手动提交
查看事务的提交方式:SELECT @@autocommit; – 1代表自动提交 0代表手动提交
修改默认提交方式:set @@autocommit=0;

事务的四大特征∶

  1. 原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。
  2. 持久性:当事务提交或回滚后,数据库会持久化的保存数据。
  3. 隔离性:多个事务之间。相互独立。
  4. 一致性:事务操作前后,数据总量不变。

事务的隔离级别
概念∶多个事务之间隔离的,相互独立的。但是如果多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。
存在问题:

  1. 脏读:一个事务,读取到另一个事务中没有提交的数据 。

  2. 不可重复读(虚读):在同一个事务中,两次读取到的数据不一样。

  3. 幻读:一个事务操作(DNL)数据表中所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。

    隔离级别∶

  4. read uncommitted :读未提交
    产生的问题:脏读、不可重复读、幻读

  5. read committed :读已提交(oracle)
    产生的问题:不可重复读、幻读

  6. repeatable read :可重复读(MysQL默认)
    产生的问题:幻读

  7. serializable :串行化
    可以解决所有的问题

数据库查询隔离级别:select @@tx_isolation;
数据库设置隔离级别:set global transaction isolation level 级别字符串;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

P_xuebuhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值