⑴ PHP編程:Mysql資料庫從A表選擇想要的項目插入B表
你可以設置一張臨時表,保存用戶進入這個頁面的順序。比如A君第1號,B君2號,A君編輯時,頁面顯示前面有0個人排隊。提交數據時,直接保存到A表。B君編輯頁面時,顯示前面還有1個人。保存數據時,顯示前面還有1個人。請排隊等待。當A君提交後,刪除A君排列的順序,造成B君前移一位。並自動保存B君數據。就可以實現排隊操作的功能。
⑵ 北大青鳥java培訓:mysql資料庫的優化方法
我們都知道,伺服器資料庫的開發一般都是通過java或者是PHP語言來編程實現的,而為了提高我們資料庫的運行速度和效率,資料庫優化也成為了我們每日的工作重點,今天,河北IT培訓http://www.kmbdqn.cn/就一起來了解一下mysql伺服器資料庫的優化方法。
為什麼要了解索引真實案例案例一:大學有段時間學習爬蟲,爬取了知乎300w用戶答題數據,存儲到mysql數據中。
那時不了解索引,一條簡單的「根據用戶名搜索全部回答的sql「需要執行半分鍾左右,完全滿足不了正常的使用。
案例二:近線上應用的資料庫頻頻出現多條慢sql風險提示,而工作以來,對資料庫優化方面所知甚少。
例如一個用戶數據頁面需要執行很多次資料庫查詢,性能很慢,通過增加超時時間勉強可以訪問,但是性能上需要優化。
索引的優點合適的索引,可以大大減小mysql伺服器掃描的數據量,避免內存排序和臨時表,提高應用程序的查詢性能。
索引的類型mysql數據中有多種索引類型,primarykey,unique,normal,但底層存儲的數據結構都是BTREE;有些存儲引擎還提供hash索引,全文索引。
BTREE是常見的優化要面對的索引結構,都是基於BTREE的討論。
B-TREE查詢數據簡單暴力的方式是遍歷所有記錄;如果數據不重復,就可以通過組織成一顆排序二叉樹,通過二分查找演算法來查詢,大大提高查詢性能。
而BTREE是一種更強大的排序樹,支持多個分支,高度更低,數據的插入、刪除、更新更快。
現代資料庫的索引文件和文件系統的文件塊都被組織成BTREE。
btree的每個節點都包含有key,data和只想子節點指針。
btree有度的概念d>=1。
假設btree的度為d,則每個內部節點可以有n=[d+1,2d+1)個key,n+1個子節點指針。
樹的大高度為h=Logb[(N+1)/2]。
索引和文件系統中,B-TREE的節點常設計成接近一個內存頁大小(也是磁碟扇區大小),且樹的度非常大。
這樣磁碟I/O的次數,就等於樹的高度h。
假設b=100,一百萬個節點的樹,h將只有3層。
即,只有3次磁碟I/O就可以查找完畢,性能非常高。
索引查詢建立索引後,合適的查詢語句才能大發揮索引的優勢。
另外,由於查詢優化器可以解析客戶端的sql語句,會調整sql的查詢語句的條件順序去匹配合適的索引。
⑶ 怎樣用c/c++編程連接mysql資料庫
庫文件的鏈接: VC++ 6.0直接在工具欄-生成-裡面就有一個鏈接的 或者在文件中直接用這個語句 #pragma comment(lib,「你想用的庫文件.lib」) 格式就是這樣
⑷ 使用mingw編程,如何操作mysql 資料庫,最好有常式。
下載一個mingw的utils包,用0.3版本,0.41版本有問題。
拷貝mysql/lib/opt下的libmysql.lib文件到mingw的home/$user目錄下,拷貝mysql/lib/opt/libmysql.dll文件到mingw的bin目錄下.
把utils的包解壓,把bin目錄下的文件拷貝到mingw的bin目錄下.
進行mingw的環境,執行
reimp -d libmysql.lib
dlltool -k -d libmysql.def -l libmysql.a
把生成的libmysql.a拷貝到mingw的lib下
把mysql/include下的全部文件拷貝到mingw/include下(省事)
在mysql中創建資料庫test,創建表mt(id int , content varchar(20));
寫c代碼,m.cc
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <mysql.h>
using namespace std;
MYSQL *conn;
int main() {
MYSQL_RES * res_set;
MYSQL_ROW row;
unsigned int i, ret;
MYSQL_FIELD * field;
unsigned int num_fields;
conn = mysql_init(NULL);
if(conn != NULL)
cout << "mysql_init success!" << endl;
else {
printf("failed ! ");
return 0;
}
ret = mysql_options(conn, MYSQL_SET_CHARSET_NAME, "gbk");//最好與資料庫charset一致
if(ret == 0)
cout << "mysql_options success!" << endl;
else printf("failed ! ");
if(mysql_real_connect(conn, "localhost", "root","root", "test", 0, NULL, 0) != NULL)
cout << "mysql_real_connect success!" << endl;
else printf("failed ! ");
mysql_query(conn, "INSERT INTO mt VALUES (1,'ABCDEF'),(2,'漢字支持');");
printf("insert affect %d sentences ", mysql_affected_rows(conn));
if(mysql_query(conn,"SELECT * FROM mt"))
cout << "mysql query failed! ";
res_set = mysql_store_result(conn);
if (res_set == NULL)
cout << "res_set is null" << endl;
num_fields = mysql_num_fields(res_set);
for(i = 0; i < num_fields; i++)
{
field = mysql_fetch_field_direct(res_set, i);
printf("%s ", field->name);
}
cout << endl;
while ((row = mysql_fetch_row(res_set)) != NULL)
{
for (i = 0; i < mysql_num_fields(res_set); i ++)
{
printf("%s ",row[i] != NULL ? row[i] : "NULL");
}
printf(" ");
}
mysql_close(conn);
return 0;
}
編譯:g++ -lmysql -o m m.cc
⑸ MYSQL資料庫語句編寫
UPDATE
表名 SET 欄位名=『內容』
[WHERE 『條件』]
注意:[
]中的內容可有可無。
舉例:表名=ZHXX(賬戶信息)
,需要修改其中的DLMM(登陸密碼),條件是DLMC(登陸名稱)=soso.
UPDATE
ZHXX SET DLMM='123' WHERE DLMC='soso'
⑹ 編程向MySql資料庫中插入一條記錄,並通過表單顯示結果
前端需要兩個頁面,一個是錄入,另一個是查詢,後端提供兩個介面,前後端交互可以用servlet和action表單提交和ajax請求,後端可以簡單的通過JDBC連接資料庫進行數據持久化操作和select,也可以使用資料庫連接池,使用現成的框架實現。
⑺ 用C語言如何對MySQL資料庫進行操作
里的大部分代碼參考了MySQL發行包裡面的.c源文件,大家也可以去裡面找找相關的代碼,下面這段代碼實現了連接到本地MySQL伺服器上9tmd_bbs_utf8資料庫,從數據表tbb_user中根據輸入的userid取得該用戶的用戶名並列印輸出到終端。
if defined(_WIN32) || defined(_WIN64)為了支持windows平台上的編譯
#include <windows.h> #endif #include <stdio.h> #include <stdlib.h> #include "mysql.h"
我的機器上該文件在/usr/local/include/mysql下
定義MySQL資料庫操作的宏,也可以不定義留著後面直接寫進代碼
define SELECT_QUERY "select username from tbb_user where userid = %d" int main(int argc, char **argv)char **argv 相當於 char *argv[] {
MYSQL mysql,*sock;定義資料庫連接的句柄,它被用於幾乎所有的MySQL函數
MYSQL_RES *res;查詢結果集,結構類型
MYSQL_FIELD *fd ;包含欄位信息的結構
MYSQL_ROW row ;存放一行查詢結果的字元串數組
char qbuf[160];存放查詢sql語句字元串
if (argc != 2) { //檢查輸入參數 fprintf(stderr,"usage : mysql_select <userid>\n\n"); exit(1); } mysql_init(&mysql); if (!(sock = mysql_real_connect(&mysql,"localhost","dbuser","dbpwd","9tmd_bbs_utf8",0,NULL,0))) { fprintf(stderr,"Couldn't connect to engine!\n%s\n\n",mysql_error(&mysql)); perror(""); exit(1); } sprintf(qbuf,SELECT_QUERY,atoi(argv[1])); if(mysql_query(sock,qbuf)) { fprintf(stderr,"Query failed (%s)\n",mysql_error(sock)); exit(1); } if (!(res=mysql_store_result(sock))) { fprintf(stderr,"Couldn't get result from %s\n", mysql_error(sock)); exit(1); } printf("number of fields returned: %d\n",mysql_num_fields(res)); while (row = mysql_fetch_row(res)) { printf("Ther userid #%d 's username is: %s\n", atoi(argv[1]),(((row[0]==NULL)&&(!strlen(row[0]))) ? "NULL" : row[0])) ; puts( "query ok !\n" ) ; } mysql_free_result(res); mysql_close(sock); exit(0); return 0;
為了兼容大部分的編譯器加入此行
}
編譯的時候,使用下面的命令
gcc -o mysql_select ./mysql_select.c -I/usr/local/include/mysql -L/usr/local/lib/mysql -lmysqlclient (-lz) (-lm) 後面兩個選項可選,根據您的環境情況運行的時候,執行下面的命令
./mysql_select 1
將返回如下結果:
number of fields returned: 1 Ther userid #1 's username is: Michael query ok !
上面的代碼我想大部分都能看明白,不明白的可以參考一下MySQL提供的有關C語言API部分文檔,各個函數都有詳細說明,有時間我整理一份常用的API說明出來。
⑻ 如何在.NET中使用MySQL資料庫
在 NET中一直使用Sql Server做資料庫 前幾天學習通過JDBC使用Java連接MySql資料庫 我就想 NET是否同樣可以使用MySql資料庫呢?答案是肯定的 方法也很簡單 在這里我使用C#作為編程語言 將自己整理出來的方法同大家一起分享
欲在 NET中使用MySql資料庫 其步驟是 下載MySql驅動包 引用驅動包中已經編譯好的MySql類組件 編寫代碼
步驟一 下載MySql驅動包
在我寫篇文章的時候 最新的驅動包是 支持Visual Studio 官方下載地址是
步驟二 引入組件
下載的文件是一個壓縮文件 將其解壓縮到本地磁碟 找到bin文件夾中的MySql Data dll文件 這個就是我們要引用的組件 通過Visual Studio將其引用到你的項目中
⑼ 如何在Java程序中訪問mysql資料庫中的數據並進行簡單的操作
參考代碼:
package 資料庫編程;
import java.sql.*;
public class 資料庫連接 {
public static void main(String[] args) throws SQLException{
//1.載入驅動程序
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//2.創建與DB資料庫的連接
//連接字元串
String url="jdbc:mysql://192.168.1.101:3306/java資料庫?user=root&password=humin";
Connection con=DriverManager.getConnection(url);
//進行讀寫
if(!con.isClosed()){
System.out.print("歡迎訪問資料庫!\n想做什麼啊………………\n");
Statement st=con.createStatement();
ResultSet rs= st.executeQuery("select * from stu");
while(rs.next()){
System.out.print( rs.getString("stuid")+","+rs.getString("name")+","+rs.getString("sex")+","+rs.getString("age")+","+rs.getString("address")+","+rs.getString("tel")+"\n");
}
}
//關閉資料庫
con.close();
}
}