初識數據庫

1、數據庫管理軟件的由來

  以前的數據永久保存都是保存在文件中,而一個文件只能保存在一臺機器上,且程序的全部組件都運行在同一臺機器上,這種方式存在如下問題:html

  一、程序全部的組件不可能運行在同一臺機器上python

  由於這臺機器一旦掛掉則意味着整個軟件的崩潰,而且程序的執行效率依賴於承載它的硬件,而一臺機器機器的性能總歸是有限的, 受限於目前的硬件水平,就一臺機器的性能垂直進行擴展是有極限的。 因而咱們只能經過水平擴展來加強咱們系統的總體性能,這就須要咱們將程序的各個組件分佈於多臺機器去執行。mysql

  二、數據安全問題linux

  根據1的描述,咱們將程序的各個組件分佈到各臺機器,但需知各組件仍然是一個總體,言外之意,全部組件的數據仍是要共享的。 但每臺機器上的組件都只能操做本機的文件,這就致使了數據必然不一致。 因而咱們想到了將數據與應用程序分離:把文件存放於一臺機器,而後將多臺機器經過網絡去訪問這臺機器上的文件(用socket實現), 即共享這臺機器上的文件,共享則意味着競爭,會發生數據不安全,須要加鎖處理。程序員

  三、併發redis

  根據2的描述,咱們必須寫一個socket服務端來管理這臺機器(數據庫服務器)上的文件,而後寫一個socket客戶端,完成以下功能:sql

  1.遠程鏈接(支持併發) 2.打開文件 3.讀寫(加鎖) 4.關閉文件mongodb

總結:數據庫

  咱們在編寫任何程序以前,都須要事先寫好基於網絡操做一臺主機上文件的程序(socket服務端與客戶端程序),因而有人將此類程序寫成一個專門的處理軟件,這就是mysql等數據庫管理軟件的由來,但mysql解決的不只僅是數據共享的問題,還有查詢效率,安全性等一系列問題,總之,把程序員從數據管理中解脫出來,專一於本身的程序邏輯的編寫macos

2、數據庫概述

一、什麼是數據?

  描述事物的符號記錄稱爲數據。描述事物的符號既能夠是數字,也能夠是文字、圖片,圖像、聲音、語言等,數據由多種表現形式,它們均可以通過數字化後存入計算機。

  在計算機中描述一個事物,就須要抽取這一事物的典型特徵,組成一條記錄

二、什麼是數據庫(DataBase)?

  數據庫即存放數據的倉庫,只不過這個倉庫是在計算機存儲設備上,並且數據是按必定的格式存放

  過去人們將數據存放在文件櫃裏,如今數據量龐大,已經再也不適用

  數據庫是長期存放在計算機內、有組織、可共享的數據便可。數據庫中的數據按必定的數據模型組織、描述和儲存,具備較小的冗餘度、較高的數據獨立性和易擴展性,並可爲各類用戶共享。

三、什麼是數據庫管理系統(Database Management System)?

  數據庫管理系統——一個系統軟件,做用:一、解決科學地組織和存儲數據;二、用來高效獲取和維護數據

  如MySQL、Oracle、SQLite、Access、MS SQL Server

  mysql主要用於大型門戶,例如搜狗、新浪等,它主要的優點就是開放源代碼,由於開放源代碼這個數據庫是免費的,他如今是甲骨文公司的產品。
  oracle主要用於銀行、鐵路、飛機場等。該數據庫功能強大,軟件費用高。也是甲骨文公司的產品。
  sql server是微軟公司的產品,主要應用於大中型企業,如聯想、方正等。

四、數據庫服務器、數據管理系統、數據庫、表和記錄的關係

  數據庫服務器:運行數據庫管理軟件的計算機

  數據庫管理系統:一個軟件

  表:即文件,用來存放多行內容/多條記錄

  數據庫:文件夾,用來組織文件/表

  記錄:事物一系列典型的特徵

  數據:描述事物特徵的符號

3、MySQL介紹

  MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關係型數據庫管理系統,在 WEB 應用方面MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件之一。

一、MySQL是什麼?

  myql就是一個基於socket編寫的C/S架構的軟件。

  客戶端軟件

    mysql自帶:mysql命令,mysqldump命令等

    python模塊:如pymysql

二、數據庫管理軟件分類

  一類是關係型數據庫:如sqllite,db2,oracle,access,sql server,MySQL,主要特徵是:須要有表結構,sql語句通用。

  一類是非關係型數據庫:mongodb,redis,memcache,主要特徵:是key-value存儲的,沒有表結構

4、下載安裝

  Windows版本

#一、下載:MySQL Community Server 5.7.16
http://dev.mysql.com/downloads/mysql/

#二、解壓
若是想要讓MySQL安裝在指定目錄,那麼就將解壓後的文件夾移動到指定目錄,如:C:\mysql-5.7.16-winx64

#三、添加環境變量
【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】 --> 【將MySQL的bin目錄路徑追加到變值值中,用 ; 分割】
 
#四、初始化
mysqld --initialize-insecure

#五、啓動MySQL服務
mysqld # 啓動MySQL服務

#六、啓動MySQL客戶端並鏈接MySQL服務
mysql -u root -p # 鏈接MySQL服務器
安裝
上一步解決了一些問題,但不夠完全,由於在執行【mysqd】啓動MySQL服務器時,當前終端會被hang住,那麼作一下設置便可解決此問題:



注意:--install前,必須用mysql啓動命令的絕對路徑
# 製做MySQL的Windows服務,在終端執行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --install
 
# 移除MySQL的Windows服務,在終端執行此命令:
"c:\mysql-5.7.16-winx64\bin\mysqld" --remove



註冊成服務以後,之後再啓動和關閉MySQL服務時,僅需執行以下命令:
# 啓動MySQL服務
net start mysql
 
# 關閉MySQL服務
net stop mysql
將MySQL服務製做成window服務

  Linux版本

#二進制rpm包安裝
yum -y install mysql-server mysql

# centOS7下安裝方法以下:(做者避免mysql被閉源)
yum -y install mariadb-server mariadb

  源碼安裝:

1.解壓tar包
cd /software
tar -xzvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql-5.6.21

2.添加用戶與組
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql mysql-5.6.21

3.安裝數據庫
su mysql
cd mysql-5.6.21/scripts
./mysql_install_db --user=mysql --basedir=/software/mysql-5.6.21 --datadir=/software/mysql-5.6.21/data

4.配置文件
cd /software/mysql-5.6.21/support-files
cp my-default.cnf /etc/my.cnf
cp mysql.server /etc/init.d/mysql
vim /etc/init.d/mysql   #若mysql的安裝目錄是/usr/local/mysql,則可省略此步
修改文件中的兩個變動值
basedir=/software/mysql-5.6.21
datadir=/software/mysql-5.6.21/data

5.配置環境變量
vim /etc/profile
export MYSQL_HOME="/software/mysql-5.6.21"
export PATH="$PATH:$MYSQL_HOME/bin"
source /etc/profile

6.添加自啓動服務
chkconfig --add mysql
chkconfig mysql on

7.啓動mysql
service mysql start

8.登陸mysql及改密碼與配置遠程訪問
mysqladmin -u root password 'your_password'     #修改root用戶密碼
mysql -u root -p     #登陸mysql,須要輸入密碼
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION;     #容許root用戶遠程訪問
mysql>FLUSH PRIVILEGES;     #刷新權限
mysql_linux源碼安裝
1. 解壓
tar zxvf  mariadb-5.5.31-linux-x86_64.tar.gz   
mv mariadb-5.5.31-linux-x86_64 /usr/local/mysql //必需這樣,不少腳本或可執行程序都會直接訪問這個目錄

2. 權限
groupadd mysql             //增長 mysql 屬組 
useradd -g mysql mysql     //增長 mysql 用戶 並歸於mysql 屬組 
chown mysql:mysql -Rf  /usr/local/mysql    // 設置 mysql 目錄的用戶及用戶組歸屬。 
chmod +x -Rf /usr/local/mysql    //賜予可執行權限 

3. 拷貝配置文件
cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf     //複製默認mysql配置 文件到/etc目錄 

4. 初始化
/usr/local/mysql/scripts/mysql_install_db --user=mysql          //初始化數據庫 
cp  /usr/local/mysql/support-files/mysql.server    /etc/init.d/mysql    //複製mysql服務程序 到系統目錄 
chkconfig  mysql on     //添加mysql 至系統服務並設置爲開機啓動 
service  mysql  start  //啓動mysql

5. 環境變量配置
vim /etc/profile   //編輯profile,將mysql的可執行路徑加入系統PATH
export PATH=/usr/local/mysql/bin:$PATH 
source /etc/profile  //使PATH生效。

6. 帳號密碼
mysqladmin -u root password 'yourpassword' //設定root帳號及密碼
mysql -u root -p  //使用root用戶登陸mysql
use mysql  //切換至mysql數據庫。
select user,host,password from user; //查看系統權限
drop user ''@'localhost'; //刪除不安全的帳戶
drop user root@'::1';
drop user root@127.0.0.1;
select user,host,password from user; //再次查看系統權限,確保不安全的帳戶均被刪除。
flush privileges;  //刷新權限

7. 一些必要的初始配置
1)修改字符集爲UTF8
vi /etc/my.cnf
在[client]下面添加 default-character-set = utf8
在[mysqld]下面添加 character_set_server = utf8
2)增長錯誤日誌
vi /etc/my.cnf
在[mysqld]下面添加:
log-error = /usr/local/mysql/log/error.log
general-log-file = /usr/local/mysql/log/mysql.log
3) 設置爲不區分大小寫,linux下默認會區分大小寫。
vi /etc/my.cnf
在[mysqld]下面添加:
lower_case_table_name=1

修改完重啓:#service  mysql  restart
源碼安裝mariadb

  MAC版本

  下載https://dev.mysql.com/downloads/mysql/5.7.html#downloads安裝包。雙擊安裝、下一步後安裝完成。

  在/etc/profile文件內添加環境變量:PATH= /usr/local/mysql/bin:$PATH   而後在最後一行添加export PATH,保證全局生效。

  $PATH表明取系統自帶的環境變量的值。

  退出文件編輯後,執行source /etc/profile   當即生效配置文件修改。

  啓動mysql服務:在系統偏好設置下找到mysql,點擊啓動mysql服務。

    

5、密碼設置和密碼破解

MAC版本

  啓動MySQL後,必須先執行安全配置嚮導mysql_secure_installation。

    

  根據安裝時系統提示的密碼,設置新密碼。

須要輸入判斷的語句:

  Enter current password for root (enter for none):<–初次運行直接回車

  Set root password? [Y/n] <– 是否設置root用戶密碼,輸入y並回車或直接回車

  Remove anonymous users? [Y/n] <– 是否刪除匿名用戶,生產環境建議刪除,因此直接回車

  Disallow root login remotely? [Y/n] <–是否禁止root遠程登陸,根據本身的需求選擇Y/n並回車,建議禁止

  Remove test database and access to it? [Y/n] <– 是否刪除test數據庫,直接回車 

  Reload privilege tables now? [Y/n] <– 是否從新加載權限表,直接回車

  通用密碼修改

初始狀態下,管理員root,密碼爲空,默認只容許從本機登陸localhost
設置密碼
[root@egon ~]# mysqladmin -uroot password "123"        設置初始密碼 因爲原密碼爲空,所以-p能夠不用
[root@egon ~]# mysqladmin -uroot -p"123" password "456"        修改mysql密碼,由於已經有密碼了,因此必須輸入原密碼才能設置新密碼

命令格式:
[root@egon ~]# mysql -h172.31.0.2 -uroot -p456
[root@egon ~]# mysql -uroot -p
[root@egon ~]# mysql                    以root用戶登陸本機,密碼爲空

  密碼破解

  首先,保證mysql服務在中止狀態。執行sudo mysqld_safe --skip-grant-tables命令

MacBook-Pro:local hqs$ sudo mysqld_safe --skip-grant-tables
Password:
Logging to '/usr/local/mysql/data/MacBook-Pro.local.err'.
2018-05-08T12:48:38.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data

  而後,打開一個新的終端,執行mysql -uroot登陸數據庫

  接着,修改數據庫密碼,這個地方須要注意5.7版本mysql數據庫下已經沒有password這個字段了,password字段改爲了authentication_string

mysql> update mysql.user set password=password("1234") where user="root" and host="localhost";    # 這個是5.6版本通用寫法
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
mysql> update mysql.user set authentication_string=password('1234') where user='root' and host="localhost";    # 5.7版本後數據庫下已經沒有password這個字段了
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 1

mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

  隨後,殺死mysql進程來關閉mysql數據庫。

huangqiushideMacBook-Pro:~ hqs$ ps aux| grep mysql
hqs               8982   0.0  0.0  4286184    908 s001  S+    9:03下午   0:00.01 grep mysql
_mysql            8810   0.0  0.2  4686868  19516 s000  S+    8:48下午   0:00.59 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --skip-grant-tables --log-error=huangqiushideMacBook-Pro.local.err --pid-file=huangqiushideMacBook-Pro.local.pid
root              8740   0.0  0.0  4295984    744 s000  S+    8:48下午   0:00.02 /bin/sh /usr/local/mysql/bin/mysqld_safe --skip-grant-tables
root              8738   0.0  0.1  4330940   5536 s000  S+    8:48下午   0:00.05 sudo mysqld_safe --skip-grant-tables
huangqiushideMacBook-Pro:~ hqs$ kill -9 8810
-bash: kill: (8810) - Operation not permitted
huangqiushideMacBook-Pro:~ hqs$ kill -9 8740
-bash: kill: (8740) - Operation not permitted
huangqiushideMacBook-Pro:~ hqs$ sudo kill -9 8740
Password:
huangqiushideMacBook-Pro:~ hqs$ sudo kill -9 8810
huangqiushideMacBook-Pro:~ hqs$ sudo kill -9 8738
kill: 8738: No such process
huangqiushideMacBook-Pro:~ hqs$ ps aux| grep mysql
hqs               9006   0.0  0.0  4267752    864 s001  S+    9:04下午   0:00.00 grep mysql
kill掉全部mysql相關進程

  最後,在系統偏好設置—MySQL,正常啓動MySQL服務

huangqiushideMacBook-Pro:~ hqs$ mysql -uroot -p1234
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: Unknown OS character set ''.
mysql: Switching to the default character set 'latin1'.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 5.7.22 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, 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成功

6、統一字符編碼

  一、MAC須要先切換到管理員用戶,再建立配置文件/etc/my.cnf。寫入一下內容(下面那一組):

#mysql5.5如下版本
[mysqld]
default-character-set=utf8 
[client]
default-character-set=utf8 
[mysql]
default-character-set=utf8

#mysql5.5以上:修改方式有所改動
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

  二、修改完成後,在系統偏好設置中啓動mysql服務,啓動完成後mysql -uroot 登錄數據庫,執行"\s"進行編碼驗證

mysql> \s
--------------
mysql  Ver 14.14 Distrib 5.7.22, for macos10.13 (x86_64) using  EditLine wrapper

Connection id:          20
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.7.22 MySQL Community Server (GPL)
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /tmp/mysql.sock
Uptime:                 1 min 1 sec

Threads: 1  Questions: 6  Slow queries: 0  Opens: 105  Flush tables: 1  Open tables: 98  Queries per second avg: 0.098
--------------

mysql> 
編碼驗證

7、初識SQL語句

  有了mysql這個數據庫軟件,就能夠將程序員從對數據的管理中解脫出來,專一於對程序邏輯的編寫。

  mysql服務端軟件即mysqld幫咱們管理好文件夾以及文件,前提是做爲使用者的咱們,須要下載mysql的客戶端,或者其餘模塊來鏈接到mysqld,而後使用mysql軟件規定的語法格式去提交本身命令,實現對文件夾或文件的管理。該語法即sql(Structured Query Language 即結構化查詢語言)。

SQL語言主要用於存取數據、查詢數據、更新數據和管理關係數據庫系統,SQL語言由IBM開發。SQL語言分爲3種類型:
#一、DDL語句    數據庫定義語言: 數據庫、表、視圖、索引、存儲過程,例如CREATE DROP ALTER
#二、DML語句    數據庫操縱語言: 插入數據INSERT、刪除數據DELETE、更新數據UPDATE、查詢數據SELECT
#三、DCL語句    數據庫控制語言: 例如控制用戶的訪問權限GRANT、REVOKE

一、操做庫(文件夾)

  增:create database db1 charset utf8;    # charset指定數據庫字符編碼

  查:show databases;       # 查看全部數據庫(每每會有一些默認庫)

information_schema: 虛擬庫,不佔用磁盤空間,存儲的是數據庫啓動後的一些參數,如用戶表信息、列信息、權限信息、字符信息等
performance_schema: MySQL 5.5開始新增一個數據庫:主要用於收集數據庫服務器性能參數,記錄處理查詢請求時發生的各類事件、鎖等現象
mysql: 受權庫,主要存儲系統用戶的權限信息
test: MySQL數據庫系統自動建立的測試數據庫

            show create database db1;    # 查看數據庫,在文件系統/usr/local/mysql/data目錄下可找到剛剛創的數據庫

mysql> create database db1 charset utf8;
Query OK, 1 row affected (0.03 sec)

mysql> show create database db1;  
+----------+--------------------------------------------------------------+
| Database | Create Database                                              |
+----------+--------------------------------------------------------------+
| db1      | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db1                |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)
show操做示例

  改:alter database db1 charset gbk;     # 改數據庫字符編碼

mysql> alter database db1 charset gbk;
Query OK, 1 row affected (0.01 sec)

mysql> show create database db1;
+----------+-------------------------------------------------------------+
| Database | Create Database                                             |
+----------+-------------------------------------------------------------+
| db1      | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+-------------------------------------------------------------+
1 row in set (0.00 sec)
alter操做及字符編碼查看

  刪:drop database db1;   # 刪除數據庫,文件系統/usr/local/mysql/data目錄下db1目錄被刪除

mysql> drop database db1;
Query OK, 0 rows affected (0.03 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)
drop操做及確認

二、操做表(文件)

  切換文件夾:use db1

mysql> create database db1 charset utf8;
Query OK, 1 row affected (0.00 sec)

mysql> use db1
Database changed
use操做切換到數據庫下
mysql> use db1
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| db1        |
+------------+
1 row in set (0.00 sec)
select database();查看當前數據庫

  :create table t1(id int, name char) ;   # 表須要設置字段和字段的字符類型

    執行完增操做後,能夠在/usr/local/mysql/data/db1下看到多出來的 t1.frm  t1.ibd這兩個文件。t1.frm存放表結構,t1.ibd存放表數據。

  :show create table t1;   # 查看錶

mysql> create table t1(id int, name char);
Query OK, 0 rows affected (0.04 sec)

mysql> mysql> show create table t1;
+-------+---------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                        |
+-------+---------------------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` char(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+---------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
create建表及show查看錶數據

    show tables;    # 查看當前庫下全部的表

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| t1            |
+---------------+
1 row in set (0.00 sec)
show tables;查看當前庫全部表

    desc t1;    # 查看錶數據

mysql> desc t1;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | YES  |     | NULL    |       |
| name  | char(6) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
查看錶數據

  :改表的字段

    alter table t1 modify name char(6);  # 默認char寬度爲1,如今修改成6

mysql> alter table t1 modify name char(6);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table t1;
+-------+------------------------------------------------------------------------------+
| Table | Create Table                                                                                                        |
+-------+------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` char(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------+
1 row in set (0.00 sec)
alter...modify修改字段類型字符寬度

    alter table t1 change name NAME char(7);   # 字段名改成大寫,並修改字段類型

mysql> alter table t1 change name NAME char(7);
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc t1;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | YES  |     | NULL    |       |
| NAME  | char(7) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
alter...change修改字段名和字段類型

  :刪除表

    drop table t1;

mysql> drop table t1;
Query OK, 0 rows affected (0.00 sec)

mysql> desc t1;
ERROR 1146 (42S02): Table 'db1.t1' doesn't exist
mysql> show tables;
Empty set (0.00 sec)
刪除數據表並驗證

三、操做文件內容/記錄

  :插入

    insert  t1(id, name) values(1, 'egon1'), (2, 'egon2'), (3, 'egon3');

  :select  id,name from t1;   # 這是切到庫下的狀況

    select * from db1.t1;   # db1.t1指定db1庫下的t1表

mysql> create table t1(id int, name char(6));
Query OK, 0 rows affected (0.01 sec)

mysql> insert  t1(id, name) values(1, 'egon1'), (2, 'egon2'), (3, 'egon3');
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> select * from db1.t1;
+------+-------+
| id   | name  |
+------+-------+
|    1 | egon1 |
|    2 | egon2 |
|    3 | egon3 |
+------+-------+
3 rows in set (0.00 sec)
插入數據並查看錶文件內容

  :改表內的記錄

    update db1.t1 set name="SB";

mysql> update db1.t1 set name="SB";
Query OK, 3 rows affected (0.01 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> select * from db1.t1;
+------+------+
| id   | name |
+------+------+
|    1 | SB   |
|    2 | SB   |
|    3 | SB   |
+------+------+
3 rows in set (0.00 sec)
update...set修改全部name記錄

    update db1.t1 set name='ALEX' where id=2;

mysql> update db1.t1 set name='ALEX' where id=2;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from db1.t1;
+------+------+
| id   | name |
+------+------+
|    1 | SB   |
|    2 | ALEX |
|    3 | SB   |
+------+------+
3 rows in set (0.01 sec)
update...set..where修改指定記錄

  :刪除表內記錄

    delete from t1 where id=2;   # 刪除指定記錄

    delete from t1;  # 刪除報表內全部記錄

mysql> delete from t1 where id=2;
Query OK, 1 row affected (0.00 sec)

mysql> select * from db1.t1;
+------+------+
| id   | name |
+------+------+
|    1 | SB   |
|    3 | SB   |
+------+------+
2 rows in set (0.00 sec)

mysql> delete from t1;
Query OK, 2 rows affected (0.00 sec)

mysql> select * from db1.t1;
Empty set (0.00 sec)
delete刪除記錄操做

  清空表的方法總結:

    delete from t1;   # 若是有自增id,新增的數據,仍然是以刪除前的最後同樣做爲起始

    truncate table t1;  # 數據量大,刪除速度比上一條快,且直接從零開始

    auto_increment表示:自增

    primary key 表示:約束(不能重複且不能爲空);加速查找

相關文章
相關標籤/搜索