mysql基本操作-1

  1. 云栖社区>
  2. 博客>
  3. 正文

mysql基本操作-1

技术小胖子 2017-11-07 17:31:00 浏览484
展开阅读全文

               mysql基本操作-1



实验环境:使用64位的RHEL 6.4操作系统,MySQL数据库的版本是5.6.15。


一、构建mysql服务器:


1.准备工作

1)1)卸载系统自带的mysql-server、mysql软件包(如果有的话)


[root@dbsvr1 ~]# yum -y remove mysql-server mysql //移除


2)清理/etc/my.cnf配置文件

此配置文件由RHEL自带的mysql-libs库提供:

1.[root@dbsvr1 ~]# rpm -qf /etc/my.cnf

2.mysql-libs-5.1.66-2.el6_3.x86_64

大量的系统软件包都需要用到mysql-libs库,因此不建议直接卸载此软件包。最好是安装新的MySQL数据库软件时,采用 -U 升级的方式来进行替换。

配置文件/etc/my.cnf若不需要使用,可以直接删除。或者保险起见,也可以将其改名备份:


[root@dbsvr1 ~]# mv /etc/my.cnf /etc/my.cnf.old


2.安装MySQL-server、MySQL-client软件包

#rpm -Uvh MySQL-*.rpm//采用升级的方式安装,可替换冲突文件


MySQL-shared-5.6.15-1.el6.x86_64.rpm             //共享库

MySQL-shared-compat-5.6.15-1.el6.x86_64.rpm     //兼容包

MySQL-server-5.6.15-1.el6.x86_64.rpm             //服务端程序

MySQL-client-5.6.15-1.el6.x86_64.rpm             //客户端程序

MySQL-devel-5.6.15-1.el6.x86_64.rpm             //库和头文件

MySQL-embedded-5.6.15-1.el6.x86_64.rpm         //嵌入式版本

MySQL-test-5.6.15-1.el6.x86_64.rpm             //测试包


3.确认安装后的服务脚本、服务状态

    查看服务脚本:

[root@dbsvr1 pub]# ls -lh /etc/init.d/mysql

-rwxr-xr-x. 1 root root 11K 11月 18 02:28 /etc/init.d/mysql

    查看服务状态(默认未运行):

[root@dbsvr1 pub]# service mysql status

MySQL is not running [失败]

    mysql服务的自启状态为on:

[root@dbsvr1 ~]# chkconfig --list mysql

mysql 0:off 1:off 2:on 3:on 4:on 5:on 6:off


4启动MySQL服务器程序,确认状态


1)启动MySQL服务程序

    启动服务并查看状态:

[root@dbsvr1 pub]# service mysql start

Starting MySQL...                                     [确定]

[root@dbsvr1 pub]# service mysql status

MySQL running (31724)                                [确定]


 服务器进程为mysqld,监听的默认端口为TCP 3306:


[root@dbsvr1 pub]# netstat -anpt | grep mysql


tcp 0 0 :::3306 :::* LISTEN 31724/mysqld

2)查看MySQL服务器进程、运行用户


 1.提供连接服务的进程为mysqld,由其父进程mysqld_safe启动。

[root@dbsvr1 pub]# ps -elf | grep mysqld


4 S root 31619 1 0 80 0 - 2834 wait 15:14 pts/0 00:00:00 /bin/sh        /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-           file=/var/lib/mysql/dbsvr1.tarena.com.pid

4 S mysql 31724 31619 0 80 0 - 252496 poll_s 15:14 pts/0 00:00:01 /usr/sbin/mysqld          --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --        user=mysql --log-error=/var/lib/mysql/dbsvr1.tarena.com.err --pid-        file=/var/lib/mysql/dbsvr1.tarena.com.pid


  2.mysqld的运行用户为mysql:


[root@dbsvr1 pub]# id mysql

uid=496(mysql) gid=493(mysql) 组=493(mysql)


  3.数据库的默认存放位置为 /var/lib/mysql:


[root@dbsvr1 pub]# ls /var/lib/mysql/


auto.cnf ibdata1 mysql RPM_UPGRADE_HISTORY

dbsvr1.tarena.com.err ib_logfile0 mysql.sock RPM_UPGRADE_MARKER-LAST

dbsvr1.tarena.com.pid ib_logfile1 performance_schema test

  4.拷贝样本配置文件,并配置选项已排除TIMESTAMP警告


    复制MySQL-server软件包提供的配置样例,建立/etc/my.cnf:

[root@dbsvr1 ~]# cp /usr/share/mysql/my-default.cnf /etc/my.cnf

//默认有/etc/my.cf这个文件不需要复制


3)重新启动mysql服务,使设置生效

#service mysql restart


#service mysql status

#netstat -anplut |grep mysql

#ps aux |grep mysql


二、mysql基本管理



1.修改数据库用户root的密码


1)查看随机生成的root管理密码

[root@dbsvr1 ~]# cat /root/.mysql_secret

# The random password set for the root user at Tue Jan 7 14:52:44 2014 (local time): 6ptWNWwx                     //密码为6ptWNWwx

2)使用客户端命令mysql连接到MySQL服务器


  提示验证时,填入前一步获得的随机密码,验证成功后即可进入“mysql> ”环境:

[root@dbsvr1 ~]# mysql -u root -p

.Enter password:                         //首次连接时,输入安装时生成的随机密码

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.6.15  

mysql>                                     //登录成功后,进入SQL操作环境


3)执行SET PASSWORD命令修改密码


  可参考下列指令:

mysql>set password for root@localhost=password("123456");

Query OK, 0 rows affected (0.13 sec)


//上述操作的结果是——更改数据库用户root从本机访问时的密码,设为123456


  退出“mysql> ”环境,重新登录验证,必须采用新的密码才能登入:

mysql> exit                                 //退出 mysql> 环境

.Bye

[root@dbsvr1 ~]# mysql -u root -p             //重新登录

Enter password:                             //输入新设置的密码

Welcome to the MySQL monitor. Commands end with ; or \g.

mysql>


  默认情况下,msyql命令会连接本机的MySQL服务。但在需要的时候,可以通过 -h 选项指定远程主机;如果                                            端口不是3306,还可以通过大写的 -P 选项指定:


[root@dbsvr1 ~]# mysql -u root -p -h 127.0.0.1 -P 3306


2、数据库操作



mysql> select user();   // 查看使用者


+----------------+

| user()         |

+----------------+

| root@localhost |

+----------------+

1 row in set (0.00 sec)


mysql> select database();      // 查看数据库


+------------+

| database() |

+------------+

| NULL       |

+------------+

1 row in set (0.00 sec)


mysql> show databases;

// 显示已有的库

+--------------------+

| Database           |

+--------------------+

| information_schema |        虚拟库:此库不占用系统物理磁盘空间,

| mysql              |   →   授权库

| test               |   →   公共库

+--------------------+             以上3个是启动服务时系统自动生成的;数据库会议文件夹的形似存放在数据库目录下.一个库可以有多个表,表以文件的形似存放在对应的数据库目录下



mysql> create database opp;

//创建库opp

Query OK, 1 row affected (0.02 sec)


mysql> show databases;      //查看创建库结果


+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| opp                |

| test               |

+--------------------+

4 rows in set (0.00 sec)


mysql> drop database opp;// 删除库


Query OK, 0 rows affected (0.00 sec)


mysql> use mysql            //切换切换库


Database changed


3.表的相关操作


mysql> show tables;  //查看表  

   +---------------------------+

| Tables_in_mysql           |

+---------------------------+

| columns_priv              |

| db                        |

| func                      |

| help_category             |

| help_keyword              |

| help_relation             |

| help_topic                |

| host                      |

| proc                      |

| procs_priv                |

| tables_priv               |

| time_zone                 |

| time_zone_leap_second     |

| time_zone_name            |

| time_zone_transition      |

| time_zone_transition_type |

| user                      |

+---------------------------+

17 rows in set (0.00 sec)




mysql> create table opp(//建立表:


   -> sex  char(4) not null,

   -> name char(4) not null           最后一行没有符号

   -> );


Query OK, 0 rows affected (0.01 sec)


mysql> show tables;//查看刚刚建立的表

+---------------+

| Tables_in_opp |

+---------------+

| opp           |

+---------------+

1 row in set (0.00 sec)  



mysql> desc opp;   //查看指定表的字段结构(默认表格形式显示)


+-------+---------+------+-----+---------+-------+

| Field | Type    | Null | Key (索引)| Default(默认值) | Extra(额外条件) |

+-------+---------+------+-----+---------+-------+

| sex   | char(4) | NO   |     | NULL    |       |

| name  | char(4) | NO   |     | NULL    |       |

+-------+---------+------+-----+---------+-------+

2 rows in set (0.01 sec)


  *当前库为mysql,查看columns_priv表的结构,以列表形式展现:


1.mysql> DESCRIBE columns_priv\G             //末尾不用分号

2.*************************** 1. row ***************************

3.Field: Host

4.Type: char(60)

5.Null: NO

6.Key: PRI

7.Default:

8.Extra:

9.*************************** 2. row ***************************

10.Field: Db

11.Type: char(64)

12.Null: NO

13.Key: PRI

14.Default:

15.Extra:



删除当前库中的pwlist表:


mysql> DROP TABLE pwlist; // 删除指定的表

Query OK, 0 rows affected (0.01 sec)

 确认删除结果:

mysql> SHOW TABLES;

Empty set (0.00 sec)



mysql> desc yu\c  //终止语句加 \c ;


mysql> select * from yu;       //查看表记录,*表示所有;

Empty set (0.00 sec)


mysql> select name  from yu;//查看单个字段name

Empty set (0.00 sec)



mysql> select name,sex from stu_info; //指定查看字段;

+------+------+

| name | sex  |

+------+------+

| tom  | boy  |

| tom1 | boy  |

+------+------+



mysql> insert into game(name,num) values('w1',100 );//表中插入数据

Query OK, 1 row affected (0.00 sec)


mysql> insert into game( name,num) values('w3',100 ),('w4',-10);   //一次插入多个数据,一个括号代表一组数据;

Query OK, 2 rows affected (0.00 sec)

Records: 2  Duplicates: 0  Warnings: 0


mysql> insert into game values('w6',100 ),('w7',-10);//没写列表序时,按表的默认顺序写数据;

Query OK, 2 rows affected (0.00 sec)

Records: 2  Duplicates: 0  Warnings: 0


4.MySql基本信息类型


数值型、字符型、枚举型、日期时间型、

数值型:→整型:tinyint、smallint、mediumint、int、bigint、

→浮点型:float、double、decimal、

***一个字节8位,7个1为255,2的16次方为65535

***Tinyinit默认有符号

***建表指定无符号:unsigned

***Creat tab tabname(name char(9),age  tinyint unsigned)

***工作中用的最多的数值类型是int


*** Float (M,N)

*** M 表示数字的总位数 符号位不占用M的位数

*** N:小数位的总位数


字符型:→char:定长

→varchar :边长

****字符类型宽度的限制和数值类型的宽度限制不一样;

****数值类型的宽度是显示宽度,当输入的位数小于宽度时空格补足;

****字符类型的宽度是限制宽度;


枚举类型:

*****enum:给定集合中选择单个值 , enum的赋值可以用编号 ,比如sex enum("boy","girl");赋值时可以用1 代替boy,用2代替girl,但是set的赋值不可以这么操作

***** set:从给定集合中选择一个或者多个值


约束条件:

******not null

******key 索引类型

****** default 默认值,缺省为null

mysql> insert into stu_info (name,loves)values('io','book,music'),('io2','1,music');

set 的类型不可用数字指代项值,会出警告!

Query OK, 2 rows affected, 1 warning (0.00 sec)

Records: 2  Duplicates: 0  Warnings: 1


mysql> select *from stu_info;

+------+------+------------+

| name | sex  | loves      |

+------+------+------------+

| tom  | boy  | NULL       |

| tom1 | boy  | NULL       |

| io   | NULL | book,music |

| io2  | NULL | music      |

+------+------+------------+







5.各种时间函数的使用


1)使用now()查看当前的日期和时间

1.mysql> SELECT now();

2.+---------------------+

3.| now() |

4.+---------------------+

5.| 2014-01-07 18:33:31 |

6.+---------------------+

7.1 row in set (0.05 sec)

2)使用sysdate()查看系统日期和时间

1.mysql> SELECT sysdate();

2.+---------------------+

3.| sysdate() |

4.+---------------------+

5.| 2014-01-07 18:34:12 |

6.+---------------------+

7.1 row in set (0.00 sec)

3)使用curdate()获得当前的日期,不含时间

1.mysql> SELECT curdate();

2.+------------+

3.| curdate() |

4.+------------+

5.| 2014-01-07 |

6.+------------+

7.1 row in set (0.00 sec)

4)使用curtime()获得当前的时间,不含日期

1.mysql> SELECT curtime();

2.+-----------+

3.| curtime() |

4.+-----------+

5.| 18:35:26 |

6.+-----------+

7.1 row in set (0.00 sec)

5)分别获取当前日期时间中的年份、月份、日

1.mysql> SELECT year(now()),month(now()),day(now());

2.+-------------+--------------+------------+

3.| year(now()) | month(now()) | day(now()) |

4.+-------------+--------------+------------+

5.| 2014 | 1 | 7 |

6.+-------------+--------------+------------+

7.1 row in set (0.00 sec)

6)获取系统日期时间中的月份、日

1.mysql> SELECT month(sysdate()),day(sysdate());

2.+------------------+----------------+

3.| month(sysdate()) | day(sysdate()) |

4.+------------------+----------------+

5.| 1 | 7 |

6.+------------------+----------------+

7.1 row in set (0.00 sec)

7)获取系统日期时间中的时刻

1.mysql> SELECT time(sysdate());

2.+-----------------+

3.| time(sysdate()) |

4.+-----------------+

5.| 18:44:01 |

6.+-----------------+

7.1 row in set (0.00 sec)





实验总结


1、刚安装完mysql后,关于MySQL数据库的管理员账号root,其密码也不再是空,而是安装时随机生成一个,这    种处理方式一定程度上增强了MySQl服务器的安全性。随机生成的密码字串可以从保存到/root/目录下   的.mysql_secret文件中找到:


2、DESCRIBE可缩写为DESC;另外,当引用非当前库中的表时,可以用“库名.表名”的形式。比如,切换为mysql库再执行“DESCRIBE columns_priv;”,与以下操作的效果是相同的:

mysql> DESC mysql.columns_priv;


3、主流数据库服务软件有哪些?开源且跨平台的数据库软件有哪些?


主流数据库服务软件有:


甲骨文公司  Oracle

IBM DB2

微软        SQL Server

美国Sybase公司  Sybase

加州大学伯克利分校计算机系开发的 PostgreSQL


开源且跨平台的数据库软件有:


MySQL、PostgreSQL:开源且跨平台

Oracle、DB2: 跨平台不开源

SQL Server:  不跨平台不开源

Sybase:跨平台不开源


4、建库的规则:

1)数据库名具有唯一性

2)数据库名区分大小写 (大小写可以同时存在)

3)可以使用 数字字母 下划线

4)数据库名称不能纯数字,可以用数字开头

5)不能使用特殊符号(*,!...)

6)不能使用关键字,例如create


5、




      本文转自Jx战壕  51CTO博客,原文链接:http://blog.51cto.com/xujpxm/1377008,如需转载请自行联系原作者







网友评论

登录后评论
0/500
评论
技术小胖子
+ 关注