25_MySQL存储引擎 、 数据导入导出 管理表记录 匹配条件

版本:5.7.28
服务器:mysql 192.168.4.20

1.MySQL存储引擎的配置
查看服务支持的存储引擎
查看默认存储类型
更改表的存储引擎
设置数据库服务默认使用的存储引擎

查看存储引擎信息
mysql> SHOW ENGINES;
+--------------------+---------+-------------------
| Engine             | Support |
+--------------------+---------+---------------------
| InnoDB             | DEFAULT |
| MRG_MYISAM         | YES     |
| MEMORY             | YES     |
| BLACKHOLE          | YES     |
| MyISAM             | YES     |
| CSV                | YES     |
| ARCHIVE            | YES     |
| PERFORMANCE_SCHEMA | YES     |
| FEDERATED          | NO      |
+--------------------+---------+--------------------

查看默认存储类型
mysql> SHOW VARIABLES LIKE ‘default_storage_engine‘;
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+

修改默认存储引擎
指令修改
mysql> SET default_storage_engine=MyISAM;
mysql> SHOW VARIABLES LIKE ‘default_storage_engine‘;
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | MyISAM |
+------------------------+--------+
配置文件修改
]# vim /etc/my.cnf
...
default_storage_engine=MEMORY   //改用MEMORY引擎
]# systemctl restart mysqld.service
mysql> SHOW VARIABLES LIKE ‘default_storage_engine‘;
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | MEMORY |
+------------------------+--------+
 
2.数据导入、导出

2.1  将/etc/passwd文件导入MySQL数据库
新建userdb库、user表
mysql> CREATE DATABASE userdb;
mysql> USE userdb;
mysql> CREATE TABLE user(
    -> name varchar(24) NOT NULL,
    -> passwd varchar(48) DEFAULT ‘x‘,
    -> uid int(5) NOT NULL,
    -> gid int(5) NOT NULL,
    -> fullname varchar(128),
    -> homedir varchar(64) NOT NULL,
    -> shell varchar(24) NOT NULL
    -> );

mysql> DESC user;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| name     | varchar(24)  | NO   |     | NULL    |       |
| passwd   | varchar(48)  | YES  |     | x       |       |
| uid      | int(5)       | NO   |     | NULL    |       |
| gid      | int(5)       | NO   |     | NULL    |       |
| fullname | varchar(128) | YES  |     | NULL    |       |
| homedir  | varchar(64)  | NO   |     | NULL    |       |
| shell    | varchar(24)  | NO   |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+

查看mysql的工作文件夹
mysql> SHOW VARIABLES LIKE ‘%secure_file_priv‘;
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
在MySQL 5.7.6版本之后,导入文件只能在secure_file_priv指定的文件夹下。
 
拷贝数据到目录
mysql> system cp /etc/passwd /var/lib/mysql-files/
mysql> LOAD DATA INFILE ‘/var/lib/mysql-files/passwd‘
    -> INTO TABLE user
    -> FIELDS TERMINATED BY ‘:‘
    -> LINES TERMINATED BY ‘\n‘;(这条默认有,除非用其他分隔用)

mysql> SELECT COUNT(*) FROM user;
+----------+
| COUNT(*) |
+----------+
|       24 |
+----------+

查看user前5条记录,列出用户名、UID
mysql> SELECT name ,uid FROM user LIMIT 5;
+--------+-----+
| name   | uid |
+--------+-----+
| root   |   0 |
| bin    |   1 |
| daemon |   2 |
| adm    |   3 |
| lp     |   4 |
+--------+-----+
 
为user表中的每条记录添加自动编号
mysql> ALTER TABLE user ADD sn int(4) AUTO_INCREMENT PRIMARY KEY FIRST;
mysql> SELECT sn,name FROM user LIMIT 5;
+----+--------+
| sn | name   |
+----+--------+
|  1 | root   |
|  2 | bin    |
|  3 | daemon |
|  4 | adm    |
|  5 | lp     |
+----+--------+
 
2.2 从MySQL数据库中导出查询结果
以将userdb库user表中UID大于100的前10条记录导出

安全导出
mysql> SELECT * FROM user WHERE uid>100 LIMIT 10 into outfile ‘/var/lib/mysql-files/test.txt‘;

以将userdb库user表中UID大于100的前10条记录导出为/myload/user1.txt
修改默认目录
]# ls -ld /var/lib/mysql-files/
drwxr-x--- 2 mysql mysql 36 2月   3 10:29 /var/lib/mysql-files/
]# mkdir /myload
]# chown mysql /myload
]# ls -ld /myload
drwxr-xr-x 2 mysql root 6 2月   3 10:32 /myload
# vim /etc/my.cnf
[mysqld]
...
secure_file_priv="/myload"
]# systemctl restart mysqld
mysql> SHOW VARIABLES LIKE ‘secure_file_priv‘;
+------------------+----------+
| Variable_name    | Value    |
+------------------+----------+
| secure_file_priv | /myload/ |
+------------------+----------+

导出user表中UID小于5的记录
如果以默认的‘\n‘ 为行分隔,导出操作同样可不指定LINES TERMINATED BY:
mysql> SELECT * FROM userdb.user WHERE uid<5;
+--------+--------+-----+-----+----------+----------------+---------------+
| name   | passwd | uid | gid | fullname | homedir        | shell         |
+--------+--------+-----+-----+----------+----------------+---------------+
| root   | x      |   0 |   0 | root     | /root          | /bin/bash     |
| bin    | x      |   1 |   1 | bin      | /bin           | /sbin/nologin |
| daemon | x      |   2 |   2 | daemon   | /sbin          | /sbin/nologin |
| adm    | x      |   3 |   4 | adm      | /var/adm       | /sbin/nologin |
| lp     | x      |   4 |   7 | lp       | /var/spool/lpd | /sbin/nologin |
+--------+--------+-----+-----+----------+----------------+---------------+
导出:
mysql> SELECT * FROM userdb.user WHERE uid<5
    -> INTO OUTFILE ‘/myload/user1.txt‘
    -> FIELDS TERMINATED BY ‘:‘;
]# wc -l /myload/user1.txt
5 /myload/user1.txt
 
3.操作表记录
表记录的插入
表记录的更新
表记录的查询
表记录的删除
 
3.1 删除表的所有记录
mysql> DELETE FROM user;
mysql> SELECT * FROM user;
 
3.2 给t1插入三条数据
mysql> CREATE TABLE t1(
    -> name varchar(10),
    -> sex enum("boy","girl"),
    -> age int(3)
    -> );

mysql> INSERT t1 VALUES
    -> (‘Jim‘,‘girl‘,24),
    -> (‘Tom‘,‘boy‘,21),
    -> (‘Lily‘,‘girl‘,20);

mysql> SELECT * FROM t1;
+------+------+------+
| name | sex  | age  |
+------+------+------+
| Jim  | girl |   24 |
| Tom  | boy  |   21 |
| Lily | girl |   20 |
+------+------+------+
 
3.3 只插入部分字段的值
mysql> INSERT INTO t1(name,age)
    -> VALUES(‘Jerry‘,27);

3.3 更新表记录时,若未限制条件,则适用于所有记录
mysql> UPDATE t1 SET age=10;
则所有人年龄都是10
 
3.4 更新表记录时,可以限制条件,只对符合条件的记录有效
mysql> UPDATE t1 SET age=20
    -> WHERE sex=‘boy‘;
 
3.5 删除表记录时,可以限制条件,只删除符合条件的记录
mysql> DELETE FROM t1 WHERE age < 18;
 
3.6 删除表记录时,如果未限制条件,则会删除所有的表记录
mysql> DELETE FROM t1;

4.查询及匹配条件
mysql> SELECT * FROM stu_info;
+------+------+------+
| name | sex  | age  |
+------+------+------+
| Jim  | girl |   24 |
| Tom  | boy  |   21 |
| Lily | girl |   20 |
+------+------+------+

4.1 查询stu_info表一共有多少条记录
mysql> SELECT count(*) FROM stu_info;
+----------+
| count(*) |
+----------+
|        3 |
+----------+

4.2 计算stu_info表中各学员的平均年龄、最大年龄、最小年龄
mysql> SELECT avg(age),max(age),min(age) FROM stu_info;
+----------+----------+----------+
| avg(age) | max(age) | min(age) |
+----------+----------+----------+
|  21.6667 |       24 |       20 |
+----------+----------+----------+

4.3 计算stu_info表中男学员的个数
mysql> SELECT count(sex) FROM stu_info WHERE sex=‘boy‘;
+------------+
| count(sex) |
+------------+
|          1 |
+------------+

4.4 列出stu_info表中年龄为21岁的学员记录
mysql> SELECT * FROM stu_info WHERE age=21;
 
4.5 列出stu_info表中年龄超过21岁的学员记录
mysql> SELECT * FROM stu_info WHERE age>21;
 
4.6 列出stu_info表中年龄大于或等于21岁的学员记录
mysql> SELECT * FROM stu_info WHERE age>=21;
 
4.7 列出stu_info表中年龄在20岁和24岁之间的学员记录
mysql> SELECT * FROM stu_info WHERE age BETWEEN 20 and 24;
 
4.8 列出stu_info表中年龄小于23岁的女学员记录
mysql> SELECT * FROM stu_info WHERE age < 23 AND sex=‘girl‘;
 
4.9 列出stu_info表中年龄小于23岁的学员,或者女学员的记录
mysql> SELECT * FROM stu_info WHERE age < 23 OR sex=‘girl‘;
 
4.10 如果某个记录的姓名属于指定范围内的一个,则将其列出
mysql> SELECT * FROM stu_info WHERE name IN
    -> (‘Jim‘,‘Tom‘,‘Mickey‘,‘Minnie‘);
 
4.11 计算1234与5678的和
mysql> SELECT 1234+5678;
+-----------+
| 1234+5678 |
+-----------+
|      6912 |
+-----------+

4.12 输出stu_info表各学员的姓名、15年后的年龄
mysql> SELECT name,age+15 FROM stu_info;
+------+--------+
| name | age+15 |
+------+--------+
| Jim  |     39 |
| Tom  |     36 |
| Lily |     35 |
+------+--------+
 
4.13 列出stu_info表中姓名以“J”开头的学员记录
mysql> SELECT * FROM stu_info WHERE name LIKE ‘J%‘;
 
4.14 列出stu_info表中姓名以“J”开头且只有3个字母的学员记录
mysql> SELECT * FROM stu_info WHERE name LIKE ‘J__‘;
 
4.15 列出stu_info表中姓名以“J”开头且以“y”结尾的学员记录
mysql> SELECT * FROM stu_info WHERE name REGEXP ‘^J.*y$‘;
效果等同于:
mysql> SELECT * FROM stu_info WHERE name Like ‘J%y‘;
 
4.16 列出stu_info表中姓名以“J”开头或者以“y”结尾的学员记录:
mysql> SELECT * FROM stu_info WHERE name REGEXP ‘^J|y$‘;
效果等同于:
mysql> SELECT * FROM stu_info WHERE name Like ‘J%‘ OR name Like ‘%y‘;
 
4.17 列出stu_info表的所有记录,按年龄排序
mysql> SHOW SESSION VARIABLES;
mysql> SHOW SESSION VARIABLES;
mysql> select @@sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@sql_mode                                                                                                                                |
+-------------------------------------------------------------------------------------------------------------------------------------------+
| ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+-------------------------------------------------------------------------------------------------------------------------------------------+

说明:如果启用了only_full_group_by SQL模式(在默认情况下是这样),那么MySQL就会拒绝选择列表、条件或顺序列表引用的查询,这些查询将引用组中未命名的非聚合列,而不是在功能上依赖于它们。(在5.7.5之前,MySQL没有检测到功能依赖项,only_full_group_by在默认情况下是不启用的。

执行以下命令:
mysql> set global sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION‘;
mysql> set session sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION‘;
这两个命令,去掉 sql_mode 的 ONLY_FULL_GROUP_BY

现在执行
mysql> SELECT * FROM stu_info GROUP BY age;(ASC,由小到大,默认)
+------+------+------+
| name | sex  | age  |
+------+------+------+
| Lily | girl |   20 |
| Tom  | boy  |   21 |
| Jim  | girl |   24 |
+------+------+------+

mysql> SELECT * FROM stu_info GROUP BY age DESC;(由大到小)
+------+------+------+
| name | sex  | age  |
+------+------+------+
| Jim  | girl |   24 |
| Tom  | boy  |   21 |
| Lily | girl |   20 |
+------+------+------+
 
4.18 限制查询结果的输出条数,LIMIT
mysql> SELECT * FROM stu_info LIMIT 2;
 
4.19 列出stu_info表中年龄最小的2条学员记录由小到大输出
mysql> SELECT * FROM stu_info GROUP BY age ASC LIMIT 2;
+------+------+------+
| name | sex  | age  |
+------+------+------+
| Lily | girl |   20 |
| Tom  | boy  |   21 |
+------+------+------+
 
4.20 分组查询结果,GROUP BY
针对stu_info表,按性别分组,分别统计出男、女学员的人数:
mysql> SELECT sex,count(sex) FROM stu_info GROUP BY sex;
+------+------------+
| sex  | count(sex) |
+------+------------+
| boy  |          1 |
| girl |          2 |
+------+------------+

列出查询字段时,可以通过AS关键字来指定显示别名,比如上述操作可改为:
mysql> SELECT sex AS ‘性别‘,count(sex) AS ‘人数‘
    -> FROM stu_info GROUP BY sex;
+--------+--------+
| 性别   | 人数   |
+--------+--------+
| boy    |      1 |
| girl   |      2 |
+--------+--------+

原文地址:https://www.cnblogs.com/luwei0915/p/12254923.html

时间: 2024-11-06 13:54:56

25_MySQL存储引擎 、 数据导入导出 管理表记录 匹配条件的相关文章

三十一.MySQL存储引擎 、 数据导入导出 管理表记录 匹配条件

1.MySQL存储引擎的配置 查看服务支持的存储引擎 查看默认存储类型 更改表的存储引擎 设置数据库服务默认使用的存储引擎 1.1 查看存储引擎信息 mysql> SHOW ENGINES\G 1.2 查看默认存储类型 mysql> SHOW VARIABLES LIKE 'default_storage_engine'; +------------------------+--------+ | Variable_name          | Value  | +-------------

03: 数据导入导出 、 表记录基本操作 、 查询及匹配条件 、 多表查询

day03一数据导入二数据导出三管理表记录 *3.1 插入表记录3.2 查询表记录 (单表 多表 嵌套 连接)3.3 条件匹配3.4 更新表记录字段的值3.5 删除表记录++++++++++++++++++++++++++++++++一数据导入 : 把系统文件的内容存储到数据库的表里.把系统已有的用户信息存储到studb.user表/etc/passwd用户名 密码站位符 uid gid 描述信息 家目录 shell create database studb;create table stud

SQL数据导入/导出,操作表记录,查询及匹配条件

SQL数据导入/导出 1.1 问题 使用SQL语句完成下列导出.导入操作: 将/etc/passwd文件导入userdb库userlist表并给每条记录加编号 将userdb库userlist表中UID小于100的前10条记录导出,存为/dbak/ulist.txt文件 1.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:将/etc/passwd文件导入MySQL数据库 导入后的表结构取决于/etc/passwd配置文件.若一时记不住各字段的含义,也可以查看passwd配置文件的man手册页

MySQL存储引擎 SQL数据导入/导出 操作表记录 查询及匹配条件

MySQL存储引擎的配置 SQL数据导入/导出 操作表记录 查询及匹配条件 1 MySQL存储引擎的配置1.1 问题 本案例要求MySQL数据存储引擎的使用,完成以下任务操作: 可用的存储引擎类型 查看默认存储类型 更改表的存储引擎 1.2 步骤 实现此案例需要按照如下步骤进行. 步骤一:查看存储引擎信息 登入MySQL服务器,查看当前支持哪些存储引擎. 使用mysql命令连接,以root用户登入: [[email protected] ~]# mysql -u root –p Enter pa

thinkphp导入导出excel表单数据

在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传excel文件提交到后台,利用form表单提单即可 <form method="post" enctype="multipart/form-data" action="" > <input type="submit"

储存引擎,导入导出

                                                            第三节  储存引擎,导入导出   l 储存引擎的介绍和使用 ********************************************************** mysql存储引擎 1.1存储引擎介绍 1.2查看数据库服务支持的存储引擎有那些? 1.3查看已有的表使用的存储引擎 1.4修改数据库服务默认使用的存储引擎 1.5修改表使用的存储引擎,或建表时指定表使

Oracle数据导入导出imp/exp

在oracle安装目录下有EXP.EXE与IMP.EXE这2个文件,他们分别被用来执行数据库的导入导出.所以Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. Oracle数据导出exp Exp参数详解: USERID 运行导出命令的帐号的用户名/口令 BUFFEER 用来取数据行的缓冲区的大小 FILE 导出转储文件的名字 COMPRESS 导出是否应该压缩有碎片的段成一个范围,这将会影响STORAGE子句 GRANTS 导出时否要导出数据库对象上的授权 INDEXES

ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP命令详细对比

ORACLE EXPDP IMPDP数据导入导出命令详解及同EXP IMP 命令详细对比 一.EXPDP IMPDP EXP IMP 可以实现 1.可以实现逻辑备份和逻辑恢复 2.可以在数据库用户之间移动对象 3.可以在数据库之间移动对象 4.可以实现表空间转移 二.EXPDP的命令详解 C:\Users\Administrator>20:42:32.90>expdp help=y Export: Release 11.2.0.1.0 - Production on 星期六 10月 10 09

使用Transact-SQL进行数据导入导出方法详解

刚接触这种数据搬移的方式会有很多问题     我只用过  第一种方式有的朋友会出现   SQL Server 阻止了对组件 /'Ad Hoc Distributed Queries/' 的访问 解决方案    请参考http://blog.csdn.net/the_pain/article/details/4103518 启用Ad Hoc Distributed Queries: exec sp_configure 'show advanced options',1reconfigureexec