基于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 mysqld
tcp        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]# ls
MySQL-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 -p
Enter 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 names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> 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 1
mysql> 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 1
mysql> insert  into t16 values("bob","boy","A,football");
ERROR 1265 (01000): Data truncated for column 'likes' at row 1
mysql> 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 null
mysql> insert into  t17  values("NULL",NULL,"no","book,film");
Query OK, 1 row affected (0.03 sec)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容