时间:2024-05-11 星期六
mysql基础
mysql基础学习内容
MySQL数据库安装与配置、SQL基本查询、SQL写入操作、MySQL表操作、SQL高级查询、MySQL基本函数
数据库分类
主流关系型数据库
商用数据库:DB2、Oracle
开源免费数据库:MySQL、SQL Server(微软开发的,主要用于windows系统,现在也支持linux系统,但是不活跃)
NoSQL数据库系统
NoSQL数据库是对关系型数据库的补充,NoSQL数据库指的是数据分类存放,但是数据之间没有关联关系的数据库系统
主要用于存放(秒杀库存信息、登录信息、消息通知)不太重要的信息
主流的NoSQL数据库:
用内存保存数据的NoSQL数据库:Redis、MemCache
用硬盘保存数据的NoSQL数据库: MongoDB、Neo4J
mysql介绍
重置root用户密码
-
创建一个temp.txt文件,写入定义修改密码的SQL语句
-
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
-
Mysql配置文件
- 配置文件my.ini,存放路径为MySql安装路径下的第一级目录下即MySql/my.ini
- 可以设置各种MySQL的配置,例如字符集、端口号、目录地址等。
数据库表的操作
课程内容
- 管理逻辑库和数据表
- 创建、删除、修改逻辑库和数据表
- 了解常用的数据类型和约束
- 字符串、整数、浮点数、精确数字、日期、枚举、主键约束、非空约束、唯一约束、外键约束等
- 掌握索引运行机制和使用原则
- 排序为什么可以提高数据检索速度
- 怎么创建和删除索引?
- 什么条件下使用索引?
相关语言分类
-
网页设计
- HTML、CSS、JavaScript
-
IOS
- Swift
-
桌面程序
- C++、C#、VB
-
数据库
-
SQL语言
-
DML(数据库管理语言) DCL(数据库控制语言) DDL(数据库定义语言) 添加 修改 删除 查询 用户 权限 事务 逻辑库 数据表 视图 索引
-
-
数据表相关内容
数据类型
数据类型分类 | 类型 | 大小 | 说明 |
---|---|---|---|
字符串 | CHAR | 1-255字符 | 固定长度字符串 |
VARCHAR | 1-65535字符 | 不固定长度字符串 | |
TEXT | 1-65535字符 | 不确定长度字符串 | |
MEDIUMTEXT | 1-1千6百万字符 | 不确定长度字符串 | |
LONGTEXT | 1-42亿字符 | 不确定长度字符串 | |
日期类型 | DATE | 3字节 | 日期 |
TIME | 3字节 | 时间 | |
YEAR | 1字节 | 年份 | |
DATETIME | 8字节 | 日期时间 | |
TIMESTAMP | 4字节 | 时间戳 | |
数字 | TINYINT | 1字节 | 小整数 |
SMALLINT | 2字节 | 普通整数 | |
MEDIUMINT | 3字节 | 普通整数 | |
INT | 4字节 | 较大整数 | |
BIGINT | 8字节 | 大整数 | |
FLOAT | 4字节 | 单精度浮点数 | |
DOUBLE | 8字节 | 双精度浮点数 | |
DECIMAL | ------ | 可变精度的十进制数(如:DECIMAL(10,2)) |
修改表的结构
修改字段类型和约束
ALTER TABLE 表名称
MODIFY 列1 数据类型 【约束】 【COMMENT 注释】,
MODIFY 列2 数据类型 【约束】 【COMMENT 注释】,
......;
添加表的字段
ALTER TABLE 表名称
ADD 列1名 数据类型 【约束】 【COMMENT 注释】,
ADD 列2名 数据类型 【约束】 【COMMENT 注释】
.........;
修改字段名称
ALTER TABLE 表名称
CHANGE 列1 新列名 数据类型 【约束】 【COMMENT 注释】,
CHANGE 列2 新列名 数据类型 【约束】 【COMMENT 注释】;
删除字段
ALTER TABLE 表名称
DROP 列1,
DROP 列2,
......;
数据库的范式
构造数据库必须遵循一定的规则,这种规则就是范式;目前关系数据库有6种范式,一般情况下,只满足第三范式即可
第一范式:原子性
第一范式是数据库的基本要求,不满足这一点就不是关系数据库;数据库表的每一类都是不可分割的基本数据项,同一列种不能有多个值,也不能存在重复的属性。
学号 | 姓名 | 班级 |
---|---|---|
1000 | 李四 | 高三年级1班 |
上表不符合第一范式,因为班级中的"高三年级1班"还可以划分为“年级”和“班级”
学号 | 姓名 | 年级 | 班级 |
---|---|---|---|
1000 | 李四 | 高三 | 1班 |
这样才符合第一范式
第二范式:唯一性
数据库表中的每条记录必须是唯一的。为了实现区分,通常要为表加上一个列用来存储唯一标识,这个唯一属性列被称作主键列。
学号 | 考试成绩 | 日期 |
---|---|---|
230 | 58 | 2018-07-15 |
230 | 58 | 2018-07-15 |
上述表格记录为同一个人在同一天参与的考试记录,他两次的成绩都是58,我们无法区分重复的数据
流水号 | 学号 | 考试成绩 | 日期 |
---|---|---|---|
230201807152687 | 58 | 58 | 2018-07-15 |
230201807152694 | 58 | 58 | 2018-07-15 |
加了流水号后数据具有了唯一性,符合第二范式
第三范式:关联性
每列都与主键有直接关系,不存在传递依赖
爸爸 | 儿子 | 女儿 | 女儿的玩具 | 女儿的衣服 |
---|---|---|---|---|
陈华 | 陈浩 | 陈婷婷 | 海绵宝宝 | 校服 |
上表不符合第三范式因为“女儿的玩具“ ”女儿的衣服”这两列与“女儿”字段有依赖,而与“爸爸”和“儿子”字段没有关系。
爸爸 | 儿子 | 女儿 |
---|---|---|
陈华 | 陈浩 | 陈婷婷 |
女儿 | 女儿的玩具 | 女儿的衣服 |
---|---|---|
陈婷婷 | 海绵宝宝 | 校服 |
将不符合的表格分为两个表格后,就符合第三范式
依照第三范式,数据可以拆分保存到不同的数据表,彼此保持关联
编号 | 部门 | 电话 |
---|---|---|
10 | 财务部 | 1001 |
20 | 技术部 | 1002 |
30 | 销售部 | 1003 |
编号 | 姓名 | 性别 | 部门 | 入职日期 |
---|---|---|---|---|
1 | 陈浩 | 男 | 10 | 2018-05-10 |
2 | 李婷婷 | 女 | 30 | 2018-03-22 |
上面的两个表,第二表将第一表关联到了第二个表中
字段约束
约束名称 | 关键字 | 描述 |
---|---|---|
主键约束 | PRIMARY KEY | 字段值唯一,且不能为NULL |
非空约束 | NOT NULL | 字段值不能为NULL |
唯一约束 | UNIQUE | 字段置为一,且可以为NULL |
外键约束 | FOREIGN KEY | 保持关联数据的逻辑性 |
注意,在使用过程中要放弃使用外键约束,因为如果使用外键约束,会导致各表之间相关联,你要删除父表的记录就需要先去删除子表与父表相关联的记录,才能回去删除父表的记录。除此之外,最糟糕的情况会出现外键约束的闭环问题,如果表与表之间形成外键闭环,我们将无法删除任何一张表的记录。由此产生的问题称为外键约束的闭环问题。
索引
一旦数据排序之后,查找速度就会翻倍,现实世界跟程序世界都是如此,如给单词本按首字母进行排序
创建索引:
CREATE TABLE 表名称(
.........,
INDEX 【索引名称】(字段),
..........
)
添加和删除索引:
CREATE INDEX 索引名称 ON 表名(字段);
ALTER TABLE 表名称 ADD INDEX [索引名](字段);
SHOW INDEX FROM 表名;
DROP INDEX 索引名称 ON 表名;
索引的使用原则:
数据量很大,而且经常被查询的数据表可以设置索引;索引值添加在经常被用作检索条件的字段上面;不要在大字段(指的是那些数据量很大,或者数据类型为长文本(如TEXT或BLOB类型)的字段)上创建索引。
时间:2024-05-11 星期六下午19:30
数据库的基本查询
时间:2024-05-12 星期天
DML数据库管理语言
学习内容
数据的简单查询:无条件查询记录(SELECT FROM)、字段的计算和字段的别名(SELECT 字段 AS 别名 FROM)
数据的高级查询: 数据排序(ORDER BY)、分页(LIMIT)、去除重复记录(SELECT DISTINCT 字段名 FROM 表)
数据的有条件查询: 条件表达式(数学运算符、比较运算符、逻辑运算符、按位运算符)
数据分页
如果LIMIT字句只有一个参数,它表示的是偏移量,起始值默认为0
SELECT 字段名1,字段名2 FROM 表 LIMIT 10;#获取结果集的10条数据
SELECT 字段名1,字段名2 FROM 表 LIMIT 0,10;#获取结果集第一条及之后的数据共10条数据
排序加分页
SELECT 字段名1,字段名2 FROM 表 ORDER BY 字段名 LIMIT 10;
条件查询
SELECT ......FROM......WHERE 条件1 [AND | OR ] 条件2 .....;
去除重复记录
SELECT DISTINIC 字段 FROM ........; #去除重复记录,DISTINC必须在第一个字段前才能使用,而且只能由一个字段使用了DISTINC修饰
条件语句的四类运算符
序号 | 运算符 |
---|---|
1 | 数学运算符(+、-、*、=) |
2 | 比较运算符(IS NULL, IS NOT NULL, BETWEEN 下限 AND 上限、LIKE模糊查询、REGEXP正则表达式) |
3 | 逻辑运算符(AND、OR、IN、XOR异或一个为真即为真) |
4 | 按位运算符(&、|、~取反、^位异或、<<左移、>>右移) |
WHERE字句的注意事项:
WHERE子句中,条件执行的顺序是从左到右的,所以我们应该把索引条件、或者筛选掉记录最多的条件写在最左侧。
查询语句的执行顺序
1.词法分析与优化(读取SQL语句)-->FROM(选择数据来源)-->WHERE(筛选数据,满足条件才行)-->SELECT(查询获取结果集)--> ORDER BY(为结果集进行排序)-->LIMIT(分页查询,限制查询的数据条数)
数据库的高级查询
学习内容
数据统计分析:聚合函数、分组查询、HAVING字句
多表连接查询:外连接、内连接、以及多表查询的多种语法
子查询:单行子查询、多行子查询、WHERE子查询、FROM子查询、SELECT子查询
聚合函数
聚合函数在数据的查询分析中,应用十分广泛,聚合函数可以对数据求和、求最大值和最小值、求平均值和统计条数等
-
SUM函数用于求和,只能用于数字类型,字符类型的统计结果为0,日期类型的统计结果是毫秒数相加
-
SELECT SUM(字段1) FROM 表;
-
-
MAX函数
-
SELECT MAX(字段1) FROM 表; #获取非空值的最大值 SELECT MAX(字段1+IFNULL(字段2,0)) FROM 表 WHERE 字段3 IN(10,20);#获取字段3值为10或20时,字段1加上字段2(字段2为NULL值时,设置为0)的值的最大值 SELECT MAX(LENGTH(字段1)) FROM 表;#获取字段1中字符最长的值
-
-
MIN函数,获取非空值的最小值
-
SELECT MIN(字段1) FROM 表;
-
-
AVG函数:用于获得非空值得平均值,非数字数据统计结果为0
-
SELECT AVG(字段1+IFNULL(字段2,0)) FROM 表;
-
-
COUNT函数,COUNT(*)用于获得包含空值得记录数,COUNT(列名)用于获得包含非控制的记录数
-
SELECT COUNT(*) FROM 表;#统计表中所有数据条数共有几条
-
注意:聚合函数不能写入到WHERE字句中,如下面所示
SELECT COUNT(*) FROM 表 WHERE 字段1>AVG(字段1); #该语句报错
分组查询
-
为什么要分组?
-
默认情况下汇总函数是对全表范围内的数据做统计,GROUP BY字句的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对每个小区域分别进行数据汇总处理
-
SELECT 字段1,AVG(字段2) FROM 表 GROUP BY 字段1;
-
-
-
逐级分组
-
数据库支持多列分组条件,执行时逐级分组
-
SELECT 字段1,字段2,COUNT(*),AVG(字段3) FROM 表 GROUP BY 字段1,字段2 ORDER BY 字段1
-
-
-
对SELECT字句的要求
-
查询语句中如果含有GROUP BY字句,那么SELECT子句中的内容就必须要遵守规定:SELECT子句中可以包括聚合函数,或者GROUP BY字句的分组列,其余内容均不可以出现在SELECT子句中
-
SELECT 字段1,COUNT(*), AVG(字段2) FROM 表 GROUP BY 字段1; #可以执行,语句正确 SELECT 字段1,COUNT(*), AVG(字段2),字段3 FROM 表 GROUP BY 字段1; #不可以执行,因为字段3并没有进行聚合函数操作也没有在GROUP BY字句的分组列。
-
-
-
GROUP_CONCAT函数
- GROUP_CONCAT函数可以把分组查询的某个字段拼接成一个字符串
-
各种字句的执行顺序
- FROM(获取数据源)-->WHERE(过滤数据源,满足条件才能进行后续操作)-->GROUP BY(将数据进行分组,要分组进行后续操作)-->SELECT(获取分组后的数据集,可以在这部分进行聚合函数操作)-->ORDER BY(对数据集进行排序)-->LIMIT(获取指定数据集条数)
HAVING字句
HAVING跟在GROUP BY后面,主要作用是实现分组后筛选的作用。
语句格式:
SELECT 字段1 FROM 表 GROUP BY 字段1 HAVING AVG(字段2)>=2000; #说明一下,HAVING语句中要使用如聚合函数或其它的具体值,不能使用一个字段作为筛选条件(比如 HAVING 字段2>=200这样)
表连接查询
表连接分类
内连接:内连接是结果集中只保留符合连接条件的记录
外连接:外连接是不管符不符合连接条件,记录都要保留在结果集中
内连接
-
内连接格式
-
SELECT ...... FROM 表1 [INNer] JOIN 表2 ON 条件 [INNer] JOIN 表3 ON 条件
-
-
从多张表中提取数据,必须指定关联的条件。如果不定义关联条件就会出现无条件连接,两张表的数据会交叉连接,产生笛卡尔积,即如果第一张表中有4条数据,第二张表中有16条记录,那么两个表如果无条件链接会产生4*16=64条数据
-
SELECT 字段1,字段2,字段3 FROM 表1 JOIN 表2;
-
-
规定了连接条件的表连接语句,就不会出现笛卡尔积
-
SELECT 字段1,字段2,字段3 FROM 表1 e JOIN 表2 d ON e.字段名=d.与前面的表e相同的字段名;
-
-
内连接的多种语法形式
-
SELECT ..... FROM 表1 JOIN 表2 ON 连接条件;
-
SELECT ..... FROM 表1 JOIN 表2 WHERE 连接条件; #WHREE替换ON
-
SELECT ..... FROM 表1 , 表2 WHERE 连接条件;#去掉JOIN,并将ON替换为WHERE
-
外连接
-
左外连接就是保留左表所有的记录,与右表做连接。如果右表有符合条件的记录就与左表连接,如果右表没有符合条件的记录,就用NULL与左表连接。右外连接也是如此。
-
UNION关键字可以将多个查询语句的结果集合并
-
(查询语句) UNION (查询语句) UNION (查询语句).....
-
-
外连接的注意事项
- 内连接只保留符合条件的记录,所以查询条件写在ON字句和WHERE字句中的效果是相同的。但是在外连接里,条件写在WHERE子句中,不符合条件的记录会被过滤掉,而不是保留下来。
子查询
-
WHERE子查询
-
这种子查询最简单,最容易理解,但是却是效率很低的子查询
-
SELECT 字段1,字段2,字段3 FROM 表 WHERE 字段1>=(SELECT AVG(字段1) FROM 表);#比较每条记录都要重新执行子查询
-
WHERE子句中的多行子查询
-
WHERE子句中,可以使用IN、ALL、ANY、EXISTS关键字来处理多行表达式结果集的条件判断
-
SELECT 字段1 FROM 表1 WHERE 字段2 > ALL (SELECT 字段1 FROM 表1 WHERE 字段1 IN("字段1值1",“字段1值2”));#ALL都要大于子查询内容值
-
EXISTS关键字:把原来在子查询之外的条件判断,写到了子查询里面
-
SELECT .... FROM 表名 WHERE [NOT] EXISTS(子查询)
-
-
-
-
FROM子查询
- 这种子查询只会执行一次,所以查询效率很高
-
SELECT子查询
- 这种子查询没输出一条记录的时候都要执行一次,查询效率很低,平时一般不要使用
时间:2024-05-12 星期天 下午15:50
MySQL对数据的基本操作
学习内容
数据添加:INSERT语法、INSERT方言语法(只适用于某个数据库产品的语言语法)、INSERT子查询、IGNORE关键字
数据修改:UPDATE语法、UPDATE表连接
数据删除:DELETE语法、DELETE表连接
数据添加
INSERT语句可以向数据表写入记录,可以是一条记录,也可以是多条记录
INSERT INTO 表名(字段1,字段2,.....) VALUES(值1,值2,....);#插入一条记录
INSERT INTO 表名(字段1,字段2,.....) VALUES(值1,值2,....),(值1,值2,....);#插入两条记录
MySQL数据库INSERT语句方言
INSERT INTO 表名 SET 字段1=值1,字段2=值2,.....;
INGNORE关键字
INGNORE关键字会让INSERT只插入数据库不存在的记录
INSERT [INGNORE] INTO 表名 ......;
数据修改
UPDATE语句用于修改表的记录
UPDATE [INGNORE]
SET 字段1=值1,字段2=值2,......
[WHERE 条件1....]
[ORDER BY .......]
[LIMIT ..........]
UPDATE语句的表连接
因为相关子查询效率非常低,所以我们可以利用表连接的方式改造UPDATE语句
内连接
写法一:
UPDATE 表1 JOIN 表2 ON 条件
SET 字段1=值1, 字段2=值2,.....;
写法二:
UPDATE 表1,表2
SET 字段1=值1, 字段2=值2,....
WHERE 连接条件;
外连接
UPDATE 表1[LEFT|RIGHT] JOIN 表2 ON 条件
SET 字段1=值1,字段2=值2,....;
数据删除
DELETE语句用于删除记录,语法如下
DELETE [INGNORE] FROM 表名
[WHERE 条件1,条件2,......]
[ORDER BY........]
[LIMIT.........]
时间:2024-05-17星期五 上午
MySQL基本函数的使用
学习内容
像编程语言利用函数封装业务功能一样,数据库也能把一些复杂的功能封装到函数里,供使用者调用
函数分类:
- 数字函数
- ABS(绝对值)、MOD、CEIL(向上取整)、FLOOR、ROUND(四舍五入)、正余弦函数、弧度转函数
- 字符函数
- UPPER、LOWER、CHAR_LENGTH、CONCAT
- 日期函数
- NOW、DATE_FORMAT、DATE_ADD、DATEDIFF
- 条件函数
- IF、IFNULL
日期函数
获取系统时间函数:
- NOW()函数能获得系统日期和时间,格式yyyy-MM-dd hh:mm:ss
- CURDATE()函数能获得当前系统日期,格式yyyy-MM-dd
- CURTIME()函数能获得当前系统时间,格式hh:mm:ss
日期格式化函数:
-
DATE_FORMAT()函数用于格式化日期,返回用户想要的日期格式
-
DATE_FORMAT(日期,表达式)
-
使用
-
SELECT ename, DATE_FORMAT(hiredate,"%Y") FROM t_emp;#获取雇佣的年份
-
-
日期偏移计算:
-
DATE_ADD()函数可以实现日期的偏移计算,而且时间单位很灵活
-
DATE_ADD(日期,INTERVAL 偏移量 时间单位)
-
使用
-
SELECT DATE_ADD(NOW(),INTERVAL 15 DAY); #当前时间偏移15天后的时间 SELECT DATE_ADD(NOW(),INTERVAL -300 DAY); #当前时间偏移300天前的时间
-
-
计算日期之间相隔的天数:
- DATEDIFF(日期,日期)
字符函数
LOWER:转换小写字符,使用LOWER(字段名)
UPPER:转换大写字符,使用UPPER(字段名)
LENGTH:计算字符数量,使用LENGTH(字段名)
CONCAT:连接字符串,使用CONCAT(字段名,"$"),在字段名这一列中字符的后面添加"$".
INSERT:插入/替换字符,使用INSERT("你好",1,0,"先生"),在字符1的位置插入字符,替换0个字符,结果为"先生你好"
REPLACE:替换字符,使用REPLACE("你好先生","先生",“女士”),将字符串中"你好先生"中的"先生"字符替换为"女士"
SUBSTR:截取字符串,使用SUBSTR("你好世界",3,4),截取出第3个字符到第4个字符,即"世界"两字
SUBSTRING: 截取字符串,使用SUBSTRING("你好世界",3,2),截取出第3个字符开始的两个字符,即"世界"两字
LPAD:左侧填充字符,使用LPAD("Hello",10,"!"),在字符串左侧填充字符串到10个字符,不够的用"!"代替,结果为!!!!!Hello
RPAD:左侧填充字符,使用LPAD("Hello",10,"*"),在字符串左侧填充字符串到10个字符,不够的用"!"代替,结果为Hello!!!!!
TRIM:去除首位空格,使用TRIM(" 你好先生 "),去除首位空格" 你好先生 ",变为"你好先生"
条件函数
-
IFNULL(表达式,值),使用IF(字段名,0),如果字段名中的值为"NULL",则将该值置为0
-
IF(表达式,值1,值2)
-
使用
-
SELECT e.empno,e.ename,d.dname, IF(d.dname="SALES","礼品A","礼品B") FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno; #SALES部分发放礼品A,其余部分发放礼品B,打印每名员工获得的礼品
-
-
-
复杂的条件判断可以用条件语句来实现,比IF语句功能更强大
-
CASE WHEN 表达式 THEN 值1 WHEN 表达式2 THEN 值2 .......... ELSE 值N END
-
MySQL的综合应用
学习内容
- 数据库事务机制
- undo和redo机制、开启事务、提交事务、回滚事务
- 数据导出与导入
- SQL文件的导出与导入,TXT文档的导入与导出
事务机制
MySQL总共有5中日志,其中redo日志和undo日志与事务有关
事务机制:
-
关系型数据库管理系统可看作由两部分组成:RDBMS=SQL语句 + 事务
-
事务是一个或者多个SQL语句组成的整体,要么全部执行成功,要么全部执行失败
-
事务案例
-
管理事务
-
默认情况下,MySQL执行每条SQL语句都会自动开启和提交事务
-
为了让多条SQL语句纳入到一个事务之下,可以手动开启事务
-
START TRANSACTION; SQL语句; [COMMIT|ROLLBACK];
-
事务的属性:
ACID: A-原子性;C-一致性;I-隔离性;D-持久性
事务的隔离级别:
- read uncommitted: 读取未提交数据
- read committed:读取已提交数据
- repeatable read:重复读取
- serializable:序列化
- 由于事务并发执行所带来的各种问题,前三种隔离级别只适用在某些业务场景中,但是序列化的隔离性,让事务注意执行,就不会产生上述问题了。开启了这个隔离级别,当前会话的事务只能在别的事务commit提交之后才能执行会话中的SQL语句。
在开启事务的语句之前,使用下面的语句可以修改这个会话(session)的事务隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL 隔离级别名;#会话中修改隔离级别的模板
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; #隔离级别名:READ UNCOMMITTED,意味着当前会话下的事务可以读取其它事务未提交的数据
数据的导出与导入
数据导出与备份的区别:
- 数据导出,导出的纯粹是业务数据
- 数据导出可以分为两类
- SQL文档(包括了表结构,再导入时会去解析每一个SQL语句,比较耗时,适用于少量数据)
- 文本文档(只有数据,没有sql语句,没有建表语句,导入时只是将该文本文档中的数据导入到新建表结构(不在文本文档中,需要自定义好与文本文档数据进行字段对应)的表中
- 数据导出可以分为两类
- 数据备份,备份的是数据文件、日志文件、索引文件等等
指令导出SQL文件:
-
mysqldump用来把业务数据导出成SQL文件,其中也包括了表结构
-
#指令 mysqldump -uroot -p [no-data] 逻辑库 > 路径
-
指令导入SQL文件:
-
source命令用于导入SQL文件,包括创建数据表,写入记录等
-
USE demo;#选择数据库 SOURCE backup.sql;#执行sql文件,在demo数据库下导入表
-
除了上面的指令导入/导出数据之外,还可以适用入Navicat这类图形界面进行数据导入,但是需要注意的是一般数据库的使用是在没有图形界面的Linux系统。
标签:语句,数据库,基础,查询,字段,MySQL,WHERE,SELECT From: https://www.cnblogs.com/lmyfi/p/18197848