Mysql數據庫基本操作(進入mysql\bin目錄下)注意在mysql控制台操作每句后要加分號 ;
初級篇
1、 進入數據庫 mysql -u 用戶名 -p 密碼
2、 導出數據庫 mysqldump -u 用戶名 -p 密碼 數據庫名(表名)> 路徑 備份.sql
3、 導入數據庫 mysql -u 用戶名 -p 密碼 數據庫名< 路徑 備份.sql
或者進入mysql,使用source 路徑 備份 此方法可以單獨導入表
4、 顯示所有數據庫 show databases;
5、 使用數據庫 use 數據庫名;
6、 顯示所有表 show tables;
7、 創建數據庫 create database 數據庫名;
8、 創建表 create table 表名(變量名 變量類型(大小)約束條件,變量名 變量類型(變量大小)約束條件,primary key(主鍵) );
9、 描述表 describe 表名;
10、向表中輸入數據 insert into 表名 values( );
11、select 列 from 表 order by 列 desc/asc
select count(*) from 表名 統計表中記錄總數
descending 降序排列的意思
ascending 升序排列
12、刪除表內容
delete from 表名
truncate table 表名
13、更新表內容
update table 表名 set=' ' where 條件
14、改變表結構
alter table 表名 add id int(10) 【列名 數據類型】 增加列
alter table 表名 drop id 【列名】 刪除列
alter table 表名 modify id int(6); 修改列
15、改變表名
rename table 表名1 to 表名2
16、查看數據庫、表創建信息
show create database 數據庫名
show create table 表名
17、過濾表中重復的信息
select distinct 列名 from 表名
進階篇
1、將選出內容新建表
create table 表名2(可定義列名以及類型) as select 列名,列名 from 表名2;
將選出結果插入某表
insert 表1 select 列名1,列名2,… From 表 2
2、select語句
select [all/distinct] 列名 from 表名 [where 搜索條件] [group by 組表達式] [having 條件][order by 列名][ASC|DESC]
選擇指定前幾條
select * from table(表名) limit m , n
m為第幾行開始,n為取幾條
選擇在指定范圍內記錄
select * from table(表名) where 列名 between value1 and value2
選擇在指定內容的記錄
select * from table(表名) where in / not in 列(value1,value2 …)
選擇指定類似內容
select * from table(表名) where 列名 like / not like 'string '
通配符 |
含義 |
% |
任意多個字符 |
_ |
單個字符 |
[ ] |
指定范圍內的單個字符 |
[ ^ ] |
不在指定范圍內的單個字符 |
選擇為空的記錄
select * from table(表名) where 列名 NULL/ not NULL
選擇結果統計
select 列名1 , count(列名2) from table(表名) group by 列名2 having 條件
函數名 |
功能 |
count |
求組中項數,返回整數 |
sum |
求和,返回表達式中所有值的和 |
avg |
求平均值,返回表達式中所有值的平均值 |
max |
求最大值,返回表達式中所有值的最大值 |
min |
求最小值,返回表達式中所有值的最小值 |
abs |
求絕對值,返回數值表達式的絕對值 |
ascii |
求ASCII碼,返回字符型數據的ASCII碼 |
rand |
產生隨機數,返回一個位於0-1之間的隨機數 |
| student | CREATE TABLE `student` (
`studno` int(5) NOT NULL auto_increment,
`studname` char(10) NOT NULL,
`studcourse` char(50) NOT NULL,
`studscore` float default '0',
PRIMARY KEY (`studno`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=gbk |
mysql> select * from student;
+--------+----------+------------+-----------+-----+
| studno | studname | studcourse | studscore | sex |
+--------+----------+------------+-----------+-----+
| 1 | 祖如輝 | 數據庫原理 | 90 | 男 |
| 2 | 馬斯洛 | 數據庫原理 | 80 | 男 |
| 3 | 莉莉 | 數據庫原理 | 94 | 女 |
| 4 | 加紅基 | 數據庫原理 | 99 | 男 |
| 5 | 馬三立 | 數據庫原理 | 69 | 男 |
| 6 | 郭冬臨 | 數據庫原理 | 65 | 男 |
| 7 | 想加你 | 數據庫原理 | 55 | 女 |
| 8 | 華正白 | 數據庫原理 | 95 | 男 |
| 9 | 黎明 | 數據庫原理 | 49 | 男 |
| 10 | 徐曉娟 | 數據庫原理 | 79 | 女 |
+--------+----------+------------+-----------+-----+
10 rows in set (0.00 sec)
mysql> select * from class;
+--------+------------------+-----------+
| studno | class | gradecode |
+--------+------------------+-----------+
| 1 | 計算機網絡工程 | 3 |
| 2 | 計算機網絡工程 | 1 |
| 3 | 計算機網絡工程 | 1 |
| 4 | 計算機科學與技術 | 3 |
| 5 | 計算機科學與技術 | 3 |
| 6 | 計算機科學與技術 | 1 |
| 7 | 計算機科學與技術 | 4 |
| 8 | 計算機科學與技術 | 2 |
| 9 | 計算機科學與技術 | 2 |
| 10 | 計算機軟件工程 | 2 |
+--------+------------------+-----------+
10 rows in set (0.00 sec)
選出 數據庫原理及格的女學生信息(包含學號,姓名,課程,成績)。
mysql> Select * from student where having (select from studscore student where sex='女' )>60;
創建表視圖
create view 視圖名 as select 列名 from 表名
創建索引
create unique index 索引列 on 表名(列名)
內聯接也叫自然聯接,它是組合兩個表的常用方法。內聯接將兩個表中的列進行比較,將兩個表中滿足聯接條件的行組合起來,作為結果。內聯接有兩種形式的語法: (注:多個表也可)
語法一:
SELECT 列名SELECT 列名 FROM 表1 [INNER] JOIN 表2 ON 表1.列 = 表2.列
語法二:
SELECT 列名FROM 表1,表2 WHERE 表1.列 = 表2.列
在內聯接中,只有在兩個表中匹配的行才能在結果集中出現。而在外聯接中可以只限制一個表,而對另外一個表不加限制(即不加限制的表的所有行都出現在結果集中)。
外聯接只能連接兩個表
外聯接分為左外聯接、右外聯接。
語法如下:SELECT 列名
FROM 表1 <LEFT|RIGHT > [OUTER] JOIN 表2 ON 表1.列 = 表2.列
聯接操作不僅可以在不同的表上進行,而且可以在同一張表內進行自身聯接,即將同一個表的不同行聯接起來。自聯接可以看作一張表的兩個副本之間的聯接。在自聯接中,必須為表指定兩個別名,使之在邏輯上成為兩張表。
是一種特殊類型的內聯接
l 為表名指定別名的方式:
- 在表名后面直接給出別名:表名 別名
- 在表名和別名之間添加AS關鍵字:表名 AS 別名
l MySQL的表別名中不能有特殊字符(如空格)
l 除了在內聯接時必須使用表別名之外,表別名也可用在其他的SQL語句中,以簡化SQL語句,提高語句的可讀性。
l 交叉聯接也叫非限制聯接,它將兩個表不加任何約束的組合起來。在數學上,就是兩個表的笛卡爾積。交叉聯接后得到的行數是兩個被聯接表的行數的乘積。
l 語法如下:SELECT 列名 FROM 表1 CROSS JOIN表2
或SELECT 列名 FROM 表1 ,表2
文檔下載地址:http://pan.baidu.com/share/link?shareid=417067953&uk=269845733