crud :增刪改查。create(增加)、retrieve(查詢)、update(更新)、delete(刪除)
1.插入一行:比如對t_user表插入一行資料,我們可以這樣寫:
insert into t_user(username,password,age,address) values('tom','123',12,'北京');
注意事項:
<1>.mysql中的字串必須以」單引號「修飾。
<2>.每次必須插入一行資料,不能插入半行或者某幾列資料。
<3>.每個資料值的資料型別、精度和小數字數必須與相應的列匹配。
<4>.如果在設計表時指定某列為not null,那麼該列必須插入值!!
<5>.對於預設的列,可以使用關鍵字default來插入預設值。
比如:我們不想修改t_user表中的位址預設值(河南),我們可以這樣寫。
insert into t_user(username,password,age,address) values('tom','123',12,default);
<6>.可以對新增值都加單引號,這樣就不用考慮資料型別了!!,如下面:就不用考慮年齡是int型的資料了
insert into t_user(username,password,age,address) values('tom','123','12','北京');
2.插入多行資料:如對t_user表插入多行資料(注意:每條資料之間是用」逗號「分開的!!)
insert into t_user(username,password,age,address)
values('alex','123',24,default),
3.資料的更新:update
<1>.對整列資料更新:
update t_user set 'password'='123456' ,age='123';
<2>更新某行:比如修改id=1的記錄。
update t_user set 'password'='123',age=123 where id=1;
<3>更新某幾行:(有以下幾種寫法:)
(1.)update t_user set 'password'='123456',age=21 where id=5 or id=6 or id=7;
(2.) update t_user set 'password'='123456',age=21 where id in(5,6,7); (此方法速度較快!!)
(3.) update t_user set 'password'='123456',age=21 where id between 5 and 7;
(4.)update t_user set 'password'='123456',age=21 where id>=5 and id<=7;
4.where子句操作符:
《1》邏輯運算子:
= : 等於; <> : 不等於 ; (或者是 != )
< : 小於; > : 大於;
<= : 小於等於; >= : 大於等於;
between : 在指定的兩個值之間。
《2》關係運算子: and : 與; or : 或; not : 非;
5.資料的刪除:
delete from t_user where id=1; (注意事項:如果不跟where條件會清空資料庫,這是非常危險的!!)
說明:<1>.如果某條資料有外來鍵引用,則不能刪除。若要刪除則需要刪除外來鍵引用的行,再刪掉原行!
6.刪除表中的所有的記錄:
<1>.truncate table 表名;
(不能包含where子句,執行速度比下面的快!!!)
<2>.delete from 表名;
7.資料庫的查詢:
<1>.查詢表中的所有的記錄:
select * from t_user; (說明:實際用時不允許寫*的,而是把所有的列名寫出來;原因:寫*降低效能!!)
[select id,username,password,age,address from t_user;]
<2>.獲得剛插入行的id:
select last_insert_id();
<3>.去除重複行:如去除password中重複的行:
select distinct password from t_user; (注意distinct後面只能跟乙個列!!寫多列,則不能去除重複的行!!)
我們可以看下mysql的正則:
<4>.分頁:如下面是每頁顯示3條記錄:
select * from t_user limit 0,3;
select * from t_user limit 3,3;
select * from t_user limit 6,3;
select * from t_user limit 9,3;
<5>排序:預設的是asc(公升序),desc表示降序
select * from t_user order by id desc; (按id降序)
select * from t_user order by id asc; (按id公升序)
select * from t_user order by id asc, age desc;(表示多列排序:id按公升序,age按降序)
<6>.is null的使用
(1.)比如查無位址資訊的使用者:
select * from t_user where addressis null;
(2.)相反查詢有位址資訊的使用者:
select * from t_user where addressis not null;
<7>.說明性資訊:
(1.)and的優先順序比or高;
(2.)in操作符與or功能相同;
(3.)當使用長的合法選項清單時,in操作符語法更直觀;
(4.)in操作符比or操作符執行速度更快;
(5.)in操作符的最大優點:可以包含其他的select語句。
<8>.in的相反方向是:not in 而不是in not ;
比如:查詢age不包括21和22的使用者;
select * from t_user where agenot in (21,22);
8.like查詢:
<1>.like萬用字元:_ 下劃線萬用字元→ 匹配乙個字元 ;% 萬用字元→ 匹配乙個或任意多個字元;
<2>.注意事項:
(1.) 不要過度使用like萬用字元,如果其他的操作符可以完成就使用其他的操作符;
(2.) 萬用字元搜尋使用的時間比其他搜尋的時間要長
(3.) 如果確實需要使用萬用字元,除非絕對有必要,否則不要把萬用字元放到where子句的開始處;
(把萬用字元放到搜尋模式的開始處,搜尋起來是最慢的!!!!!)
<3>.
eg1:搜尋名字以韓開頭的使用者
select * from t_user where username like '韓%';
eg2: 查詢名稱為:韓 x風的使用者:
select * from t_user where username like '韓_風';
MySQL 單錶查詢
1 基本資料記錄查詢 列出表的所有字段 select field1,field2.fieldn from tablename 2 符號的使用 select from tablename 其中,符號 表示所有欄位名 tablename 引數表示表的名稱。3 條件資料記錄查詢 select field1...
MySQL 2 單錶查詢(練習1)
mysql uroot p密碼 show databases 檢視所有資料庫 use db1 使用其中乙個資料庫create table dept deptno int primary key,dname varchar 14 部門名稱 loc varchar 13 部門位址 insert into...
Mysql單錶查詢優化
原文url 我最近碰到了很多效能很糟糕的mysql單錶查詢。原因很簡單 索引建立得不正確,導致執行計畫的效能低下。下面是一些能幫助你優化單錶查詢效能的要點。索引主要做3件事 過濾 filter 排序或分組 sort group 覆蓋 cover 前兩個沒什麼好說的,但並不是每個人都知道什麼叫 覆蓋索...