操作mysql數據庫插入數據(將爬取的數據存入MySQL數據庫)

本文目錄一覽:

MySQL(DML數據操作語言,添加/刪除/修改數據庫數據)

插入數據

insert into 表名(字段) values(‘數據’);

insert into 表名1(name,age) select name,age from 表2; #表2 數據信息複製到表1

修改數據

update 表名 set ‘字段’=’數據’;    #修改數據

delect from 表名 where 字段=值;   #刪除數據

truncate table 表名;           #清空所有數據 且無法恢復

DQL (數據查詢語言,用來查詢數據)

select 要查詢字段 from 表名 [where 滿足條件];

[group by 分組依據]

[order by 排序依據]

[limit 限定輸出結果]

select * from 表名;         #查詢 表 所有數據

select 字段 字段 from 表名;      #查詢指定字段數據

select st.name,st.age,th.name,th.age from st,th;            #查詢一個或多個  表中的數據

SELECT 字段名 FROM 表名 WHERE 條件1 OR 條件2 […OR 條件n];

例:SELECT * FROM students WHERE age20 OR education!=’大專’; #查詢年齡小於20或 者學歷不等於大專的學生信息

SELECT 字段名 FROM 表名 WHERE 條件1 AND 條件2 […AND 條件n];

例:SELECT * FROM students WHERE age22 AND education=’大專’; # 查詢年齡大於22 且學歷為大專的學生信息

select 字段 from 表名 where age in (12,17,23);              #數據在指定 數據 裡面

select 字段 from 表名 where age between 23 and 28;       #數據在23-28 之間

select * from 表名 order by 字段名;                      #排序,升序

select 字段 from 表名 order by desc;                        #   字段降序

select 字段1,字段2…… from 表名 group by  分組依據字段;          #每個字段只顯示一條

例:SELECT id,sname,age,phone,place,GROUP_CONCAT(age,place) FROM students GROUP BY age,place; #查詢學生信息,根據age,place分組並顯示每一組的記 錄

select  distinct  字段 from  表名;                          #去除結果重複行

例:SELECT DISTINCT age FROM students; # 查詢學生的年齡段情況

selcet 字段1,字段2,group_concat(分組依賴字段名) from 表名 group by 分組依賴字段名;    #查詢每個組中記錄數量,顯示出來(使用關鍵字GROUP BY與GROUP_CONCAT()函數一起使用,可以將每個組中的記錄數量都顯 示出來)

例:selcet id,sname,age,phone,GROUP_CONCAT(age) FROM students GROUP BY age; # 查詢學生id,姓名,年齡,電話,根據age分組並顯示每一組的記錄

SELECT 字段名 FROM 表名 [其他條件] LIMIT int,int; 參數1是開始讀取的第一條記錄的 編號,參數2是要查詢記錄的個數

例:SELECT * FROM students ORDER BY age LIMIT 0,5; # 查詢學生信息,根據age 排序從第0位開始顯示,只顯示5條

select 字段名 from 表名where字段名 regexp ‘匹配方式’;

(^匹配以特定字符或 字符串開頭的記錄,

$匹配以特定字符或 字符串結尾的記錄

[^字符集 合]匹配除“字符集合”以 外的任意一個字符

S1|S2|S3匹配S1 S2 S3中 的任意一個字符串

字符串{N }匹配字符串出現N次

字符串 {M,N}匹配字符串出現至 少M次,最多N次)

聚合函數查詢

select count(字段名) from 表名;           #對於除”*”以外的任何參數,返回所選擇集合中非NULL值的行的數目;對於參數“*”,返回選擇集 合中所有行的數據,包含NULL值的行

例:SELECT COUNT(*) FROM students;

select sum(字段名) from 表名;          #表中某個字段取值的總和

select avg(字段名) from 表名;       #表中某個字段取值的平均值

select max(字段名) from 表名;        #表中某個字段取值的最大值

select min(字段名) from 表名;         #表中某個字段取值的最小值

連接查詢

a.內連接:列出數據表中與連接條件相匹配的數據行,組合成新記錄【只有滿足條件的記錄才出現在查詢結 果】 內連接的最常見的例子是相等連接,也就是連接後的表中的某個字段與每個表中的都相同

select 字段名1,字段名2  from 表名1 inner join 表名2 where 連接條件;

例:select s.name,d.dname from staff s inner join department d WHERE s.dpid = d.id; # 連接員工表的dpid字段和部門表的id字段,並查詢員工姓名和部門名稱

b.外連接:與內連接不同,外連接是指使用OUTER JOIN關鍵字將兩個表連接起來。外連接生成的結果集不僅 包含符合連接條件的行數據 ,而且還包含左表(左外連接時的表) 右表(右外連接時的表)或 兩邊連接表(全外連接時的表)中所有的數據行。

select 字段名稱 from 表名1 LEFT|RIGHT join 表名2 on 表名1.字段名1 = 表名2.字段名2;

例:select s.name,d.dname FROM staff s LEFT JOIN department d ON s.dpid = d.id; #連接員工表的dpid字段和部門表的id字段,並查詢員工姓名和部門名稱,如果右表中沒有對應的 連接數據,會自動添加NULL值

例:SELECT s.name,d.dname FROM staff s RIGHT JOIN department d ON s.dpid = d.id; # 連接員工表的dpid字段和部門表的id字段,並查詢員工姓名和部門名稱,如果左表中沒有對應 的連接數據,會自動添加NULL值

例:SELECT 字段名1,字段名2 FROM 表名1,表名2 WHERE 連接條件 AND 限制條件; 例:SELECT s.name,d.dname FROM staff s,department d WHERE s.dpid = d.id AND s.dpid1; # 查詢員工姓名和部門名稱,條件是員工表的dpid字段與部門表中的id字段相等,並且dpid大於1

合併查詢結果

select 字段名 from  表名 UNION select 字段名  from 表名;   #關鍵字UNION是將所 有的查詢結果合併到一起,並且去除相同記錄

例:SELECT dpid FROM staff UNION SELECT id FROM department; # 查詢員工表dpid與部門表id,如果有重複數據,只顯示一次

select 字段名 drom 表名 UNION ALL select 字段名from表名;   #關鍵字UNION ALL 則只是簡單地將結果合併到一 起

例:SELECT dpid FROM staff UNION ALL SELECT id FROM department; # 查詢員工表dpid與部門表id,全部顯示

MYSQL中執行插入操作的關鍵字是

一、關鍵字執行順序

1、查詢中用到的關鍵詞主要包含六個,並且他們的順序依次為 :

select–from–where–group by–having–order by 其中select和from是必須的,其他關鍵詞是可選的。

這六個關鍵詞的執行順序,與sql語句的書寫順序並不是一樣的,而是按照下面的順序來執行

from–where–group by–having–select–order by。

注意:雖然select在having後執行,但是mysql中仍然可以在having中使用select語句定義的別名。

原因分析:mysql在查詢的時候會產生一個臨時表,所有的字段名稱(別名)在臨時表中已經產生,產生了臨時表之後才會進行having操作。也就是說mysql內部有一定的解析順序,解析順序select優先於having。在這裡我個人認為是mysql可能沒有將這一點做規範。Oracle中having無法使用select語句內的別名。

2、insert into 和replace into和merge into

insert into是mysql的基本插入語句。replace into 是mysql中的代替插入語句,可以理解為insert into的升級版。replace into在執行的時候,首先會根據指定的主鍵或者唯一索引判斷當前表中是否存在指定的主鍵或索引,如果主鍵或唯一索引已經存在,則先將對應的索引的數據刪除,然後在索引位置插入replace into中包含的數據。如果主鍵和唯一索引沒有存在,則直接在索引位置插入replace into中包含的數據。merge into 是oracle數據庫中的代替插入語句。實現方式和replace into類似。執行效率:如果指定索引位置沒有數據,insert into和replace into執行效率相差無幾,二者效率相同。如果指定位置索引已經存在,insert into語句不能正常執行,replace into語句可以正常執行。注意:雖然replace into比較好使用,但是也存在一定風險:replace每次要重新分配自增id;replace中執行delete時, 在有外鍵的情況下會很麻煩;如果delete時定義的有觸發器, 則會被執行;副作用也會被傳播到replica slave.推薦使用INSERT INTO … ON DUPLICATE KEY UPDATEON DUPLICATE KEY UPDATE是mysql特有的一個sql關鍵字,只能在mysql中使用。

在MySQL數據庫中,如果在insert語句後面帶上ON DUPLICATE KEY UPDATE 子句,而要插入的行與表中現有記錄的惟一索引或主鍵中產生重複值,那麼就會發生舊行的更新;如果插入的行數據與現有表中記錄的唯一索引或者主鍵不重複,則執行新紀錄插入操作。

比如有這樣一張表:

create table func(id int primary key,count int,birthday date);

insert into func values(1,1,’1990-09-09′);–插入一條數據

insert into func values(1,1,’1990-09-09′) on duplicate key update count = count+1;–表中有數據,刪除原表數據,將新數據插入。

提示兩行受到影響,說明先執行的刪除操作,然後插入新的數據。

觀察到沒有任何新數據插入,count字段被更新。(count字段更新是因為剛剛的插入語句中書寫了update count = count+1;)

如果不希望任何字段更新,可以寫成如下格式:

insert into func values(1,1,’1990-09-09′) on duplicate key update count = values(count);–再次執行,沒有新數據插入到數據庫中。

二、mysql內置函數

內置函數眾多,不需要每一個都掌握,熟練掌握幾個在以後使用即可。可以查看mysql官方文檔學習內置函數。

三、其它注意事項

1、在已經存在的表中添加外鍵。(僅作為了解內容)

alter table tb_name add constraint fk_name foreign key (tb_name.id) references tb_stu(id);

例如:alter table emp add constraint forkey foreign key(dept_id) references dept(id);

該語句是在 tb_name表上添加一個外鍵約束,引用 tb_stu的主鍵,fk_name是約束的名字。

刪除約束:alter table tb_name drop constraint fk_name ;

2、外鍵的使用情景:

在不要求吞吐速度而對數據的正確性和安全性要求較高時,推薦使用外鍵。

如果面對高吞吐量,要求優先保證讀取效率時,則不推薦使用外鍵。

3、刪除的時候使用別名:

原句:delete from employee where id = 1;

別名:delete e from employee as e where id =1;

怎麼往mysql表裡添加數據

1、我們打開Mysql命令行編輯器,連接Mysql數據庫;

2、使用我們要操作的數據庫,我們可以先顯示一下數據庫中的表;

3、顯示一下表結構,了解一下表中的列;

4、向表插入數據,insert

into

表名

(列名)

values

(值);

5、查詢表,可以看到我們插入的數據,select

*

from

表名;

6、可以再插入一個數據,顯示一下。

擴展資料:

MySQL是一個關係型數據庫管理系統,由瑞典MySQL

AB

公司開發,目前屬於 Oracle 旗下產品。MySQL

是最流行的關係型數據庫管理系統之一,在

WEB

應用方面,MySQL是最好的 RDBMS (Relational

Database

Management

System,關係數據庫管理系統)

應用軟件。

MySQL是一種關係數據庫管理系統,關係數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性。MySQL所使用的

SQL

語言是用於訪問數據庫的最常用標準化語言。MySQL

軟件採用了雙授權政策,分為社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇

MySQL

作為網站數據庫。

參考資料:MySQL-百度百科

怎麼往mysql中寫入數據?

1、首先打開MYSQL的管理工具,新建一個test表,並且在表中插入兩個字段。

2、接下來在Editplus編輯器中創建一個PHP文件,進行數據庫連接,並且選擇要操作的數據庫。

3、然後通過mysql_query方法執行一個Insert的插入語句。

4、執行完畢以後,回到數據庫管理工具中,這個時候你會發現插入的中文亂碼了。

5、接下來在PHP文件中通過mysql_query執行一個set  names  utf8語句。

6、接下來執行以後回到MYSQL數據庫中,發現插入的中文顯示正常了,即成功往mysql中寫入數據了。

六、MySQL數據庫之數據插入(insert into)

本節介紹數據的插入,複製數據到另一張表的Sql語法,主要語法有: insert into,insert into select,select into from 等用法,下面將一一為大家詳細說明:

以下面兩張表進行sql腳本說明

insert into有兩種語法,分別如下:

語法1:INSERT INTO table_name VALUES (value1,value2,value3,…);   –這種形式無需指定要插入數據的列名,只需提供被插入的值即可:

語法2:INSERT INTO table_name (column1,column2,column3,…) VALUES (value1,value2,value3,…);    –這種形式需指定要插入數據的列名,插入的值需要和列名一一對應:

eg:insert into customer values(‘1006′,’14006′,’王欣欣’,’27’,’深圳市’);  –向表customer插入一條數據

eg:insert into customer values(‘1007′,’14007′,’孟一凡’,’27’,”);             –向表customer插入一條數據,最後一個值不填表示對應的值為空,非必填項可以不用插入值

eg:insert into customer (cus_id,cus_no,cus_name,cus_age,cus_adds) values(‘1008′,’14008′,’孔凡’,’26’,’廣州市’);      –向表customer插入一條數據,插入的值與列名一一對應

詳解:insert into select    –表示從一個表複製數據,然後把數據插入到一個已存在的表中。目標表中任何已存在的行都不會受影響。

語法1:INSERT INTO table_name2 SELECT  * FROM table_name1;  –表示將表table_name1中複製所有列的數據插入到已存在的表table_name2中。被插入數據的表為table_name2,切記不要記混了。

eg:insert into customer select * from asett   –將表asett中所有列的數據插入到表customer中

語法2:INSERT INTO table_name2 (column_name(s)) SELECT column_name(s) FROM  table_name1;  –指定需要複製的列,只複製制定的列插入到另一個已存在的表table_name2中:

eg:insert into customer (cus_id,cus_no) select ast_id,ast_no from asett   –將表asett中列ast_id和ast_no的數據插入到表customer對應的cus_id,cus_no列中

詳解:從一個表複製數據,然後把數據插入到另一個新表中。

語法1:SELECT * INTO newtable [IN externaldb] FROM table1;                               –複製所有的列插入到新表中:

eg:select * into customer from asett     –將asett表中數據插入到customer中,被插入的 表customer不存在

eg:select * into customer from asett where ast_id = ‘1008’    –只複製表asett中ast_id=1008的數據插入到customer中,被插入的 表customer不存在

語法2:SELECT column_name(s) INTO newtable [IN externaldb] FROM table1;   –只複製指定的列插入到新表中:

eg:select ast_id,ast_no into customer from asett  –將asett表中列ast_id,ast_no數據插入到customer中,被插入的 表customer不存在

區別1:insert into customer select * from asett where ast_id=’1009′ –插入一行,要求表customer 必須存在

區別2:select * into customer  from asett  where ast_id=’1009′ –也是插入一行,要求表customer  不存在

區別3:select into from :將查詢出來的數據複製到一張新表中保存,表結構與查詢結構一致。

區別4:insert into select :為已經存在的表批量添加新數據。

Mysql數據庫插入數據庫報錯, ERROR 1366 (HY000): Incorrect string value: ‘\xBE\xEA’ for column ‘name

“ERROR 1366 (HY000): Incorrect string value: ‘\xBE\xEA’ for column ‘name”,此問題的原因:配置文件錯誤。

解決的方法和操作步驟如下:

1、首先,右鍵單擊開始圖標,然後在菜單上選擇“運行”選項,如下圖所示,然後進入下一步。

2、其次,完成上述步驟後,在輸入框中輸入“cmd”命令,然後單擊“確定”按鈕,如下圖所示,然後進入下一步。

3、接着,完成上述步驟後,輸入“mysql -uroot -p+密碼”,如下圖所示,然後進入下一步。

4、然後,完成上述步驟後,連接成功,輸入如下紅框中的內容,然後進入下一步。

5、隨後,完成上述步驟後,查找配置文件所在的地址,如下圖所示,然後進入下一步。

6、最後,完成上述步驟後,打開mysql.ini文件,將默認字符集修改為“utf8”,因為MYSQL版本不同,配置文件中的內容也不相同,只需要修改字符集設置並將其修改為utf8即可,如下圖所示。這樣,問題就解決了。

原創文章,作者:OEOE,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/134237.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
OEOE的頭像OEOE
上一篇 2024-10-04 00:04
下一篇 2024-10-04 00:04

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Python讀取CSV數據畫散點圖

    本文將從以下方面詳細闡述Python讀取CSV文件並畫出散點圖的方法: 一、CSV文件介紹 CSV(Comma-Separated Values)即逗號分隔值,是一種存儲表格數據的…

    編程 2025-04-29
  • Python棧操作用法介紹

    如果你是一位Python開發工程師,那麼你必須掌握Python中的棧操作。在Python中,棧是一個容器,提供後進先出(LIFO)的原則。這篇文章將通過多個方面詳細地闡述Pytho…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Python中讀入csv文件數據的方法用法介紹

    csv是一種常見的數據格式,通常用於存儲小型數據集。Python作為一種廣泛流行的編程語言,內置了許多操作csv文件的庫。本文將從多個方面詳細介紹Python讀入csv文件的方法。…

    編程 2025-04-29
  • 如何用Python統計列表中各數據的方差和標準差

    本文將從多個方面闡述如何使用Python統計列表中各數據的方差和標準差, 並給出詳細的代碼示例。 一、什麼是方差和標準差 方差是衡量數據變異程度的統計指標,它是每個數據值和該數據值…

    編程 2025-04-29
  • openeuler安裝數據庫方案

    本文將介紹在openeuler操作系統中安裝數據庫的方案,並提供代碼示例。 一、安裝MariaDB 下面介紹如何在openeuler中安裝MariaDB。 1、更新軟件源 sudo…

    編程 2025-04-29
  • Python多線程讀取數據

    本文將詳細介紹多線程讀取數據在Python中的實現方法以及相關知識點。 一、線程和多線程 線程是操作系統調度的最小單位。單線程程序只有一個線程,按照程序從上到下的順序逐行執行。而多…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python兩張表數據匹配

    本篇文章將詳細闡述如何使用Python將兩張表格中的數據匹配。以下是具體的解決方法。 一、數據匹配的概念 在生活和工作中,我們常常需要對多組數據進行比對和匹配。在數據量較小的情況下…

    編程 2025-04-29

發表回復

登錄後才能評論