基于Linux的MySQL操作實例(軟件安裝类咧,mysql基本操作馒铃,mysql數(shù)據(jù)類型,建表痕惋、插入數(shù)據(jù)操作)

基于Linux的MySQL操作實例(軟件安裝区宇,mysql基本操作,mysql數(shù)據(jù)類型值戳,建表议谷、插入數(shù)據(jù)操作)

前言

關(guān)于MySQL的概念性的東西,就在這里不多說了堕虹,本篇以實例操作為主卧晓,主要進行的操作有:MySQL軟件安裝,mysql基本操作鲫凶,mysql數(shù)據(jù)類型禀崖,建表、插入數(shù)據(jù)操作螟炫。
歡迎各路大神批評指教波附,謝謝各位。

安裝軟件

  • 源碼安裝昼钻,見腳本和源碼包
  • rpm包安裝(需要手動安裝依賴包)

本文使用的rpm安裝包都是從MySQL官網(wǎng)下載的掸屡。
由于個人原因GitHub暫時不能上傳,我將文件放在了百度云盤然评,有需要的朋友請前往下載仅财。若是不能下載,請私信我碗淌。
MySQL5.6盏求,點擊下載
http://pan.baidu.com/s/1jIr11Sq

當使用rpm包安裝時,可能會出現(xiàn)缺乏依賴包的情況亿眠,
可以使用先安裝光盤自帶的mysql-server碎罚,mysql,yum會自動安裝依賴包等纳像,
然后啟動服務(wù)荆烈,檢查端口號,由于mysql在默認的情況下,若不加載數(shù)據(jù)庫將不能啟動服務(wù)憔购,但是通過光盤自帶的軟件包使用yum安裝時宫峦,
這些配置都會自動做好。
然后卸載(卸載時需要添加--nodeps選項玫鸟,忽略依賴關(guān)系)低版本mysql軟件包导绷,并刪除主配置文件

[root@mysqlBak mysql_rpm]# yum -y install mysql-server mysql
[root@mysqlBak mysql_rpm]# service mysqld restart 
停止 mysqld:                                              [確定]
初始化 MySQL 數(shù)據(jù)庫: 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/*
// 卸載時,注意添加忽略依賴關(guān)系選項屎飘,
[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
//查看文件內(nèi)容,記錄隨機密碼
[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  //需要先設(shè)置密碼,然后進行其他操作
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
//可以直接制定數(shù)據(jù)庫
[root@mysqlBak mysql_rpm]# mysql -u root -p123456 test
……
mysql> select database();
+------------+
| database() |
+------------+
| test       |
+------------+
1 row in set (0.00 sec)

mysql> quit
Bye
//也可以不指定該數(shù)據(jù)庫
[root@mysqlBak mysql_rpm]# mysql -u root -p123456
……
mysql> select database();
+------------+
| database() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)

MySQL概述

基本信息

  • 主配置文件 /etc/my.cnf
  • 服務(wù)名 mysqld或mysql (根據(jù)不同版本略有不同)
  • 進程名 mysqld或mysql
  • 進程所有者/組 mysql/mysql
  • 端口號 3306
  • 傳輸協(xié)議 tcp
  • 數(shù)據(jù)庫目錄 /var/lib/mysql/

數(shù)據(jù)庫基本操作流程

1.連接數(shù)據(jù)庫服務(wù)器 mysql
2.選擇庫 use 庫名铸本;
3.創(chuàng)建表
4.向表中插入記錄 insert into
5.曾刪改查等數(shù)據(jù)操作
6.斷開連接 quit

數(shù)據(jù)以文件的形式存儲在數(shù)據(jù)庫目錄下

數(shù)據(jù)庫基本使用概述

操作指令類型

  • MySQL指令:環(huán)境切換肮雨,看狀態(tài),退出等控制
  • SQL指令:數(shù)據(jù)庫定義/查詢/操縱/授權(quán)語句

基本操作注意事項

  • 操作指令不區(qū)分大小寫
  • 每條SQL語句以箱玷;結(jié)束或分隔
  • 不支持tab鍵自動補齊
  • \c可廢棄當前編寫錯的操作指令

數(shù)據(jù)庫名稱命名規(guī)則

  • 具有唯一性
  • 區(qū)分字母大小寫
  • 只能使用數(shù)字怨规、字母、“_”
  • 不能是純數(shù)字
  • 不要使用特殊字符和關(guān)鍵字

操作命令基本格式

show databases; 顯示已有的庫
create database 庫名锡足;
use 庫名波丰; 切換庫
select database(); 查看當前所在的庫
drop database 庫名; 刪除已有的庫
show tables; 顯示當前所在庫下已有的表
創(chuàng)建表(表存放在庫里)
create table 庫名.表名(
字段名1 類型舶得,
字段名2 類型掰烟,
字段名3 類型
);
select 字段名列表 from 表名; 查看表記錄
desc 表名; 查看表結(jié)構(gòu)
insert into 表名 values(值1沐批,值2……);向表中插入記錄
delete from 表名纫骑; 刪除表中的所有記錄
drop table 表名; 刪除表
建表的語法格式

create table 表名(
字段名 類型(寬度) 約束條件九孩,
字段名 類型(寬度) 約束條件先馆,
字段名 類型(寬度) 約束條件
);

mysql數(shù)據(jù)庫類型概述

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

char 定長 255
varchar 變長 255+
65532
大文本類型
blob
text

數(shù)值類型 (eg:工資,成績躺彬,年齡煤墙,身高,體重)

數(shù)據(jù)類型截圖
  • 整數(shù)類型
    根據(jù)存儲數(shù)值的范圍又分為:
    tinyint
    smallint
    MEDIUMINT
    int
    bigint

  • 浮點型
    float double
    單精度 雙精度

float(n,m)
double(n,m)
n 表示總位數(shù)
m 表小數(shù)位位數(shù)

整數(shù).小數(shù)
1023.77

數(shù)值類型的寬度是顯示寬度宪拥,不能夠控制給字段賦值的大小仿野,字段值的大小由字段類型決定。

  • 日期時間類型 (eg:生日江解,注冊時間设预,入職時間)
    年 year YYYY 2016
    01-69 20XX
    70-99 19XX
    00 0000
    日期 date YYYYMMDD 20161219
    時間 time HHMMSS 144518
    日期時間 ( 約會時間 )
    datetime / timestamp
    YYYYMMDDHHMMSS
    20170214183018

    datetime 與 timestamp 的區(qū)別?
    當不給timestamp類型的字段賦值時犁河,用系統(tǒng)當前的時間給字段賦值鳖枕。

    使用時間函數(shù)獲取時間給日期時間類型字段賦值?
    now() 獲取當前系統(tǒng)時間
    year() 獲取年份
    date() 獲取日期
    month() 獲取月份
    day() 獲取日期(幾號)
    time() 獲取時間

  • 枚舉類型 (eg:愛好魄梯,性別,專業(yè) )
    字段的值只能在列舉的范圍內(nèi)選擇
    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.
……

//查看當前數(shù)據(jù)庫
//以下都是mysql自帶數(shù)據(jù)庫酿秸,不要輕易修改系統(tǒng)自帶數(shù)據(jù)庫,以免出現(xiàn)錯誤
//mysql是授權(quán)庫魏烫,test是測試庫
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)
//創(chuàng)建新的數(shù)據(jù)庫
mysql> create database user_list;
Query OK, 1 row affected (0.00 sec)
//查看當前使用的數(shù)據(jù)庫辣苏,若是在登錄mysql時指定時,當前即可看到指定的數(shù)據(jù)庫
mysql> select database();
+------------+
| database() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)
//更改當前使用的數(shù)據(jù)庫
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)
//切換到我們新建的數(shù)據(jù)庫哄褒,
mysql> use user_list;
Database changed
//查看當前數(shù)據(jù)庫內(nèi)的表稀蟋,結(jié)果為空
mysql> show tables;
Empty set (0.00 sec)
//使用SQL指令創(chuàng)建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表結(jié)構(gòu)
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)
//插入數(shù)據(jù)
mysql> insert into name_list values(
    -> 1,"tom",14,"boy");
Query OK, 1 row affected (0.05 sec)
//查看name_list內(nèi)全部數(shù)據(jù)
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);
//時間函數(shù)實例
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)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市呐赡,隨后出現(xiàn)的幾起案子退客,更是在濱河造成了極大的恐慌,老刑警劉巖链嘀,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萌狂,死亡現(xiàn)場離奇詭異,居然都是意外死亡怀泊,警方通過查閱死者的電腦和手機茫藏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霹琼,“玉大人务傲,你說我怎么就攤上這事”棠遥” “怎么了树灶?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長糯而。 經(jīng)常有香客問我天通,道長,這世上最難降的妖魔是什么熄驼? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任像寒,我火速辦了婚禮,結(jié)果婚禮上瓜贾,老公的妹妹穿的比我還像新娘诺祸。我一直安慰自己,他們只是感情好祭芦,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布筷笨。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪胃夏。 梳的紋絲不亂的頭發(fā)上轴或,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機與錄音仰禀,去河邊找鬼照雁。 笑死,一個胖子當著我的面吹牛答恶,可吹牛的內(nèi)容都是我干的饺蚊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼悬嗓,長吁一口氣:“原來是場噩夢啊……” “哼污呼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起包竹,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤曙求,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后映企,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡静浴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年堰氓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苹享。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡双絮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出得问,到底是詐尸還是另有隱情囤攀,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布宫纬,位于F島的核電站焚挠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏漓骚。R本人自食惡果不足惜蝌衔,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝌蹂。 院中可真熱鬧噩斟,春花似錦、人聲如沸孤个。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至斥废,卻和暖如春椒楣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背营袜。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工撒顿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荚板。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓凤壁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親跪另。 傳聞我的和親對象是個殘疾皇子番官,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容