select * from emp select * from dept select * from job select * from salarygrade -- 1.查詢所有員工資訊,查詢員工編號,員工姓名,工資,職務名稱,職務描述 SELECT t1.mgr, t1.ename, t1.salary, t2.jname, t2.description FROM emp AS t1, job AS t2 WHERE t1.job_id = t2.id -- 2.查詢員工編號,員工姓名,工資,職務名稱,職務描述,部門名稱,部門位置 SELECT t1.ename, t1.salary, t2.jname, t2.description, t3.dname, t3.loc FROM emp AS t1, job AS t2, dept AS t3 WHERE t1.job_id = t2.id and t1.dept_id = t3.id -- 3.查詢員工姓名,工資,工資等級 SELECT t1.ename, t1.salary, t2.grade FROM emp AS t1, salarygrade as t2 where t1.salary BETWEEN t2.losalary and hisalary -- 4.查詢員工姓名,工資,職務名稱,職務描述,部門名稱,部門位置,工資等級 SELECT t1.ename, t1.salary, t2.jname, t2.description, t3.dname, t3.loc, t4.grade FROM emp AS t1, job AS t2, dept AS t3, salarygrade as t4 WHERE t1.job_id = t2.id and t1.dept_id = t3.id and t1.salary BETWEEN t4.losalary and t4.hisalary -- 5.查詢出部門編號、部門名稱、部門位置、部門人數 SELECT t1.*, COUNT(t2.id) 部門人數 FROM dept AS t1, emp AS t2 WHERE t2.dept_id = t1.id GROUP BY t2.dept_id SELECT dept.*,t1.num from dept,(select dept_id,COUNT(*) num from emp GROUP BY dept_id) t1 where t1.dept_id = dept.id
SQL總結:
********************************************************************************
1.ddl陳述句: 操作資料庫或表
//創建資料庫
create Database if not 資料庫名稱;
//洗掉資料庫
drop database if exists 資料庫名稱
//使用資料庫
use 資料庫名稱
//查看資料庫
show database
//查看當前使用的資料庫
select database()
---------------------------------------------------------------------
//查詢該資料庫下的所有表
select tables
//查詢表結構
desc 表的名稱
//創建表
create table 表的名稱(欄位1名稱 資料型別 約束 ,
欄位2名稱 資料型別 約束,
欄位3名稱 資料型別 約束
)
//洗掉表
drop table if exists 表的名稱
//修改表的名稱
alter table 表的名稱 rename to 新的表名
//添加列
alter table 表的名稱 add 列名 資料型別;
//修改列的資料型別
alter table 表的名稱 modify 列名 新的資料型別;
//修改列的名稱以及資料型別
alter table 表的名稱 change 列名 新列名 新資料型別
//洗掉列
alter table 表的名稱 drop 列名 ;
********************************************************************************
2.dml陳述句:對資料進行操作
//添加資料【指定列添加】
insert into 表的名稱 (欄位名1,欄位名2,欄位名3,……)
values(欄位名1值,欄位名2值,欄位名3值,……)
//添加資料【給全部列添加資料】
insert into 表的名稱 values(欄位名1值,欄位名2值,欄位名3值,……)
//添加資料【給全部列添加資料,多條資料同時添加】
insert into 表的名稱 values(欄位名1值,欄位名2值,欄位名3值,……),
(欄位名1值,欄位名2值,欄位名3值,……),
(欄位名1值,欄位名2值,欄位名3值,……);
//修改資料【指定列修改】
update 表的名稱 set 列名1=值1,列名2=值2,列名3=值3,……
where 條件【不指定條件就會將所有行的資料全部更改】
//洗掉資料
delete from 表的名稱 where 條件【不指定條件就會將所有行的資料洗掉】
********************************************************************************
3.dql陳述句:資料庫查詢語言
①select from 查詢
②distinct 去重
③as 別名
④條件{
> 大于
>= 大于或等于
!= / <> 不等
< 小于
<= 小于或等于
between …… and …… 在……范圍內
in() 多選一
like 模糊查詢【_代表單個任意字符 %代表多個任意字符】
is null/is not null 不為空
and /&& 和
or /|| 或
not/! 非
}
⑤排序 order by 【ASC升序 DESC降序】
⑥聚合函式{
count() 統計數量【不統計為null的列】
max() 最大值
min() 最小值
sum() 求和
avg() 平均值
}
⑦分組 group by
⑧分組后限定條件 having
⑨分組前的限定條件 where
⑩分頁查詢 limit 起始索引 , 查詢條目數;
********************************************************************************
4.dcl:資料控制語言
grant 授權
set 設定
@@autocommit 自動提交事務
begin 開啟事務
commit 提交事務
rollback 回滾事務
事務的四大特征:AICO 原子性【要么同時成功,要么都失敗】
一致性【資料總量不變】
隔離性【開啟多個事務查詢資料】
持久性【通過commit提交或rollback回滾實作資料更新】
默認自動提加事務【要手動提交事務方法--》set @@autocommit =0 默認是1】
一旦設定為手動提交事務則必須自主提交,不然資料無法更新
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
多表查詢:
1.內連接 inner join on 【inner可以不寫】
2.外連接 left join【左連接:查詢左表的全部資料以及與右表交集部分資料】
right join【右連接:查詢右表的全部資料以及與右表交集部分資料】
3.子查詢 =(子查詢陳述句【子查詢陳述句輸出的是單列單行資料時使用=】)
in(子查詢陳述句【子查詢陳述句輸出的是單列多行資料時使用in】)
約束:
1.非空約束 not null
2.唯一約束[自動添加] unique [auto_increment]
3.主鍵約束 primary key
4.默認約束 default
5.外鍵約束 constraint 外鍵名稱 foreign key(外鍵欄位名) references 主表名(主表列名)
資料庫設計:
1.一對一
【例如:用戶 和 用戶詳情
一對一關系多用于表拆分,將一個物體中經常使用的欄位放一張表,
不經常使用的欄位放另一張表,用于提升查詢性能】
實作方式:
在任意一方加入外鍵,關聯另一方主鍵,并且設定外鍵為唯一(UNIQUE)
2.一對多
【例如:部門 和 員工
一個部門對應多個員工,一個員工對應一個部門】
實作方式:
在多的一方建立外鍵,指向一的一方的主鍵
3.多對多
【例如:商品 和 訂單
一個商品對應多個訂單,一個訂單包含多個商品】
實作方式:
建立第三張中間表,中間表至少包含兩個外鍵,分別關聯兩方主鍵
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/540077.html
標籤:其他
