手记

基于Linux的MySQL操作实例(软件安装,mysql基本操作,mysql数据类型,建表、插入数据操作)

基于Linux的MySQL操作实例(软件安装,mysql基本操作,mysql数据类型,建表、插入数据操作)

前言

关于MySQL的概念性的东西,就在这里不多说了,本篇以实例操作为主,主要进行的操作有:MySQL软件安装,mysql基本操作,mysql数据类型,建表、插入数据操作。
欢迎各路大神批评指教,谢谢各位。

安装软件

  • 源码安装,见脚本和源码包

  • rpm包安装(需要手动安装依赖包)

本文使用的rpm安装包都是从MySQL官网下载的。
由于个人原因GitHub暂时不能上传,我将文件放在了百度云盘,有需要的朋友请前往下载。若是不能下载,请私信我。
MySQL5.6,点击下载
http://pan.baidu.com/s/1jIr11Sq

当使用rpm包安装时,可能会出现缺乏依赖包的情况,
可以使用先安装光盘自带的mysql-server,mysql,yum会自动安装依赖包等,
然后启动服务,检查端口号,由于mysql在默认的情况下,若不加载数据库将不能启动服务,但是通过光盘自带的软件包使用yum安装时,
这些配置都会自动做好。
然后卸载(卸载时需要添加--nodeps选项,忽略依赖关系)低版本mysql软件包,并删除主配置文件

[root@mysqlBak mysql_rpm]# yum -y install mysql-server mysql[root@mysqlBak mysql_rpm]# service mysqld restart 停止 mysqld:                                              [确定]
初始化 MySQL 数据库: WARNING: The host 'mysqlBak.wolf.cn' could not be looked up with resolveip.
……
Please report any problems with the /usr/bin/mysqlbug script!
                                                           [确定]
正在启动 mysqld:                                          [确定]
[root@mysqlBak mysql_rpm]# netstat -anptu | grep mysqldtcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      2310/mysqld  
[root@stu ~]# service  mysqld stop停止 mysqld:                                             [确定]
[root@mysqlBak mysql_rpm]# rm -rf /etc/my.cnf [root@mysqlBak mysql_rpm]# ls /var/lib/mysql/ibdata1  ib_logfile0  ib_logfile1  mysql  test[root@mysqlBak mysql_rpm]# rm -rf /var/lib/mysql/*// 卸载时,注意添加忽略依赖关系选项,
[root@mysqlBak mysql_rpm]# rpm -e --nodeps mysql-server mysql[root@mysqlBak mysql_rpm]# lsMySQL-client-5.6.15-1.el6.x86_64.rpm    MySQL-shared-5.6.15-1.el6.x86_64.rpm
MySQL-devel-5.6.15-1.el6.x86_64.rpm     MySQL-shared-compat-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
MySQL-server-5.6.15-1.el6.x86_64.rpm
//推荐使用U升级安装,可以替换冲突文件
[root@mysqlBak mysql_rpm]# rpm -Uvh MySQL-*Preparing...                ########################################### [100%]
   1:MySQL-devel            ########################################### [ 14%]
   2:MySQL-client           ########################################### [ 29%]
   3:MySQL-test             ########################################### [ 43%]
   4:MySQL-embedded         ########################################### [ 57%]
   5:MySQL-shared-compat    ########################################### [ 71%]
   6:MySQL-shared           ########################################### [ 86%]
   7:MySQL-server           ########################################### [100%]///root/.mysql_secret'  生成的随机密码文件
A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in '/root/.mysql_secret'.
……

[root@mysqlBak mysql_rpm]# /etc/init.d/mysql start
Starting MySQL. SUCCESS! 
[root@mysqlBak mysql_rpm]# netstat -anptu | grep mysql
tcp        0      0 :::3306                     :::*                        LISTEN      2565/mysqld
//查看文件内容,记录随机密码
[root@mysqlBak mysql_rpm]# cat /root/.mysql_secret 
# The random password set for the root user at Mon Jan 16 11:31:07 2017 (local time): Xrf4Yrok

//使用随机密码先进行登录,然后进行修改密码等操作
[root@mysqlBak mysql_rpm]# mysql -hlocalhost -u root -pXrf4Yrok
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 5.6.15

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
mysql> show databases;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement  //需要先设置密码,然后进行其他操作
mysql> set password for root@"localhost"=password("123456");
Query OK, 0 rows affected (0.03 sec)
mysql> quit
Bye
//若没有其他配置需求可不进行该操作
[root@mysqlBak mysql_rpm]# cp /usr/share/mysql/my-default.cnf /etc/my.cnf
//可以直接制定数据库
[root@mysqlBak mysql_rpm]# mysql -u root -p123456 test
……
mysql> select database();
+------------+
| database() |
+------------+
| test       |
+------------+
1 row in set (0.00 sec)

mysql> quit
Bye
//也可以不指定该数据库
[root@mysqlBak mysql_rpm]# mysql -u root -p123456
……
mysql> select database();
+------------+
| database() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)

MySQL概述

基本信息

  • 主配置文件   /etc/my.cnf

  • 服务名  mysqld或mysql  (根据不同版本略有不同)

  • 进程名  mysqld或mysql

  • 进程所有者/组   mysql/mysql

  • 端口号    3306

  • 传输协议  tcp

  • 数据库目录  /var/lib/mysql/

数据库基本操作流程

1.连接数据库服务器    mysql
2.选择库    use  库名;
3.创建表
4.向表中插入记录   insert  into
5.曾删改查等数据操作
6.断开连接  quit

数据以文件的形式存储在数据库目录下

数据库基本使用概述

操作指令类型

  • MySQL指令:环境切换,看状态,退出等控制

  • SQL指令:数据库定义/查询/操纵/授权语句

基本操作注意事项

  • 操作指令不区分大小写

  • 每条SQL语句以;结束或分隔

  • 不支持tab键自动补齐

  • \c可废弃当前编写错的操作指令

数据库名称命名规则

  • 具有唯一性

  • 区分字母大小写

  • 只能使用数字、字母、“_”

  • 不能是纯数字

  • 不要使用特殊字符和关键字

操作命令基本格式

show  databases;   显示已有的库
create  database  库名;
use 库名; 切换库
select  database();  查看当前所在的库
drop  database  库名; 删除已有的库
show  tables;  显示当前所在库下已有的表
创建表(表存放在库里)
create  table  库名.表名(
字段名1   类型,
字段名2   类型,
字段名3   类型
);
select 字段名列表 from 表名;  查看表记录
desc 表名;  查看表结构
insert  into  表名  values(值1,值2……);向表中插入记录
delete  from 表名; 删除表中的所有记录
drop   table  表名; 删除表
建表的语法格式

create  table  表名(
字段名   类型(宽度)  约束条件,
字段名   类型(宽度)  约束条件,
字段名   类型(宽度)  约束条件
);

mysql数据库类型概述

字符类型 (eg:姓名  家庭地址)

char      定长  255
varchar   变长  255+
65532
大文本类型
blob
text

数值类型 (eg:工资,成绩,年龄,身高,体重)

数据类型截图

  • 整数类型
    根据存储数值的范围又分为:
    tinyint
    smallint
    MEDIUMINT
    int
    bigint

  • 浮点型
    float       double
    单精度      双精度

float(n,m)
double(n,m)
n  表示总位数
m 表小数位位数

整数.小数
1023.77

数值类型的宽度是显示宽度,不能够控制给字段赋值的大小,字段值的大小由字段类型决定。

  • 日期时间类型 (eg:生日,注册时间,入职时间)
    年      year    YYYY        2016
    01-69  20XX
    70-99  19XX
    00     0000
    日期   date    YYYYMMDD  20161219
    时间   time    HHMMSS    144518
    日期时间   ( 约会时间 )
    datetime / timestamp
    YYYYMMDDHHMMSS
    20170214183018

    datetime 与 timestamp   的区别?
    当不给timestamp类型的字段赋值时,用系统当前的时间给字段赋值。

    使用时间函数获取时间给日期时间类型字段赋值?
    now()  获取当前系统时间
    year()  获取年份
    date() 获取日期
    month()   获取月份
    day()       获取日期(几号)
    time()  获取时间

  • 枚举类型  (eg:爱好,性别,专业 )
    字段的值只能在列举的范围内选择
    enum(值列表)  单选
    set(值列表)   多选

  • 查看建表过程
    show  create  table  表名;

MySQL操作实例

[root@mysqlBak mysql_rpm]# mysql -u root -pEnter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
……//查看当前数据库//以下都是mysql自带数据库,不要轻易修改系统自带数据库,以免出现错误//mysql是授权库,test是测试库mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+4 rows in set (0.00 sec)//创建新的数据库mysql> create database user_list;
Query OK, 1 row affected (0.00 sec)//查看当前使用的数据库,若是在登录mysql时指定时,当前即可看到指定的数据库mysql> select database();
+------------+
| database() |
+------------+
| NULL       |
+------------+1 row in set (0.00 sec)//更改当前使用的数据库mysql> use user_list;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| user_list  |
+------------+1 row in set (0.00 sec)
mysql> ls
    -> \c
mysql> show tables;Empty set (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| user_list          |
+--------------------+5 rows in set (0.00 sec)

mysql> use mysql 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
    -> ;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+28 rows in set (0.00 sec)//切换到我们新建的数据库,mysql> use user_list;
Database changed//查看当前数据库内的表,结果为空mysql> show tables;Empty set (0.00 sec)//使用SQL指令创建name_list表mysql> create table name_list ( n_id int(10) primary key, name char(10), age int(3), sex enum("boy","girl") );
Query OK, 0 rows affected (0.36 sec)//查看name_list表结构mysql> desc name_list
    -> ;
+-------+--------------------+------+-----+---------+-------+
| Field | Type               | Null | Key | Default | Extra |
+-------+--------------------+------+-----+---------+-------+
| n_id  | int(10)            | NO   | PRI | NULL    |       |
| name  | char(10)           | YES  |     | NULL    |       |
| age   | int(3)             | YES  |     | NULL    |       |
| sex   | enum('boy','girl') | YES  |     | NULL    |       |
+-------+--------------------+------+-----+---------+-------+4 rows in set (0.01 sec)//插入数据mysql> insert into name_list values(
    -> 1,"tom",14,"boy");
Query OK, 1 row affected (0.05 sec)//查看name_list内全部数据mysql> select * from name_list;
+------+------+------+------+
| n_id | name | age  | sex  |
+------+------+------+------+
|    1 | tom  |   14 | boy  |
+------+------+------+------+1 row in set (0.01 sec)//字符类型实例mysql> create  table  t1(name varchar(256));
mysql> create   table  t7(name char(3),age  tinyint);
mysql> insert into  t7  values("jim",19);
mysql> create   table  t10(name char(3),age  tinyint unsigned);
mysql> create   table  t11(name char(3), level  int(3));
mysql> insert into  t11 values("bob",1024);
mysql> create table  t12(level1  int(3) zerofill,level2 int(7) zerofill); 
mysql> create  table  t13 (name  char(10),age tinyint(2) unsigned , pay  float(7,2));
mysql> insert into  t13  values("bob",21,18000.23);//时间函数实例mysql> create  table  t14 (name  char(10),age tinyint(2) unsigned , pay  float(7,2),s_year  year,birthday date,up_class  time,meetting datetime);
mysql> insert into  t14  values("bob",21,18000,1991,20160718,083000,20160818180000);
mysql> insert into  t14  values("tom",29,28000,now(),now(),now(),now());
mysql> select year(20170918);
+----------------+
| year(20170918) |
+----------------+
|           2017 |
+----------------+1 row in set (0.03 sec)

mysql> select year(20190918);
+----------------+
| year(20190918) |
+----------------+
|           2019 |
+----------------+1 row in set (0.00 sec)
mysql> select year( now() );
+---------------+
| year( now() ) |
+---------------+
|          2016 |
+---------------+1 row in set (0.00 sec)

mysql> select day( now() );
+--------------+
| day( now() ) |
+--------------+
|           17 |
+--------------+1 row in set (0.00 sec)
mysql> select month( now() );
+----------------+
| month( now() ) |
+----------------+
|              6 |
+----------------+1 row in set (0.00 sec)
mysql> select time( now() );
+---------------+
| time( now() ) |
+---------------+
| 09:14:38      |
+---------------+1 row in set (0.00 sec)

mysql> insert into  t14  values("lucy",29,28000,year(20190817),now(),time(now()),now());
mysql> select sleep(2);
+----------+
| sleep(2) |
+----------+
|        0 |
+----------+1 row in set (2.01 sec)
mysql> insert into  t14(s_year)values(00);
Query OK, 1 row affected (0.07 sec)
mysql> select s_year from t14;
+--------+
| s_year |
+--------+
|   1991 |
|   2016 |
|   2019 |
|   0000 |
+--------+4 rows in set (0.00 sec)
mysql> insert into  t14(s_year)values(100);
ERROR 1264 (22003): Out of range value for column 's_year' at row 1mysql> create  table  t15(time1   datetime ,time2  timestamp);
mysql> insert  into t15  values(now(),now());
mysql> insert  into t15(time2)  values(20160617173423);//枚举类型实例mysql> create  table t16(
    -> name  char(10),
    -> sex  enum("boy","girl","no"),
    -> likes  set("moneny","girl","book","film")
);
mysql> insert  into t16 values("bob","man","A,football");
mysql> desc t16;
+-------+------------------------------------+------+-----+---------+-------+
| Field | Type                               | Null | Key | Default | Extra |
+-------+------------------------------------+------+-----+---------+-------+
| name  | char(10)                           | YES  |     | NULL    |       |
| sex   | enum('boy','girl','no')            | YES  |     | NULL    |       |
| likes | set('moneny','girl','book','film') | YES  |     | NULL    |       |
+-------+------------------------------------+------+-----+---------+-------+3 rows in set (0.00 sec)
mysql> insert  into t16 values("bob","man","A,football");
ERROR 1265 (01000): Data truncated for column 'sex' at row 1mysql> insert  into t16 values("bob","boy","A,football");
ERROR 1265 (01000): Data truncated for column 'likes' at row 1mysql> insert  into t16 values("bob","boy","moneny,book");
Query OK, 1 row affected (0.04 sec)
mysql> select * from t16;
+------+------+-------------+
| name | sex  | likes       |
+------+------+-------------+
| bob  | boy  | moneny,book |
+------+------+-------------+1 row in set (0.00 sec)

mysql> insert into  t16  values("lucy",2,"book");
mysql> insert into  db1.t16 values(null,null,null)
mysql> create  table t17(
    ->name  char(10) not null,
    ->age  tinyint(2) unsigned  default 21,
    ->sex  enum("boy","girl","no") not null default "boy",
    ->likes  set("moneny","girl","book","film") not null
    ->default "moneny,girl");

mysql> insert into  t17(name)values("bob");
mysql> insert into  t17  values("lucy",23,"no","book,film");
mysql> insert into  t17  values(NULL,23,"no","book,film");
mysql> insert into  t17  values(NULL,NULL,"no","book,film");
ERROR 1048 (23000): Column 'name' cannot be nullmysql> insert into  t17  values("NULL",NULL,"no","book,film");
Query OK, 1 row affected (0.03 sec)



作者:海渊_haiyuan
链接:https://www.jianshu.com/p/444482ff5986

0人推荐
随时随地看视频
慕课网APP