程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> SQL學習筆記

SQL學習筆記

編輯:MYSQL入門知識

SQL(Structured Query Language)學習筆記

[TOC]

Terminal登錄數據庫

1.登錄mysql -u root -p ;
2.顯示所有數據庫show databases ;
3.使用數據庫use “database name” ;
4.顯示數據庫中所有表 show tables;
5.刪除表 drop table ”Customers“;

SQL特性

SQL約束

1.主鍵

  1. CREATE TABLE OrderItems ( order_num int NOT NULL PRIMARY KEY, order_item int NOT NULL , prod_id char(10) NOT NULL , quantity int NOT NULL , item_price decimal(8,2) NOT NULL );
  2. ALTER TABLE Orders ADD PRIMARY KEY (order_num);
    2.外鍵

3.唯一

4.檢查

SQL索引

觸發器

SQL優化執行計劃

索引唯一掃描(index?unique?scan)?

索引范圍掃描(index?range?scan)?

索引全掃描(index?full?scan)

索引快速掃描(index?fast?full?scan)

檢索數據

1.多條SQL語句必須以分號(;);
2.SQL語句不區分大小寫;
3.select distinct vend_id from products;返回不同的值
destinct作用於所有的列
4.限制結果數量,分頁
①Oracle rownum
②MySQL limit
select * from limit m,n m是指m+1條開始,取n條

排序檢索數據

1.order by
select prod_name from products order by prod_name
select prod_id , prod_price ,prod_name from products order by prod_price,prod_name;
select prod_id , prod_price ,prod_name from products order by 2,3;
2.order by desc(降序排列)
select prod_id , prod_price ,prod_name from products order by prod_price desc;
desc致應用到直接位於其前面的列名
默認是升序排列

過濾數據(字符需要用'' 數值不需要'')

1.bwtween and
2.is null
3.and,or,in,not

通配符過濾數據

1.必須是用 like 操作符 ,通配符只能用於文本字段
2.% (%不匹配 null)
3._
4.[]

拼接字段(||)

1.select concat(vend_name , '(',vend_country,')') from vendors order by vend_name;
拼接字段,查詢的結果沒有列名
2.alias 別名 ?Oracle中沒有as
select concat(vend_name , '(',vend_country,')') as vene_title from vendors order by vend_name;
3.計算
select prod_id , quantity , item_price , quantity* item_price as expanded_price from orderitems where order_num=20008;

SQL函數

1.聚集函數

函數 說明 AVG() 返回某列的平均值 COUNT() 返回某列的行數 MAX() 返回某列的最大值 MIN() 返回某列的最小值 SUM() 返回某列值之和

**count(*) 對表中的行的數目進行計數 不忽略為null的行
Count(column)對特定的列中具有值的行進行計數**

分組

1.group by

2.having
where 過濾行 having過濾分組
where在數據分組前進行過濾,having在數據分組後進行過濾

select執行順序

select from where---->group by--->having--->order by

子查詢

作為子查詢的select語句只能查詢單個列
select cust_name ,cust_state ,(select count(*) from orders where orders.cust_id=customers.cust_id) as orders from customers order by cust_name;

聯結

等值聯結/內聯結

select vend_name , prod_name ,prod_price from vendors , products where vendors.vend_id=products.vend_id ;

select vend_name , prod_name ,prod_price from vendors INNER join products on vendors.vend_id=products.vend_id ;
笛卡爾積 叉聯結

自聯結

自然聯結

外聯結

1.左外聯結
select customers.cust_id ,orders.order_num from customers left outer join orders on customers.cust_id=orders.cust_id;
2.右外聯結
select customers.cust_id ,orders.order_num from customers right outer join orders on orders.cust_id=customers.cust_id;

組合查詢

UNION

select cust_name ,cust_contact ,cust_email from customers where cust_state in ('IL','IN','MI') union select cust_name ,cust_contact ,cust_email from customers where cust_name='Fun4A11';
規則:
1.UNION必須由2條以上的select語句組成
2.UNION的每個查詢必須包含相同的列

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved