標籤:變化 database 查詢條件 username ant show 定位 負數 date
設定SQL語句所用的字元編碼:set names UTF8;
判斷指定的資料庫是否存在:DROP DATABASE IF EXISTS 庫;
開始使用指定的資料庫:USE 庫;
建立資料庫CREATE DATABASE 庫;
建立資料表和欄位設定檔案類型為UTF8;
INSERT INTO 表 VALUES(欄位);
SQL語句分類:
(1)ddl:資料定義語言 (Data Definition Language)--定義表的列----》 Create、DROP、alter、truncate
(2)dml:資料操作語言----動作表的記錄行 ------》 INSERT、DELETE、UPDATE
(3)dql:資料查詢語言---不影響表的行和列-----》 SELECT
(4)dcl:資料控制語言--控制使用者的許可權 ------》 GRANT、REVOKE
查詢文法:
尋找所有資料庫:show databases “s”指的是負數
尋找庫中所有的表:show tables;
尋找表中所有資料:select * from 表; "*" 指的是全域變數
尋找某個欄位的資料資料:select 欄位 from 表;
查詢資料:select * from xxx;
例子:
(1)select id,username,password from t_user;
(2)select id,username,password,gender from t_user where gender = ‘男‘;
(3)select id,username,password,gender from t_user where gender is null;
添加資料:insert xxx(id, username) values(xx, "xxx");
例子:
insert into t_user(id, username) values(10, "hehehe");
insert into t_user(id, gender, username, age, password) values(15, ‘男‘, ‘shihu‘, 18, ‘123456‘);
insert into t_user values(16, ‘benladeng‘, ‘123456‘, ‘拉登‘, ‘nan‘, 18);
3
修改資料:update tablename set xx=xx,xxx=xx where xxx=xxx and xxx=xxx;
4
刪除資料:delete from tablename where xx=xxx and xxx = xxx or xxx = xxx;
查詢日期型資料
SELECT * FROM 表 WHERE 時間欄位= ‘2011-04-08‘
注:不同資料庫對日期型資料存在差異: :
(1)MySQL:SELECT * from tb_name WHERE birthday = ‘2011-04-08‘
(2)SQL Server:SELECT * from tb_name WHERE birthday = ‘2011-04-08‘
(3)Access:SELECT * from tb_name WHERE birthday = #2011-04-08#
查詢非空資料
SELECT * FROM tb_name WHERE address <>‘‘ order by addtime desc
注:<>相當於PHP中的!=
查詢前n條記錄
SELECT * FROM tb_name LIMIT 0,$N;
limit語句與其他語句,如order by等語句聯合使用,會使用SQL語句千變萬化,使程式非常靈活
查詢後n條記錄
SELECT * FROM tb_stu ORDER BY id ASC LIMIT $n
查詢從指定位置開始的n條記錄
SELECT * FROM tb_stu ORDER BY id ASC LIMIT $_POST[begin],$n
注意:資料的id是從0開始的
查詢統計結果中的前n條記錄
SELECT * ,(yw+sx+wy) AS total FROM tb_score ORDER BY (yw+sx+wy) DESC LIMIT 0,$num
查詢指定時間段的資料
SELECT 要尋找的欄位 FROM 表名 WHERE 欄位名 BETWEEN 初始值 AND 終止值
SELECT * FROM tb_stu WHERE age BETWEEN 0 AND 18
按月查詢統計資料
SELECT * FROM tb_stu WHERE month(date) = ‘$_POST[date]‘ ORDER BY date ;
註:SQL語言中提供了如下函數,利用這些函數可以很方便地實現按年、月、日進行查詢
year(data):返回data運算式中的公元年分所對應的數值
month(data):返回data運算式中的月分所對應的數值
day(data):返回data運算式中的日期所對應的數值
查詢大於指定條件的記錄
SELECT * FROM tb_stu WHERE age>$_POST[age] ORDER BY age;
查詢結果不顯示重複記錄
SELECT DISTINCT 欄位名 FROM 表名 WHERE 查詢條件
注:SQL語句中的DISTINCT必須與WHERE子句聯合使用,否則輸出的資訊不會有變化 ,且欄位不能用*代替
NOT與謂詞進行組合條件的查詢
(1)NOT BERWEEN … AND … 對介於起始值和終止值間的資料時行查詢 可改成 <起始值 AND >終止值
(2)IS NOT NULL 對非空值進行查詢
(3)IS NULL 對空值進行查詢
(4)NOT IN 該式根據使用的關鍵字是包含在列表內還是排除在列表外,指定運算式的搜尋,搜尋運算式可以是常量或列名,而列名可以是一組常量,但更多情況下是子查詢
顯示資料表中重複的記錄和記錄條數
SELECT name,age,count(*) ,age FROM tb_stu WHERE age = ‘19‘ group by date
對資料進行降序/升序查詢
SELECT 欄位名 FROM tb_stu WHERE 條件 ORDER BY 欄位 DESC 降序
SELECT 欄位名 FROM tb_stu WHERE 條件 ORDER BY 欄位 ASC 升序
注:對欄位進行排序時若不指定排序方式,則預設為ASC升序
對資料進行多條件查詢
SELECT 欄位名 FROM tb_stu WHERE 條件 ORDER BY 欄位1 ASC 欄位2 DESC …
注意:對查詢資訊進行多條件排序是為了共同限制記錄的輸出,一般情況下,由於不是單一條件限制,所以在輸出效果上有一些差別。
對統計結果進行排序
函數SUM([ALL]欄位名) 或 SUM([DISTINCT]欄位名),可實現對欄位的求和,函數中為ALL時為所有該欄位所有記錄求和,若為DISTINCT則為該欄位所有不重複記錄的欄位求和
如:SELECT name,SUM(price) AS sumprice FROM tb_price GROUP BY name
SELECT * FROM tb_name ORDER BY mount DESC,price ASC
單列資料分組統計
SELECT id,name,SUM(price) AS title,date FROM tb_price GROUP BY pid ORDER BY title DESC
注:當分組語句group by排序語句order by同時出現在SQL語句中時,要將分組語句書寫在排序語句的前面,否則會出現錯誤
多列資料分組統計
多列資料分組統計與單列資料分組統計類似
SELECT *,SUM(欄位1*欄位2) AS (新欄位1) FROM 表名 GROUP BY 欄位 ORDER BY 新欄位1 DESC
SELECT id,name,SUM(price*num) AS sumprice FROM tb_price GROUP BY pid ORDER BY sumprice DESC
註:group by語句後面一般為不是彙總函式的數列,即不是要分組的列
多表分組統計
SELECT a.name,AVG(a.price),b.name,AVG(b.price) FROM tb_demo058 AS a,tb_demo058_1 AS b WHERE a.id=b.id GROUP BY b.type;
mysql 文法總結