博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL基础
阅读量:6161 次
发布时间:2019-06-21

本文共 18814 字,大约阅读时间需要 62 分钟。

1.数据库创建:

方法:下载稳定版本的二进制包执行安装脚本,指定安装参数,修改配置文件:

1.1安装前准备:

  下载:

  解压到指定目录:

[root@localhost src]#[ -d /usr/local/mysql ] && mv mysql /usr/local/mysql_old
[root@localhost src]# tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
[root@localhost src]#mv mysql-5.6.36-linux-glibc2.5-x86_64/ /usr/local/mysql

  建立MySQL用户

[root@localhost src]# useradd -s /sbin/nologin mysql

1.2初始化数据库(安装)

[root@localhost src]# cd /usr/local/mysql[root@localhost mysql]# mkdir -p /data/mysql ; chown -R mysql:mysql /data/mysql[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql/

1.3配置文件

拷贝主配置文件[root@localhost mysql]# cp support-files/my-default.cnf /etc/my.cnf 修改其中内容: [mysqld] #innodb_buffer_poor_size = 128M log_bin = shiyan basedir = /usr/local/mysql datadir = /data/mysql socket = /tmp/mysql.sock join_buffer_size = 128M sort_buffer_size = 2M read_rnd_buffer_size = 2M sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
拷贝启动脚本文件并修改其属性 [root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysqld [root@localhost mysql]# chmod 755 /etc/init.d/mysqld
修改启动脚本需要修改的地方有 “datadir=/data/mysql”  [root@localhost mysql]# vim /etc/init.d/mysqld

1.4 把启动脚本加入系统服务项,并设定开机启动,启动mysql

[root@localhost mysql]# chkconfig --add mysqld[root@localhost mysql]# chkconfig mysqld on[root@localhost mysql]# service mysqld start

如果启动不了,请到 /data/mysql/ 下查看错误日志,这个日志通常是主机名.err. 检查mysql是否启动的命令为:

[root@localhost mysql]# ps aux |grep mysqld    //输出两行以上结果
[root@localhost mysql]# ps aux |grep mysqld   //出现端口信息的输出:3306

到此,MySQL数据库已经成功安装好!

 


 

2.常用操作:

2.1 连接

在本地以管理员身份登录:mysql -uroot        (首次进入是不需要密码的)

[root@ipi ~]# mysql -uroot                    //这里-u指定用户登录,-h指定远程服务器ip或域名,-S指定sock ,-P端口,-p密码(-p后可以不跟,则在交互模式输入(建议))...mysql>

退出使用quit或exit即可

注:mysql登录命令路径加入系统命令#echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile && source /etc/profile

2.2 设置密码:

[root@ipi ~]# mysqladmin -uroot password '123456' 接下来登录就要加入密码参数

 [root@ipi ~]# mysql -uroot -p

  Enter password:
  ...

  mysql>

2.3 查看基本信息

2.3.1 查看当前的库

mysql> show databases;

2.3.2 查询某个库的表

mysql> use mysql         //use切换数据库Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;

2.3.3 查看某个表的全部字段

mysql> desc t1;+-------+----------+------+-----+---------+-------+| Field | Type     | Null | Key | Default | Extra |+-------+----------+------+-----+---------+-------+| id    | int(10)  | YES  |     | NULL    |       || name  | char(20) | YES  |     | NULL    |       || phone | int(12)  | YES  |     | NULL    |       |+-------+----------+------+-----+---------+-------+3 rows in set (0.00 sec) 更详细的查看:

  mysql> show create table t1\G;           //加\G让显示看起来更清晰

  *************************** 1. row ***************************
  Table: t1
  Create Table: CREATE TABLE `t1` (
  `id` int(10) DEFAULT NULL,
  `name` char(20) DEFAULT NULL,
  `phone` int(12) DEFAULT NULL
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1
  1 row in set (0.00 sec)

 2.3.4 查看当前的版本,用户,库

  mysql> select version();

  +------------+
  | version() |
  +------------+
  | 5.6.36-log |
  +------------+
  1 row in set (0.00 sec)

mysql> select user();+----------------+| user()         |+----------------+| root@localhost |+----------------+1 row in set (0.00 sec)mysql> select database();+------------+| database() |+------------+| shiyanlou  |+------------+1 row in set (0.00 sec)

2.3.5 查看MySQL的当前状态

mysql> show status;+-----------------------------------------------+-------------+| Variable_name                                 | Value       |+-----------------------------------------------+-------------+| Aborted_clients                               | 20          || Aborted_connects                              | 0           |........................

2.3.6 查看mysql参数

mysql> show variables;            //参数太多未列出,大多是有配置文件设置的,部分参数支持在线修改

2.3.7修改MySQL参数

mysql> show variables like 'max_connect%';           //这里%相当于shell中的*,表示统配+--------------------+-------+| Variable_name      | Value |+--------------------+-------+| max_connect_errors | 100   || max_connections    | 151   |+--------------------+-------+2 rows in set (0.00 sec)mysql> set global max_connect_errors = 1000;Query OK, 0 rows affected (0.00 sec)mysql> show variables like 'max_connect%';+--------------------+-------+| Variable_name      | Value |+--------------------+-------+| max_connect_errors | 1000  || max_connections    | 151   |+--------------------+-------+2 rows in set (0.00 sec)

2.3.8 查看当前MySQL服务器的队列

  查看队列在日常管理中较为频繁,因为使用它可以看到MySQL当前在干什么,也可以发现锁表情况,如下所示:

mysql> show processlist;+----+--------+--------------------+--------+---------+------+-------+------------------+| Id | User   | Host               | db     | Command | Time | State | Info             |+----+--------+--------------------+--------+---------+------+-------+------------------+|  6 | zabbix | 192.168.1.75:58810 | zabbix | Sleep   |  100 |       | NULL             ||  8 | zabbix | 192.168.1.75:58812 | zabbix | Sleep   |  101 |       | NULL             ||  9 | zabbix | 192.168.1.75:58813 | zabbix | Sleep   |    0 |       | NULL             || 31 | zabbix | 192.168.1.75:59385 | zabbix | Sleep   |   56 |       | NULL             || 32 | zabbix | 192.168.1.75:59387 | zabbix | Sleep   |   53 |       | NULL             || 34 | zabbix | 192.168.1.75:59388 | zabbix | Sleep   |    3 |       | NULL             || 35 | zabbix | 192.168.1.75:59389 | zabbix | Sleep   |    1 |       | NULL             || 36 | zabbix | 192.168.1.75:59390 | zabbix | Sleep   |    2 |       | NULL             || 37 | zabbix | 192.168.1.75:59391 | zabbix | Sleep   |   22 |       | NULL             || 38 | zabbix | 192.168.1.75:59392 | zabbix | Sleep   |   22 |       | NULL             || 39 | zabbix | 192.168.1.75:59395 | zabbix | Sleep   |  101 |       | NULL             || 40 | zabbix | 192.168.1.75:59396 | zabbix | Sleep   |    0 |       | NULL             || 47 | root   | localhost          | db1    | Query   |    0 | init  | show processlist |+----+--------+--------------------+--------+---------+------+-------+------------------+

 

2.4 创建

2.4.1 新库:

mysql> create database db1;Query OK, 1 row affected (0.00 sec)

2.4.2 新表:

mysql> use db1;Database changedmysql> create table t1 (id int(4),name char(40),iphone int(12));Query OK, 0 rows affected (0.12 sec)

2.4.3 创建用户:

mysql> grant all on *.* to user1 identified by '123456';Query OK, 0 rows affected (0.04 sec)//all 表示所有权限,.有两个*,前一个表所有数据库,后一个表所有的表,这里的user1创建到了默认的localhost,若给其他机器上的某个用户授权使用@'ip',如下mysql> grant all on db1.* to 'user2'@'192.168.1.75' identified by '123456';Query OK, 0 rows affected (0.05 sec)//%代替主机表示所有主机,如下mysql> grant all on db1.* to 'user3'@'%' identified by '123456';Query OK, 0 rows affected (0.00 sec)

2.5 增删改查等常用操作

2.5.1为刚才的t1表插入相关数据

mysql> insert into t1 (id,name,iphone) values (1,'ipi','021123456');     //insert into tablename (列名1,...) values (值);Query OK, 1 row affected (0.01 sec)mysql> select * from t1;+------+------+----------+| id   | name | iphone   |+------+------+----------+|    1 | ipi  | 21123456 |+------+------+----------+1 row in set (0.00 sec)

  注:可以看到name字段值加了单引号,这是由于他们是char字符型,此外还有varchar、text、date等。不加单引号的有int、float、double等;

2.5.2 更改某一行

mysql> update db1.t1 set name='abm' where id=1;Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0

  删除某一行:DELETE FROM 表名字 WHERE 条件;

 

2.5.3 count()统计条目

mysql> select count(*) from t1;+----------+| count(*) |+----------+|        1 |+----------+1 row in set (0.00 sec)

2.5.4 清空某个表的数据

mysql> truncate table t1;                  Query OK, 0 rows affected (0.12 sec)

2.5.5 删除表

mysql> drop table t1;Query OK, 0 rows affected (0.07 sec)

2.5.6 删除数据库

mysql> drop database db1;Query OK, 0 rows affected (0.05 sec)

 2.5.7 重命名一张表

RENAME TABLE 原名 TO 新名字; mysql> rename table t1 to t2;Query OK, 0 rows affected (0.08 sec) 也可以用alter table 原名 to新名

 mysql> alter table t2 rename t1;

 Query OK, 0 rows affected (0.03 sec)

 

2.5.8 对列进行操作        修改数据类型必须小心,因为这可能会导致数据丢失。在尝试修改数据类型之前,请慎重考虑。

  增加一列(新增加的列,被默认放置在这张表的最右边)

mysql> alter table table_name add column 数据类型 约束; 或: ALTER TABLE 表名字 ADD 列名字 数据类型 约束; 要将新增的列放到指定的位置:   放到第一列:alter table table_name add column 数据类型 约束 frist;       //最后加frist   放到指定列后:alter table table_name add column 数据类型 约束 after 列;

 

  删除一列:alter table 表名字 drop 列名字;

  重命名一列:ALTER TABLE 表名字 CHANGE 原列名 新列名 数据类型 约束;          (注意:“数据类型”不可省略,否则重命名失败)

  改变数据类型:ALTER TABLE 表名字 MODIFY 列名字 新数据类型;

 

 


 

 3.SQL的约束

 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。

3.1建立含约束的表

  下载实验需要的sql,在SQL3目录下有MySQL-03-01.sql,之中包含的代码可以新建一个数据库mysql_shiyan,之中有三张表department、employee、project包含了各种约束,

  [root@ipi tools]# git clone https://github.com/shiyanlou/SQL3

  接下来导入脚本:

mysql> source /tools/SQL3/MySQL-03-01.sqlQuery OK, 1 row affected (0.00 sec)Database changedQuery OK, 0 rows affected (0.05 sec)Query OK, 0 rows affected (0.05 sec)Query OK, 0 rows affected (0.06 sec)

  导入检查:

mysql> use mysql_shiyanDatabase changedmysql> show tables;+------------------------+| Tables_in_mysql_shiyan |+------------------------+| department             || employee               || project                |+------------------------+3 rows in set (0.00 sec)

 3.2 主键

primary key用于约束表中的一行,作为这行的唯一标识,在一张表中通过主键可以准确定位一行,主键不能重复不可为空。

  创建表时约束列为主键:

mysql> create table t1 (id int(4)primary key,name char(20));

  为以创建的没有约束的表添加主键约束

mysql> alter table t1 add primary key (id);

  删除主键约束

mysql> alter table t1 drop primary key;

  在数据表已存在的情况下,且无主键,添加新的字段作为主键,并将该字段移到表格的第一列

mysql>alter table t1 add column iphone int(12) not null after id;这是在id列后添加iPhone列mysql> alter table t1 add column addr char(20) not null  first;这是在添加addr列,并设置为首列然后设置再用设置主键命令:
mysql> alter table t1 add primary key (id);
 

 

  也可以这样定义主键:

mysql> alter table t1 add constraint my_key primary key (id);以后my_key就是主键id的索引

 3.3 默认约束

  意思是当有default约束的列,插入数据为空时,将使用默认值

  在MySQL-03-01.sql中,这段代码包含了默认约束的设置:

people_num INT(10) DEFAULT '10',                   //people_num默认值为10

 

 3.4 唯一性约束 UNIQUE

CREATE TABLE employee(  id      INT(10) PRIMARY KEY,  name    CHAR(20),  age     INT(10),  salary  INT(10) NOT NULL,  phone   INT(12) NOT NULL,  in_dpt  CHAR(20) NOT NULL,  UNIQUE  (phone),                      //如果插入的值有重复则会报唯一性约束的错误  CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name)          //外键设置。意思是emp_fk是自定义的外键名,in_dpt为外键,参考列为department的det_name列 );

 

3.5 外键约束 ROREIGN KEY

  能确保数据完整性,也可以表示表之间的关系。a()表 见3.4代码

      例如有两个表  ,把b的外键属性去掉对编程也没影响,A中的b要么为空,要么是B中的值

        A(a,b)   :a为主键,b为外键(来自于B.b)   
        B(b,c,d)   :b为主键    

mysql> insert into employee (id,name,salary,phone,in_dpt) value (01,'ipi',1000,0211111,'dpt1');ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`mysql_shiyan`.`employee`, CONSTRAINT `emp_fk` FOREIGN KEY (`in_dpt`) REFERENCES `department` (`dpt_name`) 报错,无法添加或更新子行:外键约束失败 是因为department表中没有dpt1

 

3.6 非空约束

  如3.4代码所示,not null 为非空约束的写法,默认不能为null。在MySQL中违反非空约束不会有报错,但会有警告。

salary  INT(10) NOT NULL,  phone   INT(12) NOT NULL,

   

 

在完成之上的MySQL基础用法后,请完成以下题目:

答案:

新建一个文件:test.sqlCREATE DATABASE gradesystem;USE gradesystem; CREATE TABLE student(sid int(10) AUTO_INCREMENT PRIMARY KEY,sname char(20),gender ENUM('male','female')); CREATE TABLE course(cid int(10) AUTO_INCREMENT PRIMARY KEY,cname char(20)); CREATE TABLE mark(mid int(10) AUTO_INCREMENT PRIMARY KEY,sid int(10),cid int(10),score int(10),FOREIGN KEY(sid) REFERENCES student(sid),FOREIGN KEY(cid) REFERENCES course(cid)); insert into student(sname,gender) values('Tom','male'),('Jack','male'),('Rose','female');insert into course(cname) values('math'),('physics'),('chemistry');insert into mark(sid,cid,score) values(1,1,80),(2,1,85),(3,1,90),(1,2,60),(2,2,90),(3,2,75),(1,3,95),(2,3,75),(3,3,85);输入如下命令:mysql -u root < test.sql

 


 

4.   select语句详解

  现在我们来下载新的实验代码:git clone https://github.com/shiyanlou/SQL4(请先删除上一节我们创建的数据库,drop database mysql_shiyan)

  mysql登录,在sql执行行依次输入source path/MySQL-04-01.sql 和MySQL-04-02.sql

mysql> source MySQL-04-01.sql;mysql> source MySQL-04-02.sql;

 

基本的select语句

  select * from table_name;    查询表中所有内容

  select name,age from table_name;    只查询表中指定的name、age列内容

  where限制:

  select 要查询的列名 from 表名字 where 限制条件;         精确查询:比如说where 列名=‘ xxx ’

  SELECT name,age FROM employee WHERE age>25;      数字约束条件查询

mysql> SELECT name,age FROM employee WHERE age>25;+------+------+| name | age  |+------+------+| Tom  |   26 || Jim  |   35 || Alex |   26 || Ken  |   27 || Joe  |   31 |+------+------+5 rows in set (0.00 sec)

 

4.1 “and” 与“or

  从单词表面意思你就可以理解它的意义,where后可以不止一条限制,可以用“and”或“or”来连接;

#筛选出 age 小于 25,或 age 大于 30SELECT name,age FROM employee WHERE age<25 OR age>30; #筛选出 age 大于 25,且 age 小于 30SELECT name,age FROM employee WHERE age>25 AND age<30;

  如果需要包含25和30就用between

SELECT name,age FROM employee WHERE age BETWEEN 25 AND 30 ;

 

 4.2 "IN"和"NOT IN"

  如字面意思,用于筛选“在”或“不在”某个范围内的结果,比如说我们要查询在dpt3或dpt4的人:

SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt IN ('dpt3','dpt4'); 查询不在dpt3和dpt4中的人只需要把IN换为NOT IN即可。

 

4.3  通配符

  关键字 LIKE 在SQL语句中和通配符一起使用,通配符代表未知字符。SQL中的通配符是 _ % 。其中 _ 代表一个未指定字符,% 代表不定个未指定字符。

   比如,要只记得电话号码前四位数为1101,而后两位忘记了,则可以用两个 _ 通配符代替:

mysql> select * from employee where phone like '1101__';+----+------+------+--------+--------+--------+| id | name | age  | salary | phone  | in_dpt |+----+------+------+--------+--------+--------+|  9 | Joe  |   31 |   3600 | 110129 | dpt2   || 10 | Mike |   23 |   3400 | 110110 | dpt4   |+----+------+------+--------+--------+--------+2 rows in set (0.01 sec)

 

 4.4  对结果进行排序

  order by按某一列结果的默认升序排列,使用asc和desc指定升序或降序排列

  比如,我们按salary降序排列,SQL语句为:

mysql> select * from employee order by salary desc;+----+------+------+--------+--------+--------+| id | name | age  | salary | phone  | in_dpt |+----+------+------+--------+--------+--------+| 11 | Jobs | NULL |   3600 |  19283 | dpt2   ||  9 | Joe  |   31 |   3600 | 110129 | dpt2   ||  7 | Ken  |   27 |   3500 | 654321 | dpt1   ||  8 | Rick |   24 |   3500 | 987654 | dpt3   |

   BINARY:由于字符串类型的数据对大小写并不敏感。这意味着,对于大小写不同其他都一样的列,排序后的结果都不会更改。这种情况下,可以使用BINARY强制执行区分大小写的排序功能,如:ORDER BY BINARY col_name。

4.5 SQL内置函数和计算

  

  其中 COUNT 函数可用于任何数据类型(因为它只是计数),而 SUM 、AVG 函数都只能对数字类数据类型做计算,MAX 和 MIN 可用于数值、字符串或是日期时间数据类型。

  具体举例,比如计算出salary的最大、最小值,用这样的一条语句:

mysql> select  max(salary) as max_salary,min(salary) from employee;              //as 可以对值重命名,省略不写as只写重名也行+------------+-------------+| max_salary | min(salary) |+------------+-------------+|       3600 |        2500 |+------------+-------------+1 row in set (0.00 sec)

 

 4.6 子查询

  上面讨论的 SELECT 语句都仅涉及一个表中的数据,然而有时必须处理多个表才能获得所需的信息。

  例如:想要知道名为 "Tom" 的员工所在部门做了几个工程。员工信息储存在 employee 表中,但工程信息储存在project 表中。

mysql> select of_dpt,count(proj_name) count_project from project        where of_dpt in (select in_dpt from employee where name='Tom');              //括号内的子查询查到Tom所在的部门,用于查询的where条件+--------+---------------+| of_dpt | count_project |+--------+---------------+| dpt4   |             2 |+--------+---------------+1 row in set (0.05 sec)

 

 4.7 连接查询

  在处理多个表时,子查询只有在结果来自一个表时才有用。但如果需要显示两个表或多个表中的数据,这时就必须使用连接 (join) 操作。

  连接的基本思想是把两个或多个表当作一个新的表来操作,如下:

mysql> select id,name,people_num from employee,department where employee.in_dpt = department.dpt_name order by id; //通过两个表中相同属性的列起关联,查询到了来自两个表的数据+----+------+------------+| id | name | people_num |+----+------+------------+|  1 | Tom  |         15 ||  2 | Jack |         12 ||  3 | Rose |         10 ||  4 | Jim  |         11 ||  5 | Mary |         12 ||  6 | Alex |         11 ||  7 | Ken  |         11 ||  8 | Rick |         10 ||  9 | Joe  |         12 || 10 | Mike |         15 || 11 | Jobs |         12 || 12 | Tony |         10 |+----+------+------------+12 rows in set (0.00 sec)

  另一个连接语句格式是使用 JOIN ON 语法,刚才的语句等同于:

mysql> SELECT id,name,people_num FROM employee JOIN department ON     employee.in_dpt = department.dpt_name ORDER BY id;     //join on 与where 语句的连接执行结果相同

 4.8正则(REGEXP)查询 

  格式如下:regexp 后可以跟正则表达式

mysql> SELECT * FROM pet WHERE name REGEXP '^b'; 如果你想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写‘b’ mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b';

 本节练习:使用连接查询的方式,查询出各员工所在部门的人数与工程数,工程数命名为 count_project。(连接3个表,并使用COUNT内置函数)

mysql> SELECT name, in_dpt, people_num, COUNT(proj_num) AS count_project     FROM employee,department,project     where employee.in_dpt=department.dpt_name and employee.in_dpt=project.of_dpt     GROUP BY name;或

  mysql> SELECT name, in_dpt, people_num, COUNT(proj_num) AS count_project FROM employee

      JOIN department ON employee.in_dpt=department.dpt_name
      JOIN project ON employee.in_dpt=project.of_dpt
      GROUP BY name;

  4.9 其他查询

  limit 按限制输出查询

  例子:查询某列的最大值所在的行

# 显示price这一列最大值对应的行,子查询表示最大的col3的值,利用where查到相关数据mysql> SELECT col1, col2, col3    -> FROM   t1    -> WHERE  col3=(SELECT MAX(col3) FROM t1); #如果运用limit就可以省去子查询mysql> SELECT  col1, col2, col3    -> FROM t1    -> ORDER BY col3 DESC    -> LIMIT 1;

  


 

5.数据库管理

 5.1 索引

  索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容。可以大大加快查询速度。

  建立索引:

  mysql> ALTER TABLE 表名字 ADD INDEX 索引名 (列名);  或:  CREATE INDEX 索引名 ON 表名字 (列名); 查看创建的索引用: mysql> show index from table_name;

 

5.2 视图

  从一个或多个表中导出来的表,是一种虚拟存在的表。

  注意理解视图是虚拟的表:

    >数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中;

    >使用视图查询数据时,数据库系统会从原来的表中取出对应的数据;
    >视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变;
    >在使用视图的时候,可以把它当作一张表

  创建一个视图:

CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;
mysql> select * from employee;+----+------+------+--------+--------+--------+| id | name | age  | salary | phone  | in_dpt |+----+------+------+--------+--------+--------+|  1 | Tom  |   26 |   2500 | 119119 | dpt4   ||  2 | Jack |   24 |   2500 | 120120 | dpt2   ||  3 | Rose |   22 |   2800 | 114114 | dpt3   ||  4 | Jim  |   35 |   3000 | 100861 | dpt1   ||  5 | Mary |   21 |   3000 | 100101 | dpt2   ||  6 | Alex |   26 |   3000 | 123456 | dpt1   ||  7 | Ken  |   27 |   3500 | 654321 | dpt1   ||  8 | Rick |   24 |   3500 | 987654 | dpt3   ||  9 | Joe  |   31 |   3600 | 110129 | dpt2   || 10 | Mike |   23 |   3400 | 110110 | dpt4   || 11 | Jobs | NULL |   3600 |  19283 | dpt2   || 12 | Tony | NULL |   3400 | 102938 | dpt3   |+----+------+------+--------+--------+--------+12 rows in set (0.00 sec)mysql> create view employ (col1,col2) as select id,name from employee;Query OK, 0 rows affected (0.06 sec)mysql> select * from employ;+------+------+| col1 | col2 |+------+------+|    1 | Tom  ||    2 | Jack ||    3 | Rose ||    4 | Jim  ||    5 | Mary ||    6 | Alex ||    7 | Ken  ||    8 | Rick ||    9 | Joe  ||   10 | Mike ||   11 | Jobs ||   12 | Tony |+------+------+12 rows in set (0.03 sec)
执行示例

 

5.3 数据管理

  备份

  mysql备份用mysqldump命令,具体用法如下

#mysqldump -uroot -p123456 testdb > /tmp/test.sql

  恢复

#mysql -uroot -p123456 testdb < /tmp/test.sql

 

  导出数据:

    是把数据库某个表中的数据保存到一个文件之中。导出语句基本格式为:

SELECT 列1,列2 INTO OUTFILE '文件路径和文件名' FROM 表名字;

 

  导入数据:

    和导出相反首先将数据文件导出保存到文件

    然后在MySQL命令行导入:

MySQL>LOAD DATA INFILE '文件路径和文件名' INTO TABLE 表名字;
  • 如果指定local关键词,则表明从客户主机读文件。如果local没指定,文件必须位于服务器上。使用load data local infile而不是load data infile

 

转载于:https://www.cnblogs.com/-abm/p/8051572.html

你可能感兴趣的文章
[转]VC预处理指令与宏定义的妙用
查看>>
MySql操作
查看>>
python 解析 XML文件
查看>>
MySQL 文件导入出错
查看>>
java相关
查看>>
由一个异常开始思考springmvc参数解析
查看>>
向上扩展型SSD 将可满足向外扩展需求
查看>>
虚机不能启动的特例思考
查看>>
SQL Server编程系列(1):SMO介绍
查看>>
在VMware网络测试“专用VLAN”功能
查看>>
使用Formik轻松开发更高质量的React表单(三)<Formik />解析
查看>>
也问腾讯:你把用户放在什么位置?
查看>>
CSS Sprites 样式生成工具(bg2css)
查看>>
[转]如何重构代码--重构计划
查看>>
类中如何对list泛型做访问器??
查看>>
C++解析XML--使用CMarkup类解析XML
查看>>
P2P应用层组播
查看>>
Sharepoint学习笔记—修改SharePoint的Timeouts (Execution Timeout)
查看>>
CSS引入的方式有哪些? link和@import的区别?
查看>>
Redis 介绍2——常见基本类型
查看>>