MySQL
2022-03-18 11:20:55 4 举报
AI智能生成
10分钟掌握MySQL基础命令
作者其他创作
大纲/内容
初始操作
启动MySQL服务:net start mysql57
关闭MySQL服务:net stop mysql57
进入MySQL:mysql -hlocalhost -uroot -p11111
DDL
数据库
创建数据库:CREATE DATABASE 数据库名称 CHARACTER SET UTF8;
切换数据库:USE 数据库名;
查看所有数据库:SHOW DATABASES;
查看当前所使用的数据库:SELECT DATABASE();
查看数据库的定义信息:SHOW CREATE DATABASE 数据库名称;
修改数据库字符集:ALTER DATABASE 数据库名 CHARACTER SET 字符集;
删除数据库:DROP DATABASE 数据库名;
数据表
创建数据表:CREATE TABLE 表名 (字段名称 字段类型);
创建与另一表结构相同的表:CREATE TABLE 新表名 like 旧表名;
查看所有的表:SHOW TABLES;
查看表的结构:DESC 表名;
添加列:ALTER TABLE 表名 ADD 列名 数据类型;
修改列的数据类型或长度:ALTER TABLE 表名 MODIFY 列名称 列类型(长度);
修改列的名称:ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型(长度);
修改表名字:RENAME TABLE 旧表名 to 新表名;
修改表字符集:ALTER TABLE 表名 CHARACTER SET 新字符集;
删除表:DROP TABLE IF EXISTS 表名;
删除列:ALTER TABLE 表名 DROP 列名;
DML
数据表
插入数据:INSERT INTO 表名 (字段1,字段2,) VALUES (值1,值2,);
更改数据:UPDATE 表名 SET 列名 = 值 WHERE 条件;
删除数据:DELETE FROM 表名 WHERE 条件;
DQL
简单查询
全部查询:SELECT * FROM 表名;
别名查询:SELECT 列名 AS 别名 FROM 表名;
去重查询:SELECT DISTINCT 列名 FROM 表名;
运算查询:SELECT 列的相关运算 FROM 表名;
条件查询
定义:SELECT 列名 FROM 表名 WHERE 条件;
BETWEEN...AND条件:在...之间
IN(集合)条件:满足集合中的条件
LIKE条件:
%:表示任意匹配多个字符串
_:表示匹配一个字符
是否为空:IS NULL
DCL
创建用户:create user '用户名'@'主机名' identified by '密码';
用户授权:grant 权限 on 数据库名.表名 to '用户名'@'主机名';
查看权限:show grants for '用户名'@'主机名';
删除用户:drop user '用户名'@'主机名';
补充内容
排序:SELECT * FROM 表名 ORDER BY 字段名 ASC/DESC;
聚合函数:SELECT COUNT/SUM/MAX/MIN/AVG(字段名) FROM 表名;
分组:SELECT 分组字段/聚合函数 FROM 表名 GROUP BY 字段名 【HAVING 条件】;
WHERE是分组前过滤,后面不能使用聚合函数。
HAVING是分组后过滤,后面可以使用聚合函数。
限制:SELECT * FROM 表名 LIMIT offset,length;
PRIMARY KEY
添加主键约束
CREATE TABLE 表名 (字段名 字段类型 PRIMARY KEY AUTO_INCREMENT) AUTO_INCREMENT=起始值;
CREATE TABLE 表名 (字段名 字段类型, PRIMARY KEY (字段名)) ;
ALTER TABLE 表名 ADD PRIMARY KEY (字段名);
删除主键约束
ALTER TABLE 表名 DROP PRIMARY KEY;
说明
DELETE只是删除表中所有数据对自增没有影响
TRUNCATE是删除整个表,创建一个新的从1开始的自增主键
SQL约束
NOT NULL
CREATE TABLE 表名 (字段名 字段类型 NOT NULL);
UNIQUE
CREATE TABLE 表名 (字段名 字段类型 UNIQUE);
DEFAULT
CREATE TABLE 表名 (字段名 字段类型 DEFAULT 默认值);
FOREIGN KEY
创建表时创建:create table 从表名(字段名 字段类型,..., constraint 起的外键名 foreign key (从表字段名) references 主表名(主表字段名));
添加外键:alter table 从表名 add constraint 起的外键名 foreign key (从表字段名) references 主表名(主表字段名);
删除外键:alter table 从表名 drop foreign key 外键名称;
添加级联删除:create table 从表名(字段名 字段类型,..., constraint 起的外键名 foreign key (从表字段名) references 主表名(主表字段名) on delete cascade); 删除主表数据时,从表数据也会被删除
数据库事务
启动:START TRANSACTION 或者BEGIN
提交:COMMIT
回滚:ROLLBACK
四种隔离级别
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
查看隔离级别:SELECT @@TX_ISOLATION;
设置隔离级别:SET GLOBAL TRANSACTION ISOLATION LEVEL 隔离级别名称;
多表
多表查询
内连接
隐式内连接:select * from 左表,右表 where 条件;
显式内连接:select * from 左表 inner join 右表 on 条件;
外连接
左外连接:select * from 左表 left outer join 右表 on 条件;
右外连接:select * from 右表 right outer join 左表 on 条件;
子查询
where型
select 查询字段 from 表名 where 字段 = (子查询);
子查询结果作为父查询条件
from型
select 查询字段 from (子查询) 表别名 where 条件;
子查询结果为一张表,提供给父查询使用
exists型
select 查询字段 from 表名 where 字段名 in (子查询);
子查询结果为单列多行,父查询的条件中使用in
索引、视图、存储过程、触发器
索引
主键索引
唯一索引
创建1:create table 表名 (字段名 字段类型,..., unique 索引名(字段名))
创建2:create unique index 索引名 on 表名(字段名)
创建3:alter table 表名 add unique 字段名
普通索引
创建1:create index 索引名 on 表名(字段名);
创建2:alter table 表名 add index 索引名 (字段名)
删除索引:alter table 表名 drop index 索引名;
视图
创建:create view 视图名称 【可选参数】as select语句;
删除:drop view 视图名称;
存储过程
方式一
delimiter $$
create procedure 存储过程名称()
begin
select等操作;
end $$
调用:call 存储过程名称;
方式二
delimiter $$
create procedure 存储过程名称(in 参数名称 参数类型)
begin
select等操作;
end $$
调用:call 存储过程名称(实参);
方式三
delimiter $$
create procedure 存储过程名称(in 参数名称 参数类型,out 变量名称 变量类型)
begin
select等操作;
set @变量名称 = 值;
select @变量名称; -- 返回变量的值
end $$
调用:call 存储过程名称(实参,@变量名称);
触发器
创建
delimiter $
create trigger 触发器名称
before/after update/insert/delete on 表名
for each row
begin
触发事件;
end $
删除:drop trigger 触发器名称;
数据库备份与还原
备份
进入C:\Program Files\MySQL\MySQL Server 5.7\bin目录的操作台
mysqldump -uroot -p密码 要备份的数据库名称 > D:\备份的路径\数据库文件名.sql;
还原
操作台进入mysql数据库
创建新的空白数据库,并切换成该新创建的数据库
source D:\备份的路径\数据库文件名.sql;
元数据
获取mysql服务器版本信息:select version();
查看服务器状态信息:show status;
显示表的字段信息:show columns from 表名,和desc 表名一样
显示表的详细索引信息:show index from 表名
0 条评论
下一页