java:mysql基礎語法


一,基礎操作

1,創建表

CREATE TABLE `customers` (
//設置customers_id為整數並為自增長 `customers_id`
INT(11) PRIMARY KEY AUTO_INCREMENT, `last_name` VARCHAR(10) NOT NULL, `first_name` VARCHAR(10) NOT NULL, `dob` DATE, `phone` VARCHAR(12) )

2,添加數據

nsert into customers (
  last_name,first_name,dob,phone
) values (
  '', '','1965-01-01', '800-555-1211');

3,使用LIKE操作符

   模式可以使用普通字符和兩個通配符的組合指定:

    下划線字符(_)匹配指定上的一個字符

   百分號字符(%)匹配從指定位置開始的任意個字符。

   例:where first_name like'_o%'

查詢customers表中first_name這一列,這個列中有o字符的名。

 

select *from customers where last_name like'%o%';

 

4,使用in操作符

   使用in操作符從customers表中檢索customer_id列的值為23、或5的記錄。

    select * from customers where  customers_id in(2,3,5)

   not in的結果與使用in所查詢的結果正好相反。

 

select *from customers where customers_id in(2,3,5)

 

如果指定的值列表中有一個為空值,那么not in就會返回false.,不會返回任何結果

 

select *from customers where customers_id not in(2,3,4,5)

 

5,使用邏輯操作符

x and y              xy都為true時,返回true

x or y               xy中有一個為true時,就返回true

NOT x              如果xtrue則返回false,如果xfalse則返回true

:從customers表中檢索dob列大於197011日並且小於200011日的客戶:

 

 

 

select *from customers where dob>'1970-1-1' and dob<'2000-1-1';

 

customers表中檢索dob列大於201211日或者customers_id列大於3的行:

 

 select * from customers where dob> '2012-01-01'  or customers_id>3

 

理解操作符的優先等級

如果在一個sql語句中同時使用ANDOR操作符,那么AND的優先級要高於OR,而比較操作符的優先級

高於AND,當然我們可以使用圓括號來改變優先級的順序。

7,使用ORDER BY子句對行進行排序

 

      order by子句用於對從數據庫檢索出的行進行排序,order by子句可以指定一列或多列(查詢結果會根據這些列進行排序)

 

 而且必須位於FORMWHERE子句(如果提供WHERE子句)之后。    

 

   例:查詢出products表中的數據,以價格進行排序(正序,倒序)

 

select *from products where price order by price;
select *from products where price order by price desc;

 

8,使用between操作符

例:從customers表中檢索customers_id列的值在13之間的記錄:

 

select *from customers where customers_id between 1 and 3

 

當然not between會返回相反的行,between也可以檢索在二個sql語句之間的記錄,當然要求sql語句

查詢出的結果要與類型匹配,為整型。

: 查詢價格在50-200之間的產品:

 

select *from products where price between 10 and 25;

 

9,多表查詢

內連接  join

例:同時查看產品名稱和產品類別二個表中的信息。

 

select p.product_id, p.name,
           t.name as type, 
                 p.description,
         p.price     
    from   products p   join  product_types t
             on p.product_type_id = t.product_type_id;

 

二,函數與關鍵詞

1,在關聯子查詢中使用EXISTSNOT EXISTS

EXISTS操作符用於檢查子查詢所返回的行的存在性。

語法:where exists (sql語句)

 例:使用EXISTS查詢負責管理其它員工的員工記錄。

 

select employee_id, concat(last_name,'',first_name) name from employees ee
     where  exists 
           (select employee_id from employees e where e.manager_id=ee.employee_id);

 

由於EXISTS只是檢查子查詢返回行的存在性,所以查詢不必返回一列,可以只返回一個常量值。這樣提高查

詢的性能

 

select employee_id, concat(last_name,'',first_name) name from employees ee
     where  exists 
           (select 1 from employees e where e.manager_id=ee.employee_id);

 

2,Limit函數

LIMIT 子句可以被用於強制 SELECT 語句返回指定的記錄數。LIMIT 接受一個或兩個數字參數。參數必須是一個整數常量。如果給定兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目。初始記錄行的偏移量是 0(而不是 1)

例: 

SELECT * FROM table LIMIT 5,10;   檢索記錄行 6-15
為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個參數為 -1SELECT * FROM table LIMIT 95,-1;  檢索記錄行 96-last.
如果只給定一個參數,它表示返回最大的記錄行數目: 
SELECT * FROM table LIMIT 5;    檢索前 5 個記錄,換句話說,LIMIT n 等價於 LIMIT 0,n。

3,Row()  CURDATE()插入當前時間

NOW()函數以`'YYYY-MM-DD HH:MM:SS'返回當前的日期時間,可以直接存到DATETIME字段中。

CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。

CURTIME()以’HH:MM:SS’的格式返回當前的時間,可以直接存到TIME字段中。

例:

 

insert into customers(dob) values (now())

 

4,AVG()函數

  AVG(x)函數用於計算x的平均值。

  例:計算產品的平均價格,products表中的price列作為參數傳遞給AVG()函數;

 

select avg(price) from products; 

 

5,count()函數

      用於計算一個查詢所返回的行數。

例:計算products表中的行數:

 

select count(product_id) from products;

 

6,MAX()MIN()

  用於計算x的最大值和最小值。

 

select max(price),min(price) from products;

 

7,SUM(x)函數

  計算並返回x中的所有值之和,

例:計算products表中price列之和。

 

select sum(price) from products  

 

8,使用GROUP BY對行進行分組

    例如:查詢products表中不同類型的產品的平均價格。

 

select  product_type_id, avg(price) 平均價格 from 
products p group by p.product_type_id;

 

注:1、不能在where函數中使用聚合函數。

2、如果查詢中包含一個聚合函數,而所選擇的列並不在聚合函數中,

那么這些列就必須在GROUUP BY子句中。

 

9,使用HAVING子句過濾行分組

 

   HAVING子句可以用於過濾分組,它可以放在GROUP BY子句之后,

 

   用於對分組后進行過濾。

 

例:查詢平均價格高於20塊的產品類型。

 

 select product_type_id from products 
group by product_type_id having avg(price)>20

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM