Mysql- DDL/DML/DQL/DCL 数据库基本操作语句(持续更新中)
Mysql基本语法
前言:
在测试项目中经常需要使用到简单的Mysql语句,但是不知道语句结构是什么,经常在百度查来查去;
以下就是总结Mysql常用的基础操作语句;
只需要执行从创建开始执行示例中的SQL语句,即可执行成功。
语言定义
- db_name 数据库名称
- tbl_name 表单名称
- col_name 字段名称
- xx_name 列表名称
- view_name 视图名称
- index_name 序列名称
- tri_name 触发器名称
- pro_name 存储过程名称
- func_name 存储函数名称
数据库系统
-- 使用命令连接数据库
mysql- h 数据库IP -P 数据库端口 -u 用户名 -p 密码
mysql -h 192.168.31.1 -P 3306 -u root -p 123
-- 查看数据库版本信息
SELECT version();
数据定义语言 DDL
作用:数据定义语言主要用来定义数据库中的各类对象,包括用户、库、表、视图、索引、触发器、事件、存储过程和函数等。
数据库
创建数据库
基本语法
CREATE database
-- 创建tbl_name数据库
CREATE DATABASE tbl_name;
示例:
-- 创建school数据库
CREATE DATABASE school;
查看数据库
基本语法
SHOW DATABASES
-- 查看当前所有数据库名称
SHOW DATABASES; -- 数据库使用切换
USE tbl_name;
示例:
-- 查看当前所有数据库名称
SHOW DATABASES; -- 切换使用school库
USE school;
删除数据库
基本语法
DROP DATABASE
-- 查看当前所有数据库名称
DROP DATABASE [ IF EXISTS ] tbl_name;
示例:
-- 删除school库,存在报成功,不存在报错
DROP DATABASE school -- 先判断school库是否存在:存在则删除,不存在不报错
DROP DATABASE IF EXISTS school;
表单
创建表单
基本语法
CREATE TABLE xxx (列名1 列类型, 列名2 列类型, ...);
-- 创建表tbl_name,其中包含列id、name、sex
CREATE TABLE tbl_name(
id INT NOT NULL,
name CHAR(10) NOT NULL,
sex CHAR(2),
);
示例:
DROP TABLE IF EXISTS student;
-- 创建student表,表中包含id、name
CREATE TABLE student (
`id` int(11) NOT NULL,
`name` varchar(255)
) ;
查看表单
基本语法
SHOW TABLES
-- 查看该库下的所有表
SHOW TABLES; -- 查看tbl_name的表结构
DESC tbl_name;
示例:
-- 查看该库下的所有表
SHOW TABLES; -- 查看student的表结构
DESC student;
编辑表单
基本语法
ALTER TABLE
-- 编辑表名称
ALTER TABLE tbl_name rename to tbl_name2; -- 编辑表,增加列
ALTER TABLE tbl_name
ADD (xx_edu CHAR(50)); -- 编辑表,修改列名称
ALTER TABLE tbl_name change xx_edu yy_edu CHAR(50); -- 编辑表,修改列类型
ALTER TABLE tbl_name modify xx_edu CHAR(100); -- 编辑表,删除列
ALTER TABLE tbl_name DROP xx_edu;
示例:
-- 修改表格增加一列,列项名为age
ALTER TABLE student ADD (age CHAR(50));
删除表单
基本语法
DROP table
DROP TABLE [ IF EXISTS ] tbl_name;
示例:
-- 删除student表,存在报成功,不存在报错
DROP TABLE student; -- 先判断student表是否存在:存在则删除,不存在不报错
DROP TABLE IF EXISTS student;
基础语法
TRUNCATE TABLE
TRUNCATE TABLE tbl_name;
区别:
DROP
可选择删除的记录;TRUNCATE TABLE
删除表中的所有记录;DROP
会返回删除记录数,执行速度不快;TRUNCATE TABLE
不能返回被删除的记录数,执行速度快;‘
视图
视图是对若干张基本表的引用,是一张虚表,查询语句执行的结果,不存储具体的数据(基本表发生了改变,视图也会跟着被改变)
创建视图
基本语法
CREATE VIEW
-- 创建一个视图view_name,用来查询 tbl_name 的数据:
CREATE VIEW view_name
as
SELECT * FROM tbl_name; # 后面跟SELECT语句
示例:
-- 先创建一张表
DROP TABLE IF EXISTS student;
CREATE TABLE student (
`id` int(11) NOT NULL,
`name` varchar(255)
) ; -- 为表创建一个视图
CREATE VIEW stu_view AS SELECT * FROM student;
with check option
遵循视图表的规则
with check option
增加条件后了之后,如果需要在视图表进行操作,需要遵循视图表的规则
如果视图表遵循
as SELECT * FROM user where sex='man'
,那么再视图表中增加的数据,sex
只能为man
CREATE VIEW view_name
as
SELECT * FROM user where sex='man'
with check option;
查看视图
基本语法
SHOW CREATE VIEW
SHOW CREATE VIEW view_name;
示例:
-- 查看创建的视图 stu_view
SHOW CREATE VIEW stu_view;
修改视图
基本语法
ALTER VIEW
ALTER VIEW view_name
as
SELECT name FROM tbl_name;
注:修改视图和创建视图语句一样,因为视图是根据真实表的结构创建的,无法修改视图中列的属性。
示例:
-- 修改视图获取条件
ALTER VIEW stu_view
as
SELECT name FROM student where id = '1';
使用视图
基本语法
select
SELECT * FROM view_name;
示例:
-- 引用视图
SELECT * FROM stu_view;
删除视图
基本语法
DROP view
DROP VIEW view_name;
示例:
-- 删除视图 stu_view
DROP VIEW stu_view;
索引
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库 索引 好比是一本书前面的目录,能加快数据库的查询速度。
创建索引
创建表时,添加索引
CREATE TABLE table_name (
id int(11) NOT NULL,
title char(255) NOT NULL ,
PRIMARY KEY (id),
INDEX index_name (title) # 设置索引
);
示例:
-- 创建tbl_name 表时,添加索引
DROP TABLE IF EXISTS student;
CREATE TABLE student(
id INT NOT NULL,
name CHAR(10) NOT NULL,
sex CHAR(2),
INDEX sex_index(sex) # 设置 sex 为索引
);
在已存在的表上创建索引
-- 给tbl_name 的 col_name字段,创建索引
CREATE INDEX index_name ON tbl_name(col_name); -- 给tbl_name 的 col_name字段,创建唯一索引
ALTER TABLE tbl_name ADD INDEX index_name(col_name);
示例:
-- 先创建一个没有索引的表
CREATE TABLE people(
id INT NOT NULL,
name CHAR(10) NOT NULL,
age CHAR(2)
); -- 为表创建索引
CREATE INDEX age_index ON people(age);
查看索引
基本语法
SHOW
-- 查看tbl_name表中的索引;
SHOW INDEX FROM tbl_name;
示例:
-- 查看student表中的索引
SHOW INDEX FROM student;
删除索引
基本语法
ALTER table tbl_name DROP index
-- 修改表的方式删除索引
ALTER TABLE tbl_name DROP INDEX index_name; -- 删除tbl_name表上的index_name索引
DROP INDEX index_name on tbl_name;
示例:
-- 修改表的方式删除索引
ALTER TABLE student DROP INDEX sex_index; -- 删除tbl_name表上的index_name索引
DROP INDEX age_index on people;
序列
MySQL 序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。
创建序列
创建tbl_name 表时,添加序列:
AUTO_INCREMENT
CREATE TABLE tbl_name(
id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id);
name CHAR(10) NOT NULL,
sex CHAR(2),
PRIMARY KEY (id)
);
示例:
-- 创建表时,添加序列
DROP TABLE IF EXISTS student ;
CREATE TABLE `student`(
`id` int UNSIGNED not null AUTO_INCREMENT, PRIMARY KEY (id),
`name` varchar(20) not null,
`age` date not null
);
创建序列时,设置序列的开始值
-- 设置开始值为100
CREATE TABLE tbl_name(
id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id),
name CHAR(10) NOT NULL,
sex CHAR(2),
) AUTO_INCREMENT=100;
查看序列
查看表结构就是查看序列
-- 查看表结构中的 Extra 字段有AUTO_INCREMENT字段,说明该列就是设置了序列
DESC tbl_name;
示例:
DESC student;
编辑序列
重置序列
-- 先删除tbl_name表中得id列
ALTER TABLE tbl_name DROP id; -- 添加 tbl_name新增id字段,并设置为自增长
ALTER TABLE tbl_name ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST;
示例:
-- 存在一份没有设置序列的表
DROP TABLE IF EXISTS student ;
CREATE TABLE `student`(
`id` int UNSIGNED not null,
`name` varchar(20) not null,
`age` date not null
); -- 先删除tbl_name表中得id列
ALTER TABLE student DROP id; -- 再表单设置序列
ALTER TABLE student ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST;
删除序列
基本语法
DROP
-- 删除序列其实就是删除表中的列,或者将表删除
DROP tbl_name;
示例:
DROP TABLE student;
触发器
触发器是一种对象,它能根据对表的操作时间,触发一些动作,这些动作可以是insert、update、delete等修改操作。
创建触发器
基本语法
CREATE TRIGGER tri_name
-- 每次在tbl_name表中插入一行数据,将用户变量str的值设置为 abc
CREATE TRIGGER tri_name # 创建触发器的名称
after # 触发时间
INSERT on tbl_name # 触发事件
for each row set @str="abc"; # 触发的动作
示例:
-- 现在有表如下:
# 用户 users 表
DROP TABLE IF EXISTS users;
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
`add_time` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`(250)) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=1000001 DEFAULT CHARSET=latin1; # 日志 logs 表:
DROP TABLE IF EXISTS logs;
CREATE TABLE `logs` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`log` varchar(255) DEFAULT NULL COMMENT '日志说明',
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='日志表'; # 创建触发器:
-- 需求是:当在users中插入一条数据,就会在logs中生成一条日志信息。
DELIMITER $
CREATE TRIGGER user_log AFTER INSERT ON users FOR EACH ROW
BEGIN
DECLARE s1 VARCHAR(40)character set utf8;
DECLARE s2 VARCHAR(20) character set utf8; #后面发现中文字符编码出现乱码,这里设置字符集
SET s2 = " is CREATED";
SET s1 = CONCAT(NEW.name,s2); #函数CONCAT可以将字符串连接
INSERT INTO logs(log) values(s1);
END $
DELIMITER ;
查看触发器
基本语法
SHOW TRIGGERS;
触发-触发器
示例:
-- 创建好了触发器,继续在users中插入数据并查看数据
INSERT INTO users(name,add_time) VALUE('周伯通','1634523798');
-- 在来看下logs表,日志会自动记录到logs表中
SELECT * FROM logs;
删除触发器
基本语法
DROP
DROP TRIGGER tri_name;
示例:
DROP TRIGGER user_log;
存储过程
存储过程就是具有名字的一段代码,用来完成一个特定的功能。
创建存储过程
基本语法
CREATE procedure pro_name()
-- 创建一个存储过程,其功能是查询tbl_name表的数据
CREATE procedure pro_name()
SELECT * FROM tbl_name;
示例:
-- 创建一个表
DROP TABLE IF EXISTS student;
CREATE TABLE student (
`id` int(11) NOT NULL,
`name` varchar(255),
`age` int(3)
) ; -- 往表单中插入数据
INSERT INTO student(id,name,age) VALUE(1,'张三','35'),(2,'李四','26'); -- 创建存储过程
CREATE PROCEDURE proc()
SELECT * FROM student;
执行
CREATE PROCEDURE
和CREATE FUNCTION
语句需要CREATE ROUTINE
权限。
调用存储过程
基本语法
call
CALL pro_name();
示例:
CALL proc();
删除存储过程
删除存储过程和删除表一样
DROP PROCEDURE pro_name;
示例:
DROP PROCEDURE proc;
存储函数
函数一般用于计算和返回一个值,可以将经常需要使用的计算或功能写成一个函数。
创建存储函数
基本语法
CREATE FUNCTION func_user
-- 创建存储函数
CREATE FUNCTION func_name ([param_name type[,...]])
RETURNS type
[characteristic ...]
BEGIN
routine_body
END;
示例:
-- 先创建tb_user(用户信息表),并添加数据。
# 创建用户信息表
DROP TABLE IF EXISTS student;
CREATE TABLE student(
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户编号',
name VARCHAR(50) NOT NULL COMMENT '用户姓名'
) COMMENT = '用户信息表'; -- 添加数据
INSERT INTO student(name) VALUES('pan_junbiao的博客');
INSERT INTO student(name) VALUES('KevinPan');
INSERT INTO student(name) VALUES('pan_junbiao'); -- 创建存储函数
DELIMITER $$
CREATE FUNCTION fn_search_name(uid INT)
RETURNS VARCHAR(50)
DETERMINISTIC
BEGIN
DECLARE NAME VARCHAR(50);
SELECT name INTO NAME FROM student WHERE id = uid;
IF NAME IS NULL THEN RETURN(SELECT '查无此人');
ELSE IF NAME='minton' THEN RETURN(SELECT '哇!是minton大佬');
ELSE RETURN(SELECT NAME);
END IF;
END IF;
END $$
调用存储函数
基本语法
select
SELECT func_name()
示例:
SELECT fn_search_name(1);
删除存储函数
基本语法
DROP FUNCTION;
DROP FUNCTION func_name;
示例:
DROP FUNCTION fn_search_name;
用户
创建用户
基本语法
CREATE user
CREATE user 'user_name'@'host_name'
[IDENTIFIED by 'password']; # user_name:用户名
# host_name:主机名,不填写默认所有主机
# password:口令,密码
示例:
# 创建用户名为mike,用户密码为123,主机名为localhost;
DROP USER IF EXISTS 'mike'@'%';
CREATE USER 'mike'@'%' identified by '123';
修改用户
修改用户账号,基本语法
rename user
RENAME USER 'old_user'@'host_name' to 'new_user'@'host_name';
示例:
RENAME USER 'mike'@'localhost' to 'jake'@'%';
修改用户密码,基本语法
set password
# for user指定修改密码的用户
SET PASSWORD [FOR 'user_name'@'host_name'] = PASSWORD('password');
示例:
SET PASSWORD FOR 'jake'@'%' = PASSWORD("abc");
删除用户
基本语法
DROP
DROP USER [ IF EXISTS ] 'user_name1'@'host_name', 'user_name2'@'host_name';
示例:
DROP USER 'jake'@'%';
数据操纵语言 DML
作用:用于添加、删除、更新和查询数据库记录,并检查数据完整性,主要包括的操作有:INSERT,UPDATE,DELETE。
增加数据
基本语法
insert into
# 向tbl_name 的表中插入多条数据
INSERT INTO db_name.tbl_name(id,name,age)
value(1,'张三','35'),(2,'李四','26');
示例:
-- 创建一个表单
DROP TABLE IF EXISTS student;
CREATE TABLE student (
`id` int(11) NOT NULL,
`name` varchar(255),
`age` int(3)
) ; -- 往表单中插入数据
INSERT INTO student(id,name,age) VALUE(1,'张三','35'),(2,'李四','26');
插入部分列值的数据
# insert...set
INSERT INTO db_name.tbl_name
SET xx_name='mike',xx_age=1;
插入子查询数据
# insert...SELECT
INSERT INTO db_name.tbl_name
SELECT * FROM id ='1';
插入新数据的列为自增长,使用
0
表示INSERT INTO db_name.tbl_name
VALUE(3,'王五','11');
插入新数据要为默认值时,可以使用
default
表示INSERT INTO db_name.tbl_name
VALUE(id,'name',default);
修改数据
基本语法
update
# 修改tbl_name表中,id为1的数据,修改名称为micke
UPDATE db_name.tbl_name
SET name='mike'
WHERE id=1;
示例:
UPDATE student SET name='王五' WHERE id='1';
删除数据
基本语法
delete FROM
DELETE FROM db_name WHERE xx=xx;
示例:
# 删除tbl_name表中,id 为 1 的数据
DELETE FROM student WHERE id='1';
数据查询语言 DQL
作用:主要用来查看表中的数据,也是平时使用最多的操作,主要命令为:SELECT
单表查询
基本语法
SELECT * FROM tbl_name where id='1';
SELECT col_name # col_name 输出字段
FROM tbl_name # 查询表名
[where xx_name='mike'] # 数据条件选择
[group by {}]
[having]
[order by {col_name} ASC|DESC] # 对结果进行排序
[limit {}] # 限制行数
示例:
-- 创建一个表,并添加数据
DROP TABLE IF EXISTS student;
CREATE TABLE student (
`id` int(11) NOT NULL,
`name` varchar(255),
`age` int(5),
`sex` varchar(10)
); -- 往表单中插入数据
INSERT INTO student(id,name,age,sex) VALUE(1,'张三','35','boy'),(2,'李四','26','girl'),(3,'王五','13','boy'); -- 使用selct命令所有表的所有数据信息
SELECT * FROM student;
子句 | 说明 | 是否必须使用 |
---|---|---|
select | 要返回的列或表达式 | 是 |
from | 从中检索数据的表 | 仅从表选择数据时使用 |
where | 行级过滤 | 否 |
group by | 分组说明 | 仅在按组计算聚合时使用 |
having | 组级过滤 | 否 |
order by | 输出排序顺序 | 否 |
limit | 要检索的行数 | 否 |
重命名 - as
替换列的名称
as
# as后就是更改后的列名
SELECT col_name AS '名称' FROM tbl_name;
示例:
SELECT name AS '姓名' FROM student;
替换查询结果中的数据
case
SELECT col_name, case where col_sex='man' then '男' # 将数据为man的输出为"男"
else '女' # 除man以外的数据,输出为"女"
end as 性别 # 列表的名称
FROM tbl_name;
计算列值
SELECT xx_id+100,xx_name,xx_sex
FROM tbl_name;
# 输出后xx_id的数据增加100
# 例:xx_id=1,输出结果为101
聚合函数
函数名 | 说明 |
---|---|
count | 求组中,返回int类型整数 |
max | 最大值 |
min | 最小值 |
sum | 求和 |
avg | 求平均值 |
std 或 srddev | 返回给定表达式中所有值得标准值 |
variance | 方差 |
group_concat | 返回由属于一组的列值连接组合而成的结果 |
bit_and | 逻辑与 |
bit_or | 逻辑或 |
bit_xor | 逻辑异或 |
where
比较运算符
比较运算符 说明 = 等于 <> 或 != 不等于 < 小于 <= 小于等于 > 大于 >= 大于等于 <=> 不会返回unknow 判定范围
判定符 说明 示例 between 在....之间 where id between 901 and 902; in 枚举 where id in(901,902); is null 空值 where id is null;
子查询
子查询
in
SELECT * FROM tbl_name1
WHERE tbl_name1.xx_id
IN(
SELECT tbl_name2.xx_id
FROM tbl_name2
WHERE xx_name='mike'
);
# xx_id分别为tbl_name1,tbl_name2的主/外键
分组 - group by
基本语法
group by
SELECT xx_id,xx_sex,count(*) as "人数"
FROM tbl_name
group by xx_id,xx_sex; # 输出相同xx_id和xx_sex的人数
分组汇总
with rollup
SELECT xx_id,xx_sex,count(*) as "人数"
FROM tbl_name
group by xx_id,xx_sex
with rollup; # 输出相同xx_id和xx_sex的人数
# with rollup输出xx_id,xx_sex,count的总数
介于两个值中间 - BETWEEN ... AND
搜索指定的字符 - LIKE
去重 --- DISTINCT
having
过滤分组
SELECT xx_id,xx_name
FROM tbl_name
group by xx_id,xx_name
having count(*) < 3; # 输出相同xx_id和xx_sex的少于3人的数据
order by
排序
oder by col_name
;ASC,升序;DESC,降序SELECT *
FROM tbl_name
WHERE xx_sex='man'
order by xx_id DESC; # 输出xx_sex为man的人数,排列顺序为降序
Limit
输出数据的行数
limit
# 输出从第五行(4)开始,后三行(3)的数据
# 计算机计数从0开始 SELECT *
FROM tbl_name
limit 4,3;
联表查询
交叉连接
cross join
SELECT *
FROM tbl_name 1
cross join tbl_name2; # 或者
SELECT *
FROM tbl_name1,tbl_name2;
内连接
当
tbl_name1
的主键和tbl_name2
的外键相等的时候,需要使用内连接:inner join...on...
# FROM 表1 inner join 表2 on 键名称|外键=主键
SELECT *
FROM tbl_name1
inner join tbl_name2
on some conditions; # some conditions 可以这样表示
# tbl_name1.xx_name = tbl_name2.xx_name
# 或者
# xx_name='mike'
左连接
以左表为基表
left join
# FROM 表1 left join 表2 on 键名称|外键=主键
SELECT *
FROM tbl_name1
left join tbl_name2
on some conditions; # 输出tbl_name1的表数据
右连接
以右表为基表
right join
# FROM 表1 right join 表2 on 键名称
SELECT *
FROM tbl_name1
right join tbl_name2
on some conditions; # 输出tbl_name2的表数据
数据控制语言 DCL
作用:用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。
授予权限
基本语法
grant
GRANT priv_type [column_list]
ON [object_type] priv_level
TO user_specification
[with grant option]; # priv_type:指定权限名称,如SELECT、insert、delete等
# column_list:指定权限要授予表中的那些具体列
# object_type:指定权限授予对象和级别;可以看到哪些表
# user_specification:用户名,用于指定被授予权限的用户user
# with grant option:用户实现权限的转移或限制
示例:
-- 创建一个表
DROP TABLE IF EXISTS student;
CREATE TABLE student (
`id` int(11) NOT NULL,
`name` varchar(255),
`age` int(5)
) ; -- 授予mike在数据库db_name的表tbl_name上,拥有列xx_id、xx_name的SELECT、update权限
GRANT SELECT,UPDATE(id,name)
ON student
TO 'mike'@'localhost'; -- 刷新权限
FLUSH PRIVILEGES;
grant
语句授权时,可以同时创建用户-- 授权给 mike 用户,关于 tbl_name 表的 SELECT 权限
GRANT SELECT # 授予表的SELECT权限
ON db_name.tbl_name # 授予的表名称
TO 'user_name'@'host_name' identified by 'password'; # 用户名称及密码 -- 刷新权限
FLUSH PRIVILEGES;
授予数据库所有权限
-- 授予mike 的db_name库中所有表的所有权限
GRANT ALL # 所有操作权限
ON db_name.* # db_name的所有表
TO 'user_name'@'host_name'; -- 刷新权限
FLUSH PRIVILEGES;
查看权限
查看某个用户所授予的权限
-- 查询给 'mike'@'host_name' 所授予的所有权限
SHOW GRANTS FOR 'user_name'@'host_name';
示例:
SHOW GRANTS FOR 'mike'@'loaclhost';
回收权限
基本语法
revoke
REVOKE priv_type [column_list]
ON [object_type] priv_level
FROM user_specification;
示例:
-- 回收用户mike,在数据库db_name的tbl_name表,delete的权限
REVOKE UPDATE
ON student
FROM 'mike'@'localhost'; -- 刷新权限
FLUSH PRIVILEGES;
备份恢复
备份数据
基本语法
SELECT into ... outfile
SELECT * into outile 'file_name' export_options;
示例:
# 导出名为backupfile.txt的备份,
# 字段值如果是字符用双引号标注 optionally enclosed
# 字段值之间用逗号隔开 fields terminated
# 每行以问号结束 lines terminated SELECT * FROM db_name.tbl_name
into outfile 'C:/backupfile.txt'
fields terminated by ','
optionally enclosed by ""
lines terminated by ? ;
恢复数据
基本语法
load data ... infile
load data infile 'file_name'
into table tbl_name;
示例:
load data infile 'C:/backupfile.txt'
into table db_name.tbl_name
fields terminated by ','
optionally enclosed by ""
lines terminated by '?' ;
导入导出
导出
导出数据库
# 将本地mysql服务器上的bs_audit数据库导出到本地的bs_audit.bak文件中:
use <数据库名>;
mysqldump -uroot -p123456 --databases bs_audit > bs_audit.bak;
导出表
# 将本地主机上的stranger_info数据库的tb2数据表导出到本地的stranger_info.bak文件中:
mysqldump -uroot -pAnkki_mySQL123 bs_audit stranger_info > stranger_info.bak;
导入
导入数据库
# 进入mysql中,使用source指令完成数据库导入,如下: # 将原有的数据库删除
drop database bs_audit;
# 创建全新的数据库
create database bs_audit;
# 进入数据库环境
use bs_audit;
# 导入备份文件恢复
source /root/bs_audit.bak;
导入表
# 进入数据库环境
use bs_audit;
# 若没有此表,则需创创建;若存在,不需执行
create database stranger_info;
# 导入备份文件恢复
source /root/data/stranger_info.bak;
Mysql- DDL/DML/DQL/DCL 数据库基本操作语句(持续更新中)的更多相关文章
- SQL语言:DDL/DML/DQL/DCL
SQL (Structure Query Language)语言是数据库的核心语言. SQL 的发展是从1974年开始的,其发展过程如下: 1974年-----由Boyce和Chamberlin提出, ...
- MySQL与MSSQL的一些语法差异(持续更新中)
分号不能少:分号不能少:分号不能少:重要的事情说3遍 Insert或者Update的数据包含反斜杠\的时候需要进行转义\\,例:insert into tablename(id,name) value ...
- SqlServer学习-常用的sql语句-持续更新中
1.获取数据库下的所有表名 select TABLE_NAME from information_schema.tables where TABLE_TYPE='Base TABLE' 2.随机取出1 ...
- MySQL操作中的一些细节及良好习惯--------持续更新中...
1.尽量不要写太过复杂的SQL查询,不要想着非要一次性将结果全部以前端要求的形式返回出来,可以多次分开查询,这样逻辑清晰,问题解决速度快,方便维护,并且SQL的效率也高. 2.在使用联表查询的时候,关 ...
- VB导入Excel到数据库软件(持续更新中。)
1.选择Excel文件版本 电脑上用的 Office2010 引用:Mircosoft Excel 14.0 Object Library 2.选择Excel文件 '选择文件公共变量 Public D ...
- DCL,DDL,DML,DQL
DCL(Data Control Language)是数据库控制语言. 是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句. 在默认状态下,只有sysadmi ...
- oracle数据库学习记录(持续更新中...)
--------------------------------------------day1------------------------------------------------- 1. ...
- MYSQL操作的一些知识点,持续更新中····
基本概念——库 1.数据库服务器:库——>表——>行/列 2.cmd下链接: mysql – uroot –proot 3.创建库:create database php; 3.看数据库 ...
- Mysql注入小tips --持续更新中
学习Web安全好几年了,接触最多的是Sql注入,一直最不熟悉的也是Sql注入.OWASP中,Sql注入危害绝对是Top1.花了一点时间研究了下Mysql类型的注入. 文章中的tips将会持续更新,先说 ...
- 基础学习:MYSQL命令大全(持续更新中---最近一次:2019.12.6)
启动mysql : mysql -hlocalhost -uroot -p创建数据库:create database 数据库名字;指定要操作的数据库:use 数===据库名字;查看数据表建表语句:sh ...
随机推荐
- 11. ASCII, unicode, utf-8, gbk的区别
这是几种编码方式 ASCII是包含英文字母数字特殊字符等, 长度是1字节, 前128个是基础ASCII码, 128个以后是扩展ASCII码 GBK是国标扩展码, 长度2字节, 表示汉字以及各少数民族语 ...
- ImageUtils excel 中 emf 转图片(解决图片上部分显示不全问题)图片转文字
excel 中ActiveX 工具 中的textbox ,以及公式 解析后为emf 图片, emf 转图片(解决图片上部分显示不全问题) 图片转文字 /*********************** ...
- 基于element-ui进行二次封装的表格组件
<!-- * @description 表格组件 * @fileName TableList.vue * @authorQ * @date 2021/05/15 15:13:45 --> ...
- Promise的使用及原理
此文章主要讲解核心思想和基本用法,想要了解更多细节全面的使用方式,请阅读官方API 这篇文章假定你具备最基本的异步编程知识,例如知道什么是回调,知道什么是链式调用,同时具备最基本的单词量,例如page ...
- MyBatis 延迟加载代码详解
在我们的实际开发中,会面临各种各样的查询操作.如果单表查询能满足业务需求.尽量用单表查询,因为单表查询的效率比多表关联查询快. 那么当业务需求需要用到的数据来源于多张表的时候,单表查询无法解决,Myb ...
- UI/UE设计学习路线图(超详细)
很多小伙伴认为ui设计很简单,就是用相关的软件设计制作图片.界面等.其实不然,UI设计融合了很多学科内容.要从一个完全没有基础的人成长为一个ui设计者,该如何学习呢?主要分为基础阶段和专业课程阶段,其 ...
- 【牛客小白月赛69】题解与分析A-F【蛋挞】【玩具】【开题顺序】【旅游】【等腰三角形(easy)】【等腰三角形(hard)】
比赛传送门:https://ac.nowcoder.com/acm/contest/52441 感觉整体难度有点偏大. 作者:Eriktse 简介:19岁,211计算机在读,现役ACM银牌选手力争以通 ...
- 2020寒假学习笔记15------Spark基础实验
今天又开始重新做实验六,第一题做的比较顺利,运行结果如下: 等到第二题就出现了各种各样的错误,开始运行telnet localhost 44444命令时出现bash: telnet: command ...
- 数据挖掘系统聚类—R实现
系统聚类法 聚类就是按照某个特定标准把一个数据集分割成不同的类或簇,最后的结果是希望同类之间的差异性尽可能小,不同类之间的差异性尽可能大.不同的类具有能够表达异于其他类的指标,这样针对不同的类,后续就 ...
- 有关SpringMVC的一些知识点
Spring的获取对象 1.获取原生对象,直接在在方法李传http相关的对象.2.接受简单数据类型,接受简单数据类型(八种基本类型)参数直接在handler方法里声明,会自动把相同类型进行绑定,但是接 ...