『壹』 MySQL資料庫基礎+ 資料庫的基本操作
需要用的資料以鏈接的形式給需要的同學。
我用的mysql版本為: Mysql-5.5.45-win64.msi 密碼是:26zw
圖形化工具 Navicat(前期不推薦用,直接手動敲): Navicat 密碼:c7fs
開始我的MySQL之旅吧 始於2016.12.04
--WH
一、資料庫的安裝
這個就不在這里過多闡述了,因為網上實在是太多安裝mysql的教程了,有了我給的mysql,在按照這個安裝教程(MySQL安裝教程)去看,就能夠安裝完好。
安裝好mysql後,如果需要使用windows命令窗口(也就是cmd)來操作mysql,那麼就需要配置環境變數,在安裝好的mysql下找到bin,將其目錄放到環境變數path中去,就行了,檢測成功與否的方法是在cmd命令窗口中輸入mysql,就會出現一大段英文,就說明成功了,反之失敗,如果不會的話就去網路搜教程。
二、資料庫的基本操作
1、開啟mysql服務命令
net start mysql
2、進入mysql的兩種方式
明文進入:mysql -uroot -proot格式:mysql -u帳號-p密碼
密文進入:mysql -uroot -p 按enter會提示你輸入密碼(Enter pssword:),此時你寫的密碼就會顯示為***這樣。
3、查看mysql中所有的資料庫(一般在固定的單詞命令就會是用大寫,這個要習慣,看多了敲多了就認識了)
前面四個資料庫是mysql中自帶的,也就是必須的.
SHOW DATABASES;
4、創建名為test_1的資料庫
格式:CREATE DATABASE 資料庫名
CREATE DATABASE test_1;
5、刪除名為test_1的資料庫
格式:DROP DATABASE 資料庫名
DROP DATABASE test_1;
總結:學習了對資料庫的三個操作,1、查看所有資料庫 2、創建資料庫 3、刪除資料庫
三、數據表的基本操作
數據表和資料庫還有Mysql三者的關系
mysql中保存了很多資料庫、一個資料庫中可以保存很多表。
對數據表的增(創建表)刪(刪除表)改(修改表欄位)查(查詢表結構)。 注意:這里的操作對象是表,對表的操作也就是表的結構,和表中的欄位的操作(欄位和記錄要分清楚)
前提:表是在資料庫下的,所以要先確實使用哪個資料庫。
USE test_1;
1、創建數據表
格式:CREATE TABLE 數據表名(
欄位名1數據類型[列級別約束條件],
欄位名2數據類型[列級別約束條件],
欄位名3數據類型[列級別約束條件]
);
注意:格式不一定需要這樣隔著寫,完全可以全部寫成一行。但是那樣寫可觀性非常差。我這樣寫只是為了可以看的更清晰。
解釋:
1、[]中括弧中的內容表示可以有可以沒有,
2、列級別這個「列」一定要搞清楚說的是什麼,一張表中有行有列,列表示豎,行表示橫
3、約束條件後面會講到
1.1、創建沒有約束的student表
CREATE TABLE student( idINT(11), nameVARCHAR(12), ageINT(11) );
注釋:SHOW TABLES 查詢資料庫底下的所有表。
1.2、創建有約束的student表
六大約束:主鍵約束、外鍵約束、非空約束、唯一約束、默認約束、自動增加
1.2.1:主鍵約束
PRIMARY KEY(primary key):獨一無二(唯一)和不能為空(非空),通俗的講,就是在表中增加記錄時,在該欄位下的數據不能重復,不能為空,比如以上面創建的表為例子,在表中增加兩條記錄,如果id欄位用了主鍵約束。則id不能一樣,並且不能為空。一般每張表中度有一個欄位為主鍵,唯一標識這條記錄。以後需要找到該條記錄也可以同這個主鍵來確認記錄,因為主鍵是唯一的,並且非空,一張表中每個記錄的主鍵度不一樣,所以根據主鍵也就能找到對應的記錄。而不是多條重復的記錄。如果沒有主鍵,那麼表中就會存在很多重復的記錄,那麼即浪費存儲空間,在查詢時也消耗更多資源。
一般被主鍵約束了的欄位度習慣性的稱該欄位為該表的主鍵
單欄位主鍵約束
兩種方式都可以
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12),nameVARCHAR(12),
ageINT(11) ageINT(11),
);PRIMARY KEY(id) );
多欄位主鍵約束(復合主鍵)
這個id和name都市主鍵,說明在以後增加的插入的記錄中,id和name不能同時一樣,比如說可以是這樣。一條記錄為id=1,name=yyy、另一條記錄為:id=1,name=zzz。 這樣是可以的。並不是你們所理解的兩個欄位分別度不可以相同。
CREATE TABLE student(CREATE TABLE student(
idINT(11) PRIMARY KEY,idINT(11),
nameVARCHAR(12) PRIMARY KEY,nameVARCHAR(12),
ageINT(11)ageINT(11),
);PRIMARY KEY(id,name) );
1.2.2:外鍵約束
什麼是外鍵舉個例子就清楚了,有兩張表,一張表是emp(員工)表,另一張表是dept(部門)表,一個員工屬於一個部門,那麼如何通過員工能讓我們自己他在哪個部門呢?那就只能在員工表中增加一個欄位,能代表員工所在的部門,那該欄位就只能是存儲dept中的主鍵了(因為主鍵是唯一的,才能確實是哪個部門,進而代表員工所在的部門,如果是部門名稱,有些部門的名稱可能是同名。就不能區分了。),像這樣的欄位,就符合外鍵的特點,就可以使用外鍵約束,使該欄位只能夠存儲另一張表的主鍵。如果不被外鍵約束,那麼該欄位就無法保證存儲進來的值就一定是另一張表的主鍵值。
外鍵約束的特點:
1、外鍵約束可以描述任意一個欄位(包括主鍵),可以為空,並且一個表中可以有多個外鍵。但是外鍵欄位中的值必須是另一張表中的主鍵。
2、這樣被外鍵關聯的兩種表的關系可以稱為父子表或者主從表。子表(從表)擁有外鍵欄位的表,父表(主表)被外鍵欄位所指向的表。
3、子表被外鍵約束修飾的欄位必須和父表的主鍵欄位的類型一樣。
注意:一個表中有被外鍵修飾的欄位,就稱該表有外鍵(是「有外鍵」。而不是「是外鍵」),並會給該表中的外鍵約束取一個名稱,所以我們常說的這個表有沒有外鍵,指的不是被外鍵約束修飾的欄位名,而是指這個表是否有存在外鍵約束。也就是說,不能說這個表的外鍵是xxx(該表中被外鍵約束修飾的欄位名),這種說法是錯誤的,但是大多數人已經習慣了這樣,雖然影響不大,但是在很多時候需要理解一個東西時,會造成一定的困擾。
格式:CONSTRAINT外鍵名稱FOREIGN KEY(被外鍵約束的欄位名稱)REFERENCES 主表名(主鍵欄位)
英文解釋:CONSTRAINT:約束REFERENCES:參考
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22),
location VARCHAR(50),
PRIMARY KEY(id)
);
CREATE TABLE tableB
(
id INT(11),
name VARCHAR(22) NOT NULL,
deptId INT(11),
PRIMARY KEY(id),
CONSTRAINT tableA_tableB_1 FOREIGH KEY(deptId) REFERENCES tableA(id)
);
解釋:tableB中有一個名為tableA_tableB_1的外鍵關聯了tableA和tableB兩個表,被外鍵約束修飾的欄位為tableB中的deptId,主鍵欄位為tableA中的id
1.2.3:非空約束
NOT NULL. 被該約束修飾了的欄位,就不能為空,主鍵約束中就包括了這個約束
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) NOT NULL,
location VARCHAR(50),
PRIMARY KEY(id)
);
1.2.4:唯一約束
UNIQUE 被唯一約束修飾了的欄位,表示該欄位中的值唯一,不能有相同的值,通俗點講,就好比插入兩條記錄,這兩條記錄中處於該欄位的值不能是一樣的。
CREATE TABLE tableA
(
id INT(11),
name VARCHAR(22) UNIQUE,
location VARCHAR(50),
PRIMARY KEY(id)
);
也就是說在插入的記錄中,每條記錄的name值不能是一樣的。
1.2.5:默認約束
Default 指定這一列的默認值為多少,比如,男性同學比較多,性別就可以設置為默認男,如果插入一行記錄時,性別沒有填,那麼就默認加上男
CREATE TABLE table
(
id INT(11) PRIMARY KEY,
name VARCHAR(22) NOT NULL,
deptId INT(11) DEFAULT 1111,
salary FLOAT
);
1.2.6:自動增加
AUTO_INCREMENT 一個表只能一個欄位使用AUTO_INCREMENT,並且使用這個約束的欄位只能是整數類型(任意的整數類型 TINYINT,SMALLIN,INT,BIGINT),默認值是1,也就是說從1開始增加的。一般就是給主鍵使用的,自動增加,使每個主鍵的值度不一樣,並且不用我們自己管理,讓主鍵自己自動生成
CREATE TABLE table ( id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(22) NOT NULL );
2、查詢表結構
2.1、查看錶基本結構語句
格式1:DESCRIBE 表名/DESC 表名這兩個的功能是一樣的,簡寫了單詞describe
DESCRIBEstudent;
2.2、查看創建表的語句
格式:SHOW CREATE TABLE 表名
SHOW CREATE TABLE student;
這樣顯示的格式很不好,看不清楚,所以有了下面這個語句
格式:SHOW CREATE TABLE 表名\G
SHOW CREATE TABLE student\G;
3、修改數據表
修改數據表包括:對表中欄位的增加、刪除、修改。 在這個裡面用的關鍵字為 ALTER
3.1、修改表名
格式:ALTER TABLE<舊表名> RENAME[TO]<新表名>;
將student表名改為student1(改完後在改回來)
ALTER TABLE student RENAME TO student1;
3.2、修改表中的欄位名
格式:ALTER TABLE<表名> CHANGE<舊欄位名><新欄位名><新數據類型>
將student表中的name欄位名改為 username
ALTER TABLE student CHANGE name username VARCHAR(30);
3.3、修改表中的數據類型
格式:ALTER TABLE<表名> MODIFY<欄位名><數據類型>
ALTER TABLE student MODIFY username VARCHAR(20);
解釋:只能修改欄位名的數據類型,但是其原理跟上面change做的事情一樣,這里也有修改欄位名的過程,只不過修改後的欄位名和修改前的欄位名相同,但是數據類型不一樣。
3.4、修改欄位的排列位置
方式1:ALTER TABLE<表名> MODIFY<欄位1><數據類型> FIRST|AFTER<欄位2>
解釋:將欄位1的位置放到第一,或者放到指定欄位2的後面
ALTER TABLE student MODIFY username VARCHAR(20) AFTER age;
方式2:ALTER TABLE<表名> CHANGE<欄位1><欄位2><數據類型> FIRST|AFTER<欄位3>
解釋:其實是一樣的,將是欄位2覆蓋欄位1,然後在進行排序
ALTER TABLE student CHANGE username username VARCHAR(20) AFTER age;
總結
CHANGE和MODIFY的區別?
原理都市一樣的,MODIFY只能修改數據類型,但是CHANGE能夠修改數據類型和欄位名,也就是說MODIFY是CHANGE的更具體化的一個操作。可能覺得用CHANGE只改變一個數據類型不太爽,就增加了一個能直接改數據類型的使用關鍵字MODIFY來操作。
3.5、添加欄位
格式:ALTER TABLE<表名稱> ADD<新欄位名><數據類型>[約束條件][FIRST|AFTER<已存在的表名>]
解釋:在一個特定位置增加一個新的欄位,如果不指定位置,默認是最後一個。
ALTER TABLE student ADD sex VARCHAR(11);
3.6、刪除欄位
格式:ALTER TABLE<表名稱> DROP<欄位名>;
ALTER TABLE student DROP sex;
3.7、刪除表的外鍵約束
格式:ALTER TABLE<表名稱> DROP FOREIGN KEY<外鍵約束名>
注意:外鍵約束名 指的不是被外鍵約束修飾的欄位名,切記,而是我們在創建外鍵約束關系時取的名字。
3.8、更改表的存儲引擎
格式:ALTER TABLE<表名> ENGINE=<更改後的存儲引擎名>
這個存儲引擎目前我自己也不太清楚,雖然知道有哪幾種引擎,但是稍微深入一點就不清楚了,所以打算留到日後在說。
4、刪除表
4.1、刪除無關聯表
格式:DROP TABLE<表名>;
ALTER TABLE student;
4.2、刪除被其他表關聯的主表
這個是比較重要的一點,在有外鍵關聯關系的兩張表中,如果刪除主表,那麼是刪不掉的,並且會報錯。因為有張表依賴於他。那怎麼辦呢?針對這種情況,總共有兩種方法
1、先刪除你子表,然後在刪除父表,這樣就達到了刪除父表的目的,但是子表也要被刪除
2、先解除外鍵關系,然後在刪除父表,這樣也能達到目的,並且保留了子表,只刪除我們不需要的父表。在3.7中就講解了如何刪除外鍵關系。
『貳』 mysql命令是什麼
MySQL是一種關系型資料庫管理系統,關系資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
MySQL 是最流行的關系型資料庫管理系統之一,在WEB應用方面,MySQL是最好的RDBMS(Relational Database Management System,關系資料庫管理系統) 應用軟體之一。
相關信息:
MySQL是一種關系型資料庫管理系統,關系資料庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。
MySQL所使用的 SQL 語言是用於訪問資料庫的最常用標准化語言。MySQL 軟體採用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作為網站資料庫。
『叄』 mysql常用查詢命令
1. SELECT:查詢內容,語法:SELECT 列名稱 FROM 表名稱
2. SELECT DISTINCT 查詢非重復內容,語法:SELECT DISTINCT 列名稱 FROM 表名稱
3. WHERE 查詢條件, 子句中可以指定任何條件,條件與條件之間用and 和 or 隔開
語法:SELECT 列名稱 FROM 表名稱 WHERE條件1 AND 條件2
4. AND 和 OR 運算符,將 WHERE 中的多個條件結合起來。操作符包括:=(等於)、<>或=!(不等於)、>(大於)、<(小於)、>=(大於等於)、<=(小於等於)
空值條件:IS NULL;非空值IS NOT NULL;查詢多個值IN()
5. ORDER BY 排序,默認為升序,欄位後加DESC為降序
6. GROUP BY 分組 ,對結果進行分組
7. LEFT JOIN 左連接,兩張表合並保留左表的全部內容,只要掌握左連接
語法:SELECT列名稱 FROM 表1 LEFT JOIN 表2 ON 表1.某列 = 表2.某列
了解:RIGHT JOIN(右連接),INNER JOIN(內連接)、FULL JOIN(全連接)
8. UNION all上下合並,兩張表上下合並(了解)
9. LIKE 模糊查詢(了解)
語法: SELECT 列名稱 FROM 表名稱 WHERE 某列 like 「%字元%」
10.SUM 求和
語法:SELECT SUM(列名稱) FROM 表名稱
11. COUNT 計數
語法:SELECT COUNT(列名稱) FROM 表名稱
12. IF 判斷 語法:同excel
13. MIN,MAX等
14. round 四捨五入
15. concat 字元串連接
16. UPDATE:修改內容,語法:update 表名 set 修改欄位= 新內容 where 修改條件
17. substring 字元串截取
18. cast 定義數值類型(了解)
19. CASE … WHEN … THEN …. END 滿足某一個條件時執行/替換,可用於條件計數
20. DATEDIFF 兩個日期之間間隔的天數
21. SUBDATE 日期往前數 ,語法:SUBDATE(date,INTERVAL expr unit)
例子:SUBDATE(「2018-10-1」,INTERVAL 1 day) 代表10月1日往前數1天,結果是9月30;SUBDATE(「2018-10-1」,INTERVAL 1 month) 代表10月1日往前數1月,結果是2018-9-1
『肆』 mysql資料庫中最常用的幾個命令
Mysql常用命令行大全 機 第一招、mysql服務的啟動和停止 net stop mysql net start mysql 第二招、登陸mysql 語法如下: mysql -u用戶名 -p用戶密碼 鍵入命令mysql -uroot -p, 回車後提示你輸入密碼,輸入12345,然後回車即可進入到mysql中了,mysql的提示符是: mysql> 注意,如果是連接到另外的機器上,則需要加入一個參數-h機器IP 第三招、增加新用戶 格式:grant 許可權 on 資料庫.* to 用戶名@登錄主機 identified by "密碼" 如,增加一個用戶user1密碼為password1,讓其可以在本機上登錄, 並對所有資料庫有查詢、插入、修改、刪除的許可權。首先用以root用戶連入mysql,然後鍵入以下命令: grant select,insert,update,delete on *.* to user1@localhost Identified by "password1"; 如果希望該用戶能夠在任何機器上登陸mysql,則將localhost改為"%"。 如果你不想user1有密碼,可以再打一個命令將密碼去掉。 grant select,insert,update,delete on mydb.* to user1@localhost identified by ""; 第四招: 操作資料庫 登錄到mysql中,然後在mysql的提示符下運行下列命令,每個命令以分號結束。 1、 顯示資料庫列表。 show databases; 預設有兩個資料庫:mysql和test。 mysql庫存放著mysql的系統和用戶許可權信息,我們改密碼和新增用戶,實際上就是對這個庫進行操作。 2、 顯示庫中的數據表: use mysql; show tables; 3、 顯示數據表的結構: describe 表名; 4、 建庫與刪庫: create database 庫名; drop database 庫名; 5、 建表: use 庫名; create table 表名(欄位列表); drop table 表名; 6、 清空表中記錄: delete from 表名; 7、 顯示表中的記錄: select * from 表名; 第五招、導出和導入數據 1. 導出數據: mysqlmp --opt test > mysql.test 即將資料庫test資料庫導出到mysql.test文件,後者是一個文本文件 如:mysqlmp -u root -p123456 --databases dbname > mysql.dbname 就是把資料庫dbname導出到文件mysql.dbname中。 2. 導入數據: mysqlimport -u root -p123456 < mysql.dbname。 不用解釋了吧。 3. 將文本數據導入資料庫: 文本數據的欄位數據之間用tab鍵隔開。 use test; load data local infile "文件名" into table 表名; 1:使用SHOW語句找出在伺服器上當前存在什麼資料庫: mysql> SHOW DATABASES; 2:2、創建一個資料庫MYSQLDATA mysql> CREATE DATABASE MYSQLDATA; 3:選擇你所創建的資料庫 mysql> USE MYSQLDATA; (按回車鍵出現Database changed 時說明操作成功!) 4:查看現在的資料庫中存在什麼表 mysql> SHOW TABLES; 5:創建一個資料庫表 mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1)); 6:顯示表的結構: mysql> DESCRIBE MYTABLE; 7:往表中加入記錄 mysql> insert into MYTABLE values ("hyq","M"); 8:用文本方式將數據裝入資料庫表中(例如D:/mysql.txt) mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE; 9:導入.sql文件命令(例如D:/mysql.sql) mysql>use database; mysql>source d:/mysql.sql; 10:刪除表 mysql>drop TABLE MYTABLE; 11:清空表 mysql>delete from MYTABLE; 12:更新表中數據 mysql>update MYTABLE set sex="f" where name='hyq'; posted on 2006-01-10 16:21 happytian 閱讀(6) 評論(0) 編輯 收藏 收藏至365Key 13:備份資料庫 mysqlmp -u root 庫名>xxx.data 14:例2:連接到遠程主機上的MYSQL 假設遠程主機的IP為:110.110.110.110,用戶名為root,密碼為abcd123。則鍵入以下命令: mysql -h110.110.110.110 -uroot -pabcd123 (注:u與root可以不用加空格,其它也一樣) 3、退出MYSQL命令: exit (回車)
『伍』 mysql中的命令show tables, desc table有什麼區別
show tables和desc table作用不用,show tables作用顯示資料庫中有哪些數據表,而desc table需要加表名等參數,作用是是顯示數據表的表都定義了哪些欄位,及各個欄位的類型大小,及哪些是主鍵,哪些有約束條件,以及各個欄位是否定義了默認值。
(5)mysql常用命令總結擴展閱讀:
mysql常用命令
使用SHOW語句找出在伺服器上當前存在什麼資料庫:SHOW DATABASES。
創建一個資料庫MYSQLDATA:CREATE DATABASE MYSQLDATA。
選擇你所創建的資料庫:USE MYSQLDATA; (按回車鍵出現Database changed 時說明操作成功!)
查看現在的資料庫中存在什麼表:SHOW TABLES。
創建一個資料庫表: CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1))。
顯示表的結構: DESCRIBE MYTABLE。
往表中加入記錄:mysql> insert into MYTABLE values (」hyq」,」M」)。
用文本方式將數據裝入資料庫表中(例如D:/mysql.txt):LOAD DATA LOCAL INFILE 「D:/mysql.txt」 INTO TABLE MYTABLE。
導入sql文件命令(例如D:/mysql.sql):use database;source d:/mysql.sql。
刪除表:drop TABLE MYTABLE。
清空表:delete from MYTABLE。
更新表中數據:update MYTABLE set sex=」f」 where name=』hyq』。
參考資料來源:網路-MySQL資料庫
『陸』 MySQL資料庫的常用命令
1:使用SHOW語句找出在伺服器上當前存在什麼資料庫:
mysql> SHOW DATABASES;
2:2、創建一個資料庫MYSQLDATA
mysql> CREATE DATABASE MYSQLDATA;
3:選擇你所創建的資料庫
mysql> USE MYSQLDATA; (按回車鍵出現Database changed 時說明操作成功!)
4:查看現在的資料庫中存在什麼表
mysql> SHOW TABLES;
5:創建一個資料庫表
mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
6:顯示表的結構:
mysql> DESCRIBE MYTABLE;
7:往表中加入記錄
mysql> insert into MYTABLE values (」hyq」,」M」);
8:用文本方式將數據裝入資料庫表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE 「D:/mysql.txt」 INTO TABLE MYTABLE;
9:導入.sql文件命令(例如D:/mysql.sql)
mysql>use database;
mysql>source d:/mysql.sql;
10:刪除表
mysql>drop TABLE MYTABLE;
11:清空表
mysql>delete from MYTABLE;
12:更新表中數據
mysql>update MYTABLE set sex=」f」 where name=』hyq』;
全局管理許可權對應解釋:
FILE: 在MySQL伺服器上讀寫文件。
PROCESS: 顯示或殺死屬於其它用戶的服務線程。
RELOAD: 重載訪問控製表,刷新日誌等。
SHUTDOWN: 關閉MySQL服務。
資料庫/數據表/數據列許可權:
ALTER: 修改已存在的數據表(例如增加/刪除列)和索引。
CREATE: 建立新的資料庫或數據表。
DELETE: 刪除表的記錄。
DROP: 刪除數據表或資料庫。
INDEX: 建立或刪除索引。
INSERT: 增加表的記錄。
SELECT: 顯示/搜索表的記錄。
UPDATE: 修改表中已存在的記錄。
特別的許可權:
ALL: 允許做任何事(和root一樣)。
USAGE: 只允許登錄–其它什麼也不允許做。
『柒』 MySQL的基本命令
啟動:net start mySql;
進入:mysql -u root -p/mysql -h localhost -u root -p databaseName;
列出資料庫:show databases;
選擇資料庫:use databaseName;
列出表格:show tables;
顯示表格列的屬性:show columns from tableName;
建立資料庫:source fileName.txt;
匹配字元:可以用通配符_代表任何一個字元,%代表任何字元串;
增加一個欄位:alter table tabelName add column fieldName dateType;
增加多個欄位:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType;
多行命令輸入:注意不能將單詞斷開;當插入或更改數據時,不能將欄位的字元串展開到多行里,否則硬回車將被儲存到數據中;
增加一個管理員帳戶:grant all on *.* to user@localhost identified by "password";
每條語句輸入完畢後要在末尾填加分號';',或者填加'\g'也可以;
查詢時間:select now();
查詢當前用戶:select user();
查詢資料庫版本:select version();
查詢當前使用的資料庫:select database();
1、刪除student_course資料庫中的students數據表:
rm -f student_course/students.*
2、備份資料庫:(將資料庫test備份)
mysqlmp -u root -p test>c:\test.txt
備份表格:(備份test資料庫下的mytable表格)
mysqlmp -u root -p test mytable>c:\test.txt
將備份數據導入到資料庫:(導回test資料庫)
mysql -u root -p test
3、創建臨時表:(建立臨時表zengchao)
create temporary table zengchao(name varchar(10));
4、創建表是先判斷表是否存在
create table if not exists students(……);
5、從已經有的表中復製表的結構
create table table2 select * from table1 where 1<>1;
6、復製表
create table table2 select * from table1;
7、對表重新命名
alter table table1 rename as table2;
8、修改列的類型
alter table table1 modify id int unsigned;//修改列id的類型為int unsigned
alter table table1 change id sid int unsigned;//修改列id的名字為sid,而且把屬性修改為int unsigned
9、創建索引
alter table table1 add index ind_id (id);
create index ind_id on table1 (id);
create unique index ind_id on table1 (id);//建立唯一性索引
10、刪除索引
drop index idx_id on table1;
alter table table1 drop index ind_id;
11、聯合字元或者多個列(將列id與":"和列name和"="連接)
select concat(id,':',name,'=') from students;
12、limit(選出10到20條)<第一個記錄集的編號是0>
select * from students order by id limit 9,10;
13、MySQL不支持的功能
事務,視圖,外鍵和引用完整性,存儲過程和觸發器
14、MySQL會使用索引的操作符號
<,<=,>=,>,=,between,in,不帶%或者_開頭的like
15、使用索引的缺點
1)減慢增刪改數據的速度;
2)佔用磁碟空間;
3)增加查詢優化器的負擔;
當查詢優化器生成執行計劃時,會考慮索引,太多的索引會給查詢優化器增加工作量,導致無法選擇最優的查詢方案;
16、分析索引效率
方法:在一般的SQL語句前加上explain;
分析結果的含義:
1)table:表名;
2)type:連接的類型,(ALL/Range/Ref)。其中ref是最理想的;
3)possible_keys:查詢可以利用的索引名;
4)key:實際使用的索引;
5)key_len:索引中被使用部分的長度(位元組);
6)ref:顯示列名字或者"const"(不明白什麼意思);
7)rows:顯示MySQL認為在找到正確結果之前必須掃描的行數;
8)extra:MySQL的建議;
17、使用較短的定長列
1)盡可能使用較短的數據類型;
2)盡可能使用定長數據類型;
a)用char代替varchar,固定長度的數據處理比變長的快些;
b)對於頻繁修改的表,磁碟容易形成碎片,從而影響資料庫的整體性能;
c)萬一出現數據表崩潰,使用固定長度數據行的表更容易重新構造。使用固定長度的數據行,每個記錄的開始位置都是固定記錄長度的倍數,可以很容易被檢測到,但是使用可變長度的數據行就不一定了;
d)對於MyISAM類型的數據表,雖然轉換成固定長度的數據列可以提高性能,但是占據的空間也大;
18、使用not null和enum
盡量將列定義為not null,這樣可使數據的出來更快,所需的空間更少,而且在查詢時,MySQL不需要檢查是否存在特例,即null值,從而優化查詢;
如果一列只含有有限數目的特定值,如性別,是否有效或者入學年份等,在這種情況下應該考慮將其轉換為enum列的值,MySQL處理的更快,因為所有的enum值在系統內都是以標識數值來表示的;
19、使用optimize table
對於經常修改的表,容易產生碎片,使在查詢資料庫時必須讀取更多的磁碟塊,降低查詢性能。具有可變長的表都存在磁碟碎片問題,這個問題對blob數據類型更為突出,因為其尺寸變化非常大。可以通過使用optimize table來整理碎片,保證資料庫性能不下降,優化那些受碎片影響的數據表。 optimize table可以用於MyISAM和BDB類型的數據表。實際上任何碎片整理方法都是用mysqlmp來轉存數據表,然後使用轉存後的文件並重新建數據表;
20、使用procere analyse()
可以使用procere analyse()顯示最佳類型的建議,使用很簡單,在select語句後面加上procere analyse()就可以了;例如:
select * from students procere analyse();
select * from students procere analyse(16,256);
第二條語句要求procere analyse()不要建議含有多於16個值,或者含有多於256位元組的enum類型,如果沒有限制,輸出可能會很長;
21、使用查詢緩存
1)查詢緩存的工作方式:
第一次執行某條select語句時,伺服器記住該查詢的文本內容和查詢結果,存儲在緩存中,下次碰到這個語句時,直接從緩存中返回結果;當更新數據表後,該數據表的任何緩存查詢都變成無效的,並且會被丟棄。
2)配置緩存參數:
變數:query_cache _type,查詢緩存的操作模式。有3中模式,0:不緩存;1:緩存查詢,除非與 select sql_no_cache開頭;2:根據需要只緩存那些以select sql_cache開頭的查詢; query_cache_size:設置查詢緩存的最大結果集的大小,比這個值大的不會被緩存。
22、調整硬體
1)在機器上裝更多的內存;
2)增加更快的硬碟以減少I/O等待時間;
尋道時間是決定性能的主要因素,逐字地移動磁頭是最慢的,一旦磁頭定位,從磁軌讀則很快;
3)在不同的物理硬碟設備上重新分配磁碟活動;
如果可能,應將最繁忙的資料庫存放在不同的物理設備上,這跟使用同一物理設備的不同分區是不同的,因為它們將爭用相同的物理資源(磁頭)。
『捌』 mysql基本操作有哪些
mysql基本操作有:
命令行
1、顯示當前資料庫伺服器中的資料庫列表:mysql> SHOW DATABASES;
2、建立資料庫:mysql> CREATE DATABASE 庫名;
3、建立數據表:mysql> USE 庫名;mysql> CREATE TABLE 表名 (欄位名 VARCHAR(20), 欄位名 CHAR(1));
4、刪除資料庫:mysql> DROP DATABASE 庫名;
5、刪除數據表:mysql> DROP TABLE 表名;
6、將表中記錄清空:mysql> DELETE FROM 表名;
7、往表中插入記錄:mysql> INSERT INTO 表名 VALUES ("hyq","M");
8、更新表中數據:mysql-> UPDATE 表名 SET 欄位名1='a',欄位名2='b' WHERE 欄位名3='c';
9、用文本方式將數據裝入數據表中:mysql> load data local infile "d:/mysql.txt" into table 表名;
10、導入.sql文件命令:mysql> USE 資料庫名;mysql> source d:/mysql.sql;
11、命令行修改root密碼:mysql> update mysql.user set password=password('新密碼') where user='root';mysql> flush privileges;
12.修改密碼的三種方法:mysql>update user set password=password('123456') where user='joy_pen';mysql>flush privileges;mysql>set password for 'joy_oen'=password('123456');mysql>grant usage on *.* to 'joy_pen' identified by '123456';
1、創建資料庫
命令:create database <資料庫名> 例如:建立一個名為xhkdb的資料庫mysql> create database xhkdb;
2、顯示所有的資料庫
命令:show databases (注意:最後有個s)mysql> show databases;
3、刪除資料庫
命令:drop database <資料庫名> 例如:刪除名為 xhkdb的資料庫mysql> drop database xhkdb;
4、連接資料庫
命令: use <資料庫名> 例如:如果xhkdb資料庫存在,嘗試存取它:mysql> use xhkdb; 屏幕提示:Database changed
5、當前選擇(連接)的資料庫mysql> select database();
6、當前資料庫包含的表信息:mysql> show tables; (注意:最後有個s)
三、表操作,操作之前應連接某個資料庫
1、建表
命令:create table <表名> ( <欄位名1> <類型1> [,..<欄位名n> <類型n>]);
mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default ''0'',
> degree double(16,2));
2、獲取表結構
命令: desc 表名,或者show columns from 表名
mysql>DESCRIBE MyClass
mysql> desc MyClass;
mysql> show columns from MyClass;
3、刪除表
命令:drop table <表名>
例如:刪除表名為 MyClass 的表 mysql> drop table MyClass;
4、插入數據
命令:insert into <表名> [( <欄位名1>[,..<欄位名n > ])] values ( 值1 )[, ( 值n )]
例如,往表 MyClass中插入二條記錄, 這二條記錄表示:編號為1的名為Tom的成績為96.45, 編號為2 的名為Joan 的成績為82.99,編號為3 的名為Wang 的成績為96.5.
mysql> insert into MyClass values(1,'Tom',96.45),(2,'Joan',82.99), (2,'Wang', 96.59);
5、查詢表中的數據
1)、查詢所有行
命令: select <欄位1,欄位2,...> from < 表名 > where < 表達式 >
例如:查看錶 MyClass 中所有數據 mysql> select * from MyClass;
2)、查詢前幾行數據
例如:查看錶 MyClass 中前2行數據
mysql> select * from MyClass order by id limit 0,2;
6、刪除表中數據
命令:delete from 表名 where 表達式
例如:刪除表 MyClass中編號為1 的記錄
mysql> delete from MyClass where id=1;
7、修改表中數據:update 表名 set 欄位=新值,… where 條件
mysql> update MyClass set name=''Mary'' where id=1;
8、在表中增加欄位:
命令:alter table 表名 add 欄位 類型 其他;
例如:在表MyClass中添加了一個欄位passtest,類型為int(4),默認值為0
mysql> alter table MyClass add passtest int(4) default ''0''
9、更改表名:
命令:rename table 原表名 to 新表名;
例如:在表MyClass名字更改為YouClass
mysql> rename table MyClass to YouClass;
更新欄位內容
update 表名 set 欄位名 = 新內容
update 表名 set 欄位名 = replace(欄位名,''舊內容'',''新內容'');
『玖』 mysql常用命令都有哪些
1.導出整個資料庫
mysqlmp-u用戶名-p–default-character-set=latin1資料庫名》導出的文件名(資料庫默認編碼是latin1)23mysqlmp-uwcnc-psmgp_apps_wcnc》wcnc.sql
2.導出一個表
mysqlmp-u用戶名-p資料庫名表名》導出的文件名23mysqlmp-uwcnc-psmgp_apps_wcncusers》wcnc_users.sql
3.導出一個資料庫結構
mysqlmp-uwcnc-p-d–add-drop-tablesmgp_apps_wcnc》d:wcnc_db.sql23-d沒有數據–add-drop-table在每個create語句之前增加一個droptable
4.導入資料庫
A:常用source命令23進入mysql資料庫控制台,45如mysql-uroot-p67mysql》use資料庫89然後使用source命令,後面參數為腳本文件(如這里用到的.sql)1011mysql》sourcewcnc_db.sql1213B:使用mysqlmp命令1415mysqlmp-uusername-pdbname《filename.sql1617C:使用mysql命令1819mysql-uusername-p-Ddbname《filename.sql啟動與退出
1、進入MySQL:啟動MySQLCommandLineClient(MySQL的DOS界面),直接輸入安裝時的密碼即可。此時的提示符是:mysql》
2、退出MySQL:quit或exit
5.創建資料庫
命令:createdatabase《資料庫名》
例如:建立一個名為xhkdb的資料庫
mysql》createdatabasexhkdb;
6.顯示所有的資料庫
命令:showdatabases(注意:最後有個s)
mysql》showdatabases;
7.刪除資料庫
命令:dropdatabase《資料庫名》
8.連接資料庫
命令:use《資料庫名》
例如:如果xhkdb資料庫存在,嘗試存取它:
9.查看當前使用的資料庫
mysql》selectdatabase();
10.當前資料庫包含的表信息:
mysql》showtables;(注意:最後有個s)
『拾』 那有比較全的MySql命令啊
1. 連接mysql:
mysqlbinmysql -h主機地址 -u 用戶名 -p 用戶密碼
2.退出mysql:exit
3. 修改密碼:
mysqlbinmysqladmin -uroot -p(oldpassword) password newpassword
4.增加用戶:
添加一個用戶test1 密碼為ABC;讓他可以在任何主機上登錄,並對所有資料庫有查詢、插入、修改、刪除的許可權。首先用以root用戶連入
mysql,然後鍵入以下命令:grant select,insert,update,delete on *.* to test1@"%" Identified
by "abc";
增加一個用戶test2密碼為abc,讓其只可以在localhost上登錄,並可以對資料庫mydb進行查詢、插入、修改、刪除的操作(localhost指本地
主機,即mysql資料庫所在的那台主機),這樣用戶即使用知道test2的密碼,也無法從internet上直接訪問資料庫,只能通過mysql主機上的web頁
來訪問了。grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
增加一個可以從任何地方連接伺服器的一個完全的超級用戶
grant all privileges on *.* to test3@"%" identified by 'password' with grant option;
5.刪除授權
revoke select,insert,update,delete om *.* from test2@localhost ;
--------------------------------------------------------
6.顯示資料庫
show databases;
7.顯示資料庫中的表
use dataname;
show tables;
8.顯示表的結構
describe tablesname;
9.建庫
create database 庫名;
10.建表
use dataname;
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
); //建表結束
//以下為插入欄位
insert into teacher values('','glchengang','深圳一中','1976-10-10');
insert into teacher values('','jack','深圳一中','1975-12-23');
註:在建表中
(1) 將ID設為長度為3的數字欄位:int(3),並讓它每個記錄自動加一: auto_increment,
並不能為空:not null,而且讓它成為主欄位primary key
(2) 將NAME設為長度為10的字元欄位
(3) 將ADDRESS設為長度50的字元欄位,而且預設值為深圳。varchar和char有什麼區別
呢,只有等以後的文章再說了。
(4) 將YEAR設為日期欄位。
如果你在mysql提示符鍵入上面的命令也可以,但不方便調試。 你可以將以上命令
原樣寫入一個文本文件中假設為school.sql,然後復制到c:下,並在DOS狀態進入目錄
mysql in,然後鍵入以下命令:
mysql -uroot -p密碼 < c:school.sql
如果成功,空出一行無任何顯示;如有錯誤,會有提示。(以上命令已經調試,你
只要將//的注釋去掉即可使用)。
11.刪除庫和刪除表
drop dataname;
drop tablename;
12.將表中的記錄清空
delete from tablename;
13.顯示表中的記錄
select * from tablename;
14.表重命名
alter table t1 rename t2
---------------------------------------------------------
15. 備份資料庫
mysqlbinmysqlmp -h(ip) -uroot -p(password) databasename > database.sql
16. 恢復資料庫
mysqlbinmysql -h(ip) -uroot -p(password) databasename < database.sql
17.復制資料庫
mysqlmp --all-databases > all-databases.sal
18.備份表
mysqlbinmysqlmp -h(ip) -uroot -p(password) databasename tablename > tablename.sql
19.恢復表(操作前先把原來的表刪除)
mysqlbinmysql -h(ip) -uroot -p(password) databasename tablename < tablename.sql
----------------------------------------------------------
20.為了改變列a,從INTEGER改為TINYINT NOT NULL(名字一樣),
並且改變列b,從CHAR(10)改為CHAR(20),同時重命名它,從b改為c:
ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);
增加一個新TIMESTAMP列,名為d:
ALTER TABLE t2 ADD d TIMESTAMP;
在列d上增加一個索引,並且使列a為主鍵:
ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);
刪除列c:
ALTER TABLE t2 DROP COLUMN c;
增加一個新的AUTO_INCREMENT整數列,命名為c:
ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,ADD INDEX (c);
注意,我們索引了c,因為AUTO_INCREMENT柱必須被索引,並且另外我們聲明c為NOT NULL,
因為索引了的列不能是NULL
---------------------------------------------------------------
21.數據的導入導出
A。mysqlimport
語法:mysqlbinmysqlimport database tables.txt( 文件名需要與表名相同)
參數:-d or --delete 新數據導入數據表中之前刪除數據數據表中的所有信息;
-f or --force 不管是否遇到錯誤,mysqlimport將強制繼續插入數據;
-i or --ignore mysqlimport跳過或者忽略那些有相同唯一關鍵字的行, 導入文件中的數據將被忽略;
-l or -lock-tables 數據被插入之前鎖住表,這樣就防止了, 你在更新資料庫時,用戶的查詢和更新受到影響;
--fields-enclosed- by= char
指定文本文件中數據的記錄時以什麼括起的, 很多情況下數據以雙引號括起。 默認的情況下數據是沒有被字元括起的。
--fields-terminated- by=char
指定各個數據的值之間的分隔符,在句號分隔的文件中,分隔符是句號。您可以用此選項指定數據之間的分隔符。默認的分隔符是跳格符
(Tab)
--lines-terminated- by=str
此選項指定文本文件中行與行之間數據的分隔字元串 或者字元。 默認的情況下mysqlimport以newline為行分隔符。 您可以選擇用一個字
符串來替代一個單個的字元: 一個新行或者一個回車。
mysqlimport命令常用的選項還有-v 顯示版本(version), -p 提示輸入密碼(password)等。
--------------------------------------------------------------
22.常用插入、修改、刪除語句
插入記錄:insert into teacher values('','glchengang','深圳一中','1976-10-10');
修改記錄:update mytable set single=′y′ where name=′abccs′;
刪除記錄:delete from mytable where name=′abc′;