[mysql实战]mysql基本操作上

来源:IT165收集  发布日期:2015-09-01 22:18:44

mysql的基本操作,包括表复制,索引,视图,内置函数,预处理语句,事务处理,存储过程,触发器,重排auto_increment.

首先说明,所有操作是在centOS7 64位的linux操作系统下,mysql用的是5.6版本的.并且说明一下,若有什么不记得的命令,用【? contents;】就可以用帮助,查看所有的命令目录了。

 

表复制

 

先用【mysql -u root -p】,输入密码,登录mysql。先新建数据库,testmy,然后建立表t1,在t1表中插入数据,然后t2表用like语句拷贝t1的表结构,用insert_select插入t1中的数据。具体的步骤,就是如下

先新建库testmy,

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

然后切换到testmy下,

mysql> use testmy;
Database changed

然后新建t1表,查看一下t1表的信息,

mysql> create table t1(id int unsigned not null auto_increment primary key,name varchar(20));
Query OK, 0 rows affected (0.09 sec)

用show语句查看信息,可以知道数据库引擎是innoDb,字符集是utf8.

mysql> show create table t1;
+-------+---------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                      |
+-------+------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+---------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

或者用desc查看t1的表结构.

mysql> desc t1;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20)      | YES  |     | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)

若在最后加上G,就变成列展示。

mysql> desc t1 G;
*************************** 1. row ***************************
  Field: id
   Type: int(10) unsigned
   Null: NO
    Key: PRI
Default: NULL
  Extra: auto_increment
*************************** 2. row ***************************
  Field: name
   Type: varchar(20)
   Null: YES
    Key: 
Default: NULL
  Extra: 
2 rows in set (0.00 sec)

ERROR: 
No query specified

然后插入数据,多个insert一起插入。

mysql> insert into t1(name) values("user1"),("user2"),("user3"),("user4");
Query OK, 4 rows affected (0.04 sec)
Records: 4  Duplicates: 0  Warnings: 0
mysql> select * from t1;
+----+-------+
| id | name  |
+----+-------+
|  1 | user1 |
|  2 | user2 |
|  3 | user3 |
|  4 | user4 |
+----+-------+
4 rows in set (0.00 sec)

接着就是新建t2表了,拷贝t1的表结构,

mysql> create table t2 like t1;
Query OK, 0 rows affected (0.03 sec)

用insert_select 插入t1中的数据。

mysql> insert into t2 select * from t1;
Query OK, 4 rows affected, 1 warning (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 1

mysql> select * from t2;
+----+-------+
| id | name  |
+----+-------+
|  1 | user1 |
|  2 | user2 |
|  3 | user3 |
|  4 | user4 |
+----+-------+
4 rows in set (0.00 sec)

这样t2表就成功复制了。

还可以重命名,将t2表变成t3表。

mysql> show tables;
+------------------+
| Tables_in_testmy |
+------------------+
| t1               |
| t2               |
+------------------+
2 rows in set (0.00 sec)

mysql> rename table t2 to t3;
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+------------------+
| Tables_in_testmy |
+------------------+
| t1               |
| t3               |
+------------------+
2 rows in set (0.00 sec)


索引

然后介绍索引,索引就不一一展示效果了。尽管对于索引的增删改查都有各自的语句,但是还有一个alter table作为最普遍的用法,增删改查都可用。

现在对于t1表来说,是有一个主键的索引。而索引包括分为唯一索引和非唯一索引,其中唯一索引,又包括主键索引和其他的唯一索引。

对于索引的一系列操作,从上到下,依次列出.其中1和6都是添加索引,一种是create index...,一种是alter table ...add...。而show index是查看,删除是drop index...或者alter table...drop...。其中删除主键索引比较特殊,由于主键索引设置了自增,而自增必须在主键索引上,所以要删除主键索引,必须先删除自增.而alter table做为修改表的通用操作,alter table...modify...,又可以对表结构进行修改.

    1.创建普通索引,"index_name"
mysql> create index index_name on t1(name);  
    2.查询索引在t1表上的索引,有两个索引
mysql> show index from t1;                  
    3.删除t1的普通索引"index_name"索引                    
mysql> drop index index_name on t1;
    4.删除主键索引(先去掉自增,再去掉索引),下面用alter table的方式。
mysql> alter table t1 modify id int unsigned not null;
    5.删除主键索引
mysql> alter table t1 drop primary key;
    6.添加主键索引
mysql> alter table t1 add primary key(id);
    7.添加自增
mysql> alter table t1 modify id int unsigned not null auto_increment;

其中,第2步的效果,是这样的.可以看出t1表中,确实有2个索引,

mysql> show index from t1;
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| t1 | 0 | PRIMARY | 1 | id | A | 4 | NULL | NULL | | BTREE | | |
| t1 | 1 | index_name | 1 | name | A | 4 | NULL | NULL | YES | BTREE | | |
+-------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)

视图

接下来介绍视图的操作.首先用帮助,看看view有什么操作,? view,发现有alter view,修改视图;create view 创建视图,以及drop view 删除视图,而查询视图,和表是一样的,show tables;就能查看所有的表和视图,而select * from 视图名,也可以查询视图中的内容.

mysql> ? view
Many help items for your request exist.
To make a more specific request, please type 'help <item>',
where <item> is one of the following
topics:
   ALTER VIEW
   CREATE VIEW
   DROP VIEW

然后实际操作一下

1.创建视图,使用create view...as...

mysql> create view v_t1 as select * from t1 where id>1 and id< 4; 

2.查看视图

mysql> select * from v_t1; 

3.修改视图

mysql> alter view v_t1 as select * from t1 where id>2 and id <4; 

4.修改视图

mysql> drop view v_t1;  

内置函数

内置函数有非常多,用?contents,会列出很多目录,然后选择其中的Functions,用命令? Functions,列出各种函数,包括字符串函数,数学函数,日期和时间函数,控制流函数,信息函数,逻辑函数等等.其中,字符串函数? String Functions包括,concat,连接字符串;lcase和ucase(),变小写和大写;rtrim()和ltrim(),去左边/右边空格,两个一起用就是去左右空格;repeat,就是重复字符串指定遍数;replace(),替换;substring(),获取子字符串;space(),生成指定的空格数.

数学函数? Numeric Functions; 包括bin,变二进制,ceiling和floor,向上取整和向下取值,max,min,取最大值/最小值,sqrt,开平方,rand,0~1的随机数.

而日期和时间函数? Date and Time Functions;包括curdate(),当前日期,curtime(),当前时间,now()当前日期和时间,unix_timestamp()将日期变为时间戳,from_unixtime,将时间戳变为日期,week一年中第几周,year年份,datediff日期差.

就只演示字符串,其他的都一样,会看帮助文档就行.

其中字符串函数的演示,用到concat,连接两个字符串,以及space(1),生成一个空格.

mysql> select concat("hello",concat(space(1),"world"));
+------------------------------------------+
| concat("hello",concat(space(1),"world")) |
+------------------------------------------+
| hello world                              |
+------------------------------------------+
1 row in set (0.00 sec)

而在表中的使用,可以将表t1中的两个字段id和name的值连接起来.

mysql> select concat(id,concat(":",name)) from t1;
+-----------------------------+
| concat(id,concat(":",name)) |
+-----------------------------+
| 1:user1                     |
| 2:user2                     |
| 3:user3                     |
| 4:user4                     |
+-----------------------------+
4 rows in set (0.00 sec)

若不会用,还是查看帮助,如repeat function,就是重复字符串指定遍数.

mysql> ? repeat function;
Name: 'REPEAT FUNCTION'
Description:
Syntax:
REPEAT(str,count)

Returns a string consisting of the string str repeated count times. If
count is less than 1, returns an empty string. Returns NULL if str or
count are NULL.

URL: http://dev.mysql.com/doc/refman/5.6/en/string-functions.html

Examples:
mysql> SELECT REPEAT('MySQL', 3);
        -> 'MySQLMySQLMySQL

重排auto_increment
剩下还有预处理语句,事务处理,存储过程,触发器和重排auto_increment,其中重排auto_increment比较简单,所以就提前介绍了.

所谓的重排自增的值,就是2种方式,一.另外设置一个值,这个值就作为初始值,从这个值开始自增;二,清空表,然后初始值变成最开始初始值0.

一.使用alter table ... auto_increment,设置为20,则添加从20开始了.

mysql> alter table t1 auto_increment =20;
mysql> insert into t1(name) values("user20");
mysql> select * from t1;
+----+--------+
| id | name   |
+----+--------+
|  1 | user1  |
|  2 | user2  |
|  3 | user3  |
|  4 | user4  |
| 20 | user20 |
+----+--------+
5 rows in set (0.00 sec)

二.使用truncate...,清空表.注意使用delete from t1,自增值是不会重置的.因为truncate是不仅清空内容,还释放表空间,而delete 不释放表空间.也不要用drop,drop会删了整个表的,不仅清空内容,释放表空间,连表的定义也会删掉,那数据库就没这张表了.

mysql> truncate t1;
mysql> insert into t1(name) values("user1");
mysql> select * from t1;
+----+-------+
| id | name  |
+----+-------+
|  1 | user1 |
+----+-------+
1 row in set (0.00 sec)

以上就是9个mysql基础操作中的5个,用命令行敲,让我用了很多从来没有用过的mysql的操作.下篇还有预处理语句,事务处理,存储过程,触发器.

 

Tag标签: 基本操作   实战  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规