地址:http://www.cnblogs.com/longly/p/6030609.htmlhtml
設置SQL語句所用的字符編碼:set names UTF8;數據庫
判斷指定的數據庫是否存在:DROP DATABASE IF EXISTS 庫;函數
開始使用指定的數據庫:USE 庫;編碼
建立數據庫CREATE DATABASE 庫;htm
建立數據表和字段設置文件類型爲UTF8;blog
INSERT INTO 表 VALUES(字段);排序
SQL語句分類:get
(1)ddl:數據定義語言--定義表的列----》 Create、DROP、alter、truncateit
(2)dml:數據操做語言----操做表的記錄行 ------》 INSERT、DELETE、UPDATE字符編碼
(3)dql:數據查詢語言---不影響表的行和列-----》 SELECT
(4)dcl:數據控制語言--控制用戶的權限 ------》 GRANT、REVOKE
查詢語法:
查找全部數據庫:show databases 「s」指的是負數
查找庫中全部的表:show tables;
查找表中全部數據:select * from 表; "*" 指的是全局變量
查找某個字段的數據資料:select 字段 from 表;
查詢數據:select * from xxx;
擴展SQL知識點:模糊查詢
SELECT * FROM product WHERE pname='入門';
SELECT * FROM product WHERE pname LIKE '%入門%';
SELECT * FROM product WHERE pname LIKE '%入門%' OR pname LIKE '%指南%';
%匹配任意多個任意字符
例子:
(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;