linux學習37-MySQL資料庫2
MySQL資料庫2
- 資料庫建立
- 表操作,增、刪、改、查、分組、排序等
- SQL語句例項
- 多表操作
- 檢視及自定義函式
1 多例項操作
- 實現多例項需要手動建立的檔案
- 使用者以及組
- 資料庫的檔案目錄
- 配置檔案
- 資料庫的啟動指令碼
- 資料庫存放系統內容的資料庫
- 相同版本資料庫實現多例項, 這裡以yum安裝方式為例
同一個版本的資料庫程式,來實現多例項,其二進位制程式可以不改動,賬號可以相同,相關配置需獨立建設,比如資料庫的資料夾,配置檔案,服務的啟動指令碼定義各自的埠號
- 計劃建立3個同版本例項,使用的埠號為3306,3307,3308;安裝軟體,由於是基於同一個版本,所以安裝一次軟體即可,yum安裝會自動生成賬號
[
- 規劃目錄存放路徑,建立目錄,結構如下所示
將建成的目錄及檔案,所屬組及所有者都改為mysql[[email protected] /data]$mkdir /data/mysql/{3306,3307,3308}/{etc,data,socket,log,bin,pid} -p [[email protected] /data]$tree . └── mysql ├── 3306 │ ├── bin │ ├── data │ ├── etc │ ├── log │ ├── pid │ └── socket ..
[[email protected] /data]$chown -R mysql.mysql mysql
- 生成資料庫必要檔案,安裝包內自帶的指令碼mysql_install_db,支援help,可以檢視修改幫助,這裡需要修改的路徑為資料庫路徑,使用者名稱
[root@hai7-8 /data]$/usr/bin/mysql_install_db --help '執行三次,分別生成3306,3307,3308的資料庫檔案' [root@hai7-8 /data]$/usr/bin/mysql_install_db --
- 準備配置檔案,拷貝系統自帶的my.cnf作為模板來修改
'1. 拷貝模板檔案' [[email protected] /data]$cp /etc/my.cnf /data/mysql/3306/etc/ '2. 修改模板為我們規劃的路徑' [[email protected] /data]$vim mysql/3306/etc/my.cnf [mysqld] port=3306 <==預設為3306埠,使用此埠可以不用指定,非預設埠需要指定 datadir=/data/mysql/3306/data <==存放資料路徑 socket=/data/mysql/3306/socket/mysql.sock <==socket檔案路徑 symbolic-links=0 <==預設,不需要修改 [mysqld_safe] log-error=/data/mysql/3306/log/mariadb.log <==日誌檔案路徑 pid-file=/data/mysql/3306/pid/mariadb.pid <==程序檔案路徑 #!includedir /etc/my.cnf.d <==註釋掉此項 '3. 拷貝修改後的檔案,分別建立3307,3308的配置檔案,將檔案內容修改為3307和3308' [[email protected] /data]$cp mysql/3306/etc/my.cnf mysql/3307/etc/my.cnf [[email protected] /data]$cp mysql/3306/etc/my.cnf mysql/3308/etc/my.cnf
- 準備服務啟動指令碼,指令碼內容如下命名為mysqld,拷貝到各例項的bin目錄下
指令碼內容[[email protected] /data]$cp mysqld /data/mysql/3306/bin/ [[email protected] /data]$cp /data/mysql/3306/bin/mysqld /data/mysql/3307/bin/ [[email protected] /data]$cp /data/mysql/3306/bin/mysqld /data/mysql/3308/bin/ '將配置檔案埠已經根目錄修改後,加上執行許可權' [[email protected] /data]$chmod +x /data/mysql/3306/bin/mysqld [[email protected] /data]$chmod +x /data/mysql/3307/bin/mysqld [[email protected] /data]$chmod +x /data/mysql/3308/bin/mysqld
#!/bin/bash port=3306 <==埠變數 mysql_user="root" <==啟動mysql的使用者身份 mysql_pwd="" <==指定root口令 cmd_path="/usr/bin" <==二進位制程式路徑,如果是二進位制安裝這裡是/usr/local/bin,編譯安裝為編譯時指定的路徑 mysql_basedir="/mysqldb" <==以哪個目錄為根,這裡要修改為上面規劃的/data/mysql mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock" function_start_mysql() <==負責啟動mysql的函式,關鍵部分為通過mysqld_safe程式,讀取--defaults-file=的配置檔案 { if [ ! -e "$mysql_sock" ];then printf "Starting MySQL...\n" ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null & else printf "MySQL is running...\n" exit fi } function_stop_mysql() <==負責停止mysql的函式,關鍵部分為通過mysqladmin shutdown關閉指定埠的mysql { if [ ! -e "$mysql_sock" ];then printf "MySQL is stopped...\n" exit else printf "Stoping MySQL...\n" ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown fi } function_restart_mysql() <==負責重啟mysql的函式 { printf "Restarting MySQL...\n" function_stop_mysql sleep 2 function_start_mysql } case $1 in start) function_start_mysql ;; stop) function_stop_mysql ;; restart) function_restart_mysql ;; *) printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n" esac
- 啟動各例項的mysql服務,檢視埠號
'1. 啟動服務' [[email protected] /data]$/data/mysql/3306/bin/mysqld start [[email protected] /data]$/data/mysql/3307/bin/mysqld start [[email protected] /data]$/data/mysql/3308/bin/mysqld start '2. 檢視埠號' [[email protected] /data]$ss -ntl State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 50 *:3306 *:* LISTEN 0 50 *:3307 *:* LISTEN 0 50 *:3308 *:*
- 啟動資料庫指定埠號,或者指定sock檔案
'指定socket檔案連線,使用-S(大S)選項,加上sock檔案路徑' [[email protected] /data]$mysql -S /data//mysql/3306/socket/mysql.sock '指定埠號為-P選項' [[email protected] /data]$mysql -P 3306 -h127.0.0.1
- 修改資料庫口令
[[email protected] /data]$mysqladmin -uroot -S socket/mysql.sork password "123"
- 將各例項設定為開機啟動,
'1. 拷貝服務啟動指令碼到init.d下,自定義名稱' [[email protected] /data]$cp /data/mysql/3306/bin/mysqld /etc/init.d/mysql3306 '2. 增加開機啟動需要的內容' [roo[email protected] /data]$vim /etc/init.d/mysql3306 #!/bin/bash #chkconfig: 345 20 50 <==增加此行,345級別可以啟動,啟動序號為20,關閉序號50 #description: mysql 3306 <==增加此行,描述資訊 '3. 確定有執行許可權後,將其加入啟動列表' [[email protected] /data]$chkconfig --add mysql3306 '或者放到/etc/rc.local中'
- 計劃建立3個同版本例項,使用的埠號為3306,3307,3308;安裝軟體,由於是基於同一個版本,所以安裝一次軟體即可,yum安裝會自動生成賬號
2 建立資料庫
-
獲取資訊
- 獲取命令使用幫助:
HELP KEYWORD;
- 檢視資料庫列表:
SHOW DATABASES;
- 檢視支援所有字符集:
SHOW CHARACTER SET;
- 檢視支援所有排序規則:
SHOW COLLATION;
- 檢視當前mysql版本資訊
status
- 獲取命令使用幫助:
-
建立資料庫
- 建立資料庫命令:create database
首先檢視幫助說明
建立命令語法 在mysql中database和schema是等效的,其他資料庫有區別MariaDB [(none)]>help create database
create_specification子句CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ... `[IF NOT EXISTS]`用來判斷資料庫是否存在的引數 `[create_specification]`用來定義資料庫的子句
'1. 定義字符集:儘可能選擇UTF8的字符集,可以通過`show character set`檢視預設支援的字符集,utf8mb4可以支援特殊符號,比如表情包' [DEFAULT] CHARACTER SET [=] charset_name '2. 定義排序規則:字符集有預設的排序規則,一般不需要指定,檢視排序規則`SHOW COLLATION`' [DEFAULT] COLLATE [=] collation_name
- 建立一個數據庫,檢視其預設字符集
'1. 建立名為db1的資料庫' MariaDB [(none)]> create database db1; '2. 檢視建立時系統預設完整命令' MariaDB [(none)]> show create database db1; <==檢視命令 | db1 | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ | '系統會加上預設引數,預設的字符集為utf8,10版本以前預設的為latin1'
- 使用者指定字符集輸入示例,建立資料庫db2,子句指定字符集為utf8mb4
MariaDB [(none)]> CREATE DATABASE db2 CHARACTER SET=utf8mb4;
- 建立的資料庫,會在程式家目錄下生成相應的庫目錄,沒有資料前只有一個檔案.opt
[[email protected] data]$cat mysql/db2/db.opt default-character-set=utf8mb4 <==預設字符集 default-collation=utf8mb4_general_ci <==預設排序方法
- 既然資料庫是以目錄方式存在的,也可以在家目下建立一個目錄當做資料庫
[[email protected] mysql]$cp db1 db3 -ar [[email protected] mysql]$ll drwx------ 2 mysql mysql 20 Oct 6 09:31 db1 drwx------ 3 mysql mysql 31 Oct 6 10:07 db3 <==許可權所屬都沒有改變,連其下的db.opt一起復制 '在資料庫中檢視資料庫列表' MariaDB [mysql]> show databases; +--------------------+ | Database | +--------------------+ | db1 | | db2 | | db3 | <==可以生成
- 檢視資料庫列表: 命令為
SHOW DATABASES
MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | db1 | | db2 | | information_schema | | mysql | | performance_schema | | test | +--------------------+
- 切換資料庫,使用命令
use db_name;
MariaDB [(none)]> use db2 Database changed MariaDB [db2]> <==中括號中設定的為當前資料庫,可以看到切換到db2中
- 建立資料庫命令:create database
首先檢視幫助說明
-
刪除資料庫
- 命令語法
DROP DATABASE|SCHEMA [IF EXISTS] 'DB_NAME';
- 示例
MariaDB [mysql]> drop database IF EXISTS test <==如果為空就刪除,避免誤刪除
- 命令語法
3 建立表
-
表結構 二維關係(橫行縱列)
- 表名:儘可能和存放的實體密切相關,表名大小寫敏感(例如修改或搜尋時)
- 欄位:
- 欄位名:例如姓名、性別,大小寫不敏感
- 欄位資料型別:需要宣告此欄位資料型別
- 修飾符:用於定義欄位屬性
- 約束,索引:應該建立在經常用作查詢條件的欄位上
-
獲取資訊
- 幫助
HELP CREATE TABLE;
- 檢視所有支援的引擎
SHOW ENGINES
- 查看錶列表
SHOW TABLES [FROM db_name]
- 查看錶結構
DESC [db_name.]tb_name
- 查看錶建立命令,顯示建立此表的各種引數
SHOW CREATE TABLE tbl_name
- 查看錶狀態
SHOW TABLE STATUS LIKE 'tbl_name'
橫向顯示 MariaDB [db2]> SHOW TABLE STATUS LIKE 'newcoc2'; 縱向顯示 MariaDB [db2]> SHOW TABLE STATUS LIKE 'newcoc2'\G
- 檢視庫中所有表狀態
SHOW TABLE STATUS FROM db_name
橫向顯示 MariaDB [db2]> SHOW TABLE STATUS FROM hellodb;<== ;可以替換為\g 縱向顯示 MariaDB [db2]> SHOW TABLE STATUS FROM hellodb\G
- 幫助
-
建立表方法
-
直接建立
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [partition_options]
-
通過查詢現存表建立;新表會被直接插入查詢而來的資料
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [partition_options]select_statement
-
通過複製現存的表的表結構建立,但不復制資料
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) }
-
-
引數說明
- 建表描述(create_definition,…)
格式為:(col1 type1 修飾符, col2 type2 修飾符, …)
- col :欄位的名稱
- type:欄位型別
- 修飾符:來修飾此欄位的特性
- 表選項[table_options]
-
在表建立時指明其使用的儲存引擎,同一庫中不同表可以使用不同的儲存引擎,建議使用同一種,預設為InnoDB
ENGINE [=] engine_name
-
指定行的格式,一般情況預設,避免帶來資料庫壓力
ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
-
- 建表描述(create_definition,…)
格式為:(col1 type1 修飾符, col2 type2 修飾符, …)
-
修飾符
- 所有型別
型別 描述 INDEX 索引 NULL 資料列可包含NULL值。允許為空 NOT NULL 資料列不允許包含NULL值,不允許為空 DEFAULT 定義預設值,防止出現空值 PRIMARY KEY 主鍵 UNIQUE KEY 唯一鍵 CHARACTER SET name 表可以自定義使用的字符集,不建議單獨指定 - 數值型
型別 描述 AUTO_INCREMENT 自動遞增,適用於整數型別,例如職工編號 UNSIGNED 無符號,表示全為正數 -
刪除表
DROP TABLE [IF EXISTS] tb_name
示例,刪除表newcocMariaDB [db2]> DROP TABLE IF EXISTS newcoc;
3.1 資料型別
-
資料型別解決資料以下問題
- 資料長什麼樣?
- 資料需要多少空間來存放?
-
MySql支援多種內建型別:
- 數值型別
- 日期/時間型別
- 字串(字元)型別
-
選擇正確的資料型別對於獲得高效能至關重要,三大原則:
- 更小的通常更好,儘量使用可正確儲存資料的最小資料型別
- 簡單就好,簡單資料型別的操作通常需要更少的CPU週期
- 儘量避免NULL,包含為NULL的列,對MySQL更難優化
-
資料型別-數值型
-
整數型
數值型-整數 資料大小 取值範圍 tinyint(m) 1個位元組 範圍(-128~127) smallint(m) 2個位元組 範圍(-32768~32767) mediumint(m) 3個位元組 範圍(-8388608~8388607) int(m) 4個位元組 範圍(-2147483648~2147483647) igint(m) 8個位元組 範圍(±9.22*10的18次方) - 加上unsigned修飾符,表示沒有負數,則最大值翻倍 如:tinyintunsigned的取值範圍為(0~255)
- int(m)裡的m是表示SELECT查詢結果集中的顯示寬度 並不影響實際的取值範圍,規定了MySQL的一些互動工具(例如MySQL命令列客戶端)用來顯示字元的個數。對於儲存和計算來說,Int(1)和Int(20)是相同的
- BOOL,BOOLEAN:布林型,是TINYINT(1)的同義詞。zero值被視為假,非zero值視為真
-
浮點型(float和double),近似值
數值型-浮點 資料大小 描述 float(m,d) 單精度浮點型8位精度(4位元組) m總個數,d小數位 double(m,d) 雙精度浮點型16位精度(8位元組) m總個數,d小數位 示例1 設一個欄位定義為float(6,3),如果插入一個數123.45678,實際資料庫裡存的是123.457,但總個數還以實際為準,即6位 示例2 在實際工作中,如果遇到財務資料,通常將元、角、分單獨列段表示,避免小數
-
定點數
數值型-定點 描述 mal(m,d) 引數m<65 是總個數,d<30且d<m 是小數位 - 在資料庫中存放的是精確值,存為十進位制
- 浮點型別在儲存同樣範圍的值時,通常比decimal使用更少的空間。float使用4個位元組儲存。double佔用8個位元組
- 因為需要額外的空間和計算開銷,所以應該儘量只在對小數進行精確計算時才使用decimal——例如儲存財務資料。但在資料量比較大的時候,可以考慮使用bigint代替decimal
- MySQL5.0和更高版本將數字打包儲存到一個二進位制字串中(每4個位元組存9個數字)。例如,decimal(18,9)小數點兩邊將各儲存9個數字,一共使用9個位元組:小數點前的數字用4個位元組,小數點後的數字用4個位元組,小數點本身佔1個位元組
-
-
資料型別-字元型
型別 是否可變 最大長度 char(n) 固定長度 最多255個字元 varchar(n) 可變長度 最多65535個字元 tinytext 可變長度 最多255個字元 text 可變長度 最多65535個字元 mediumtext 可變長度 最多2的24次方-1個字元 longtext 可變長度 最多2的32次方-1個字元 BINARY(M) 固定長度 可存二進位制或字元,長度為0-M位元組 VARBINARY(M) 可變長度 可存二進位制或字元,允許長度為0-M位元組 -
char和varchar的區別
- char(n) 若存入字元數小於n,則以空格補於其後,查詢之時再將空格去掉。所以char型別儲存的字串末尾不能有空格,varchar不限於此。
- char(n) 固定長度,char(4)不管是存入幾個字元,都將佔用4個位元組,varchar是存入的實際字元數+1個位元組(n< n>255),所以varchar(4),存入3個字元將佔用4個位元組。
- char型別的字串檢索速度要比varchar型別的快
-
varchar和text區別
- varchar可指定n,text不能指定,內部儲存varchar是存入的實際字元數+1個位元組(n< n>255),text是實際字元數+2個位元組。
- text型別不能有預設值
- varchar可直接建立索引,text建立索引要指定前多少個字元
- varchar查詢速度快於text
-
內建型別:
- ENUM列舉:列出範圍,從中選擇一個
- SET集合:可以選擇任何好多個的組合
-
-
資料型別-二進位制資料(BLOB)
- BLOB和text儲存方式不同,TEXT以文字方式儲存,英文儲存區分大小寫,而Blob是以二進位制方式儲存,不分大小寫
- BLOB儲存的資料只能整體讀出
- TEXT可以指定字符集,BLOB不用指定字符集
-
資料型別-日期時間型別
- date:日期’2008-12-2’
- time:時間’12:25:36’
- datetime:日期時間’2008-12-2 22:06:44’
- timestamp:自動儲存記錄修改時間,記錄只要發生改變值就會更新,即使是復原記錄也會更新時間
- YEAR(2), YEAR(4):年份以2|4個字元表示
3.2 建立示例
- 建立新表 students,自定義屬性
MariaDB [(none)]> CREATE TABLE students ( <==建立命令 -> id int unsigned AUTO_INCREMENT primary key , <==()內為表描述,定義型別屬性等 'ID,資料型別為int,自動遞增AUTO_INCREMENT,設為主鍵(pk),主鍵不能為空' -> name varchar (30) not null, ' 姓名,資料型別為varchar,佔30個字元(30),不允許為空' -> sex enum('m','f'), '性別,規定枚為m或f,只能在此區間選擇一個' -> age tinyint unsigned default 20, ' 年齡,資料型別為tinyint,全為正數unsigned,預設值default為20' -> PRIMARY KEY(id,name) <==沒有此行,如果要定義複合主鍵,前面的內容就不能定義,主鍵只能有一個 ' 如果使用複合主鍵,表示方法如上所示,在最後逗號隔開為獨立項' -> );
- 查看錶的建立內容,以上例的students為例
方法一 MariaDB [db2]> SHOW CREATE TABLE students 方法二 MariaDB [db2]> DESC students ;
- 查詢表內容,以hellodb資料庫中的coc表為例,命令為
SELECT * FROM coc
'1. 列出現有資料庫' MariaDB [db2]> show databases; '2. 進入選定資料庫' MariaDB [db2]> use hellodb '3. 列出資料庫內所有表列表 ' MariaDB [hellodb]> show tables '4. 檢視coc表格' MariaDB [hellodb]> SELECT * FROM coc;<==select表示查詢,[ * ]表示所有欄位,from表示從那張表查 +----+---------+----------+ | ID | ClassID | CourseID | +----+---------+----------+ | 1 | 1 | 2 | | 2 | 1 | 5 |
- 通過查詢現存表建立;新表會被直接插入查詢而來的資料,新表為newcoc,舊錶為coc
跨資料庫,以hellodb資料庫表格為模板,在db2資料庫中建表newcoc'建立表格' MariaDB [hellodb]> CREATE TABLE newcoc SELECT * FROM coc '比較新舊兩張表的內容,結構與內容基本相同' MariaDB [hellodb]> SELECT * FROM newcoc; +----+---------+----------+ | ID | ClassID | CourseID | +----+---------+----------+ | 1 | 1 | 2 | | 2 | 1 | 5 |
'1. 切換至db2資料庫' MariaDB [hellodb]> use db2 '2. 語法與上例相同,查詢地址加上資料庫名稱以點與表隔開,表示為`hellodb.coc`' MariaDB [db2]> CREATE TABLE newcoc SELECT * FROM hellodb.coc
- 通過複製現存的表的表結構建立,但不復制資料
方法2:給定查詢命令一個不能匹配的條件,返回空置,只有表結構,建立空值的查詢結果,就是表結構'1. 以hellodb.coc為模板,在db2資料庫中建立架構類似的表格newcoc2' MariaDB [db2]> CREATE TABLE newcoc2 LIKE hellodb.coc <==命令格式 '2. 檢視結構' MariaDB [db2]> desc newcoc2; <==結構相同 +----------+----------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+----------------------+------+-----+---------+----------------+ | ID | int(10) unsigned | NO | PRI | NULL | auto_increment | | ClassID | tinyint(3) unsigned | NO | | NULL | | | CourseID | smallint(5) unsigned | YES | | NULL | | +----------+----------------------+------+-----+---------+----------------+ '3. 查看錶內容' MariaDB [db2]> select * from newcoc2; Empty set (0.00 sec) <==表內容為空
MariaDB [db2]> CREATE TABLE newcoc3 SELECT * FROM hellodb.coc where 1=0;
3.3 表文件存放說明
在mysql中建立的資料庫以及表格,都會在mysql的家目錄下生成對應目錄和檔案,10.2版本在資料庫下表格檔案是一對,分別存放表結構和表資料,如下所示
[[email protected] db2]$ll /mysql/db2/
total 304
-rw-rw---- 1 mysql mysql 67 Oct 6 09:44 db.opt
-rw-rw---- 1 mysql mysql 976 Oct 6 14:38 newcoc2.frm <==表結構
-rw-rw---- 1 mysql mysql 98304 Oct 6 14:38 newcoc2.ibd <==表資料
-rw-rw---- 1 mysql mysql 487 Oct 6 14:33 newcoc.frm
-rw-rw---- 1 mysql mysql 98304 Oct 6 14:33 newcoc.ibd
-rw-rw---- 1 mysql mysql 1115 Oct 6 11:25 students.frm
-rw-rw---- 1 mysql mysql 98304 Oct 6 11:25 students.ibd
老版本比如映象檔案中自帶的5.5版,資料庫下只存放各表的結構檔案.frm,所有資料統一放在mysql目錄下的ibdata1檔案,不好區分,檔案超,需要通過修改配置檔案,將資料獨立生成檔案,在mysqld塊下增加如下引數
[[email protected] support-files]$vim /etc//my.cnf
[mysqld]
innodb_file_per_table= on <==資料庫的每一個表都生成獨立的檔案10.2後版本,預設開啟
4 表操作
Help ALTER TABLE 檢視幫助
4.1 欄位
-
新增欄位:add
- 語法格式
ADD col1 data_type[FIRST|AFTER col_name]
- 引數說明
引數 描述 col1 加入欄位的欄位名 data_type 資料型別 FIRST 在表的最前面加入 AFTER col_name 在指定欄位後加入 - 示例
顯示錶students的建立資訊,以下各例將在此表基礎上進行
:在students表name後新增一行tel,資料型別為char佔用11各位元組MariaDB [db2]> desc students +-------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | name | varchar(30) | NO | | NULL | | | sex | enum('m','f') | YES | | NULL | | +-------+---------------------+------+-----+---------+----------------+
再次檢視students的建立資訊MariaDB [db2]> ALTER TABLE students ADD tel char(11) AFTER name ;
MariaDB [db2]> desc students | name | varchar(30) | NO | | NULL | | | tel | char(11) | YES | | NULL | | <==新增欄位資訊
- 語法格式
-
刪除欄位
- 引數為
drop
- 示例,刪除上例中增加的欄位tel
MariaDB [db2]> ALTER TABLE students DROP tel ; | 表操作命令 | 表名 | 引數|刪除欄位|
- 引數為
-
修改表名
- 引數為
RENAME
- 示例:將表students改名為S1
MariaDB [db2]> ALTER TABLE students RENAME S1 ;
- 引數為
-
修改欄位屬性
- 引數為
MODIFY
- 示例:修改S1表的id段屬性,原屬性為int,修改為tinyint
MariaDB [db2]> ALTER TABLE S1 MODIFY id tinyint;
- 引數為
-
修改欄位名
CHANGE COLUMN
:- 引數為
CHANGE COLUMN
- 示例:將表S1中tel欄位修改為num,資料型別為char(15)
MariaDB [db2]> ALTER TABLE S1 CHANGE COLUMN tel num char(15) ;
- 引數為
-
索引:
-
查看錶上的索引
- 語法格式:
SHOW INDEXES FROM [db_name.]tbl_name;
- 示例:檢視資料庫db2中S1表的索引
MariaDB [db2]> SHOW INDEXES FROM db2.S1 \G
- 語法格式:
-
新增索引:
- 引數:
add index
- 示例:為S1表的name欄位增加索引
MariaDB [db2]> ALTER TABLE S1 ADD INDEX(name)\G
- 引數:
-
刪除索引:
- 引數:
drop index
- 示例:刪除上例中name欄位的索引
MariaDB [db2]> ALTER TABLE S1 DROP index name; MariaDB [db2]> DROP INDEX name on S1;
- 引數:
-
-
增加唯一鍵
- 語法格式 ALTER TABLE students ADD UNIQUE KEY(name);
- 示例:後面講唯一鍵時詳見
4.2 DML語句(INSERT, DELETE, UPDATE)
-
INSERT:一次插入一行或多行資料
-
語法
相關推薦
linux學習37-MySQL資料庫2
MySQL資料庫2 資料庫建立 表操作,增、刪、改、查、分組、排序等 SQL語句例項 多表操作 檢視及自定義函式 1 多例項操作 實現多例項需要手動建立的檔案 使用者以及組 資料庫的檔案目錄 配置檔案 資料庫的啟動指令碼 資料庫存放系統內容的資料庫
linux學習記錄-------mysql安裝
adb mon .rpm 分享 密碼 tro post mysql x86_64 1、下載,打開 http://dev.mysql.com/downloads/mysql/ 選擇開發者版本,不需要註冊登陸的,點擊下載後左下角有一行小字:No thanks, just sta
Linux學習之路--http-2基礎設置及訪問限制【15】---20180108
first 配置 特定 http modules rmi 目錄訪問控制 可重復 als 一、HTTP軟件1、http服務器應用http服務器程序 httpd apache nginx lighttpd應用程序服務器 IIS .asp tomca
linux學習記錄-------mysql授權遠程連接
nbsp password pri roo 指定 leg 默認 option IV Linux開啟MySQL遠程連接的設置步驟 。 MySQL默認root用戶只能本地訪問,不能遠程連接管理MySQL數據庫,那麽Linux下如何開啟MySQL遠程連接? 設置步驟如下: 1、登
linux學習之路:2.基本指令(2)
inux 可執行文件 選項 說明 獨立 選項說明 img color 配置 一、在線求助:man page 與info page 1.man(manual:操作說明) page 我想查看日歷,所以我輸入man cal 效果如圖: 圖中CAL(1)中,在不同的指令中數字的含
Linux下安裝MySQL資料庫mysql-5.7.11
Linux下安裝MySQL資料庫(壓縮包方式安裝) https://www.cnblogs.com/xiaotao726/p/6562265.html PS:9、建立In ln -s /usr/local/mysql/ /usr/bin/ 連線資料庫時會顯示:[[email protecte
linux系統修改mysql資料庫root密碼
剛開始時,我是這樣修改的: 首先登入MySQL。 mysql> use mysql; mysql> update user set password=password(‘123’) where user=’root’ and host=’localhost’; mysql>
ecs雲伺服器linux系統安裝mysql資料庫
Linux64安裝mysql資料庫流程簡介 Mysql官網上下載mysql資料庫壓縮包到本地。 通過xftp上傳壓縮包到linux系統的usr/local資料夾下。 在Linux系統終端執行解壓指令 tar -zxvf (壓縮包名字) 出現以下畫面表示解壓成功 新
linux centos下mysql資料庫的主從複製環境搭建
有兩臺MySQL資料庫伺服器Master和slave,Master為主伺服器,slave為從伺服器,初始狀態時,Master和slave中的資料資訊相同,當Master中的資料發生變化時,slave也跟著發生相應的變化,使得master和slave的資料資訊同步,達到備份的目的。 原理圖如下:
Linux CentOS7 安裝mysql資料庫
注意:在CentOS7中,已經使用MariaDB替代了MySQL資料庫。 1、安裝: # yum install -y mariadb mariadb-server 2、拷貝配置檔案: # cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
Linux伺服器安裝Mysql資料庫
CentOS 7.4 下yum安裝MYSQL5.7.2 解除安裝 先停掉mysql程序 沒有安裝過的可以直接跳過 [root@iZwz9c6jlipu33po7lw2kgZ mysql]# netstat -antp pkill -9 mysqld rpm -qa|g
linux--解決登陸mysql資料庫出現 “Access denied for user 'root'@'localhost' (using password: YES)”的問題
我的平臺為redhat-linux,其它版本linux類同。 請按照下列步驟依此執行,親測有效: 1.切換為root使用者,停止mysql服務,service mysqld stop。 2.在當前終端中輸入mysqld_safe --user=mysql --skip-grant-t
linux定時備份mysql資料庫
1、檢視磁碟空間情況: [[email protected] backup]# df -h 檔案系統 容量 已用 可用 已用% 掛載點 /dev/mapper/centos-root 17G 2.7G 15G 16
Linux CentOS7 配置MYSQL資料庫主從
1、在主資料庫裡建立一個同步賬號 每個從資料庫會使用一個MySQL賬號來連線主資料庫,所以我們要在主資料庫裡建立一個賬號,並且該賬號要授予REPLICATION SLAVE 許可權,你可以為每個從資料庫分別建立賬號,當然也可以用同一個!你可以用原來的賬號不一定要新創賬號,但你應該注意,這個賬號和密碼會被明文存
十五、python學習之MySQL資料庫(二):資料庫的操作
一、資料庫的操作: 1.資料庫操作的概述: 在資料庫操作中,基本操作都是圍繞增刪改查來操作。簡稱CRUD C Create 建立 R Read/Retrieve 查詢 U Update 修改 D Delete 刪除 2.資料庫操作 在數操作資料庫時,所有的資料
十七、python學習之MySQL資料庫(四): 資料庫程式設計
一、python資料庫操作: 1.資料庫程式設計概述: 資料庫程式設計就是針對資料庫的操作,通過編寫程式的方式,讓程式做為資料庫的客戶端進行資料庫操作。這種通過使用程式程式碼的方式去連線資料庫伺服器,通過和伺服器進行互動完成對資料庫的增刪改查的方式,就稱為資料庫程式設計。
Linux下操作MySQL資料庫常用命令
目錄 5.查詢表 9.退出 1.連線資料庫 mysql -u -root -p 輸入密碼 2.檢視資料庫 show databases; 3.開啟資料庫
Linux 下實現 MySQL 資料庫定時自動備份
備份是什麼? 為什麼要備份? 容災方案建設 儲存介質 光碟 磁帶 硬碟&n
linux下,mysql資料庫的忘記密碼,檢視使用者,以及修改使用者資訊
linux下,mysql資料庫的忘記密碼,檢視使用者,以及修改使用者資訊 剛好遇到的,也是自己不熟悉的部分,因此查了一些資料,大概把這幾個給總結一下。 一、資料庫忘記密碼 1、如果是root使用者忘記密碼的話,那就沒
linux下安裝mysql資料庫
linux下安裝mysql 下載安裝包 上傳安裝包到伺服器上 解壓安裝 1、解壓到user/local下 tar vxf mysql-5.7.14-1.el6.x86_64.rpm-bundle.tar -C /usr/local 2、依次執行一下命令: [
-