數據庫學習筆記
1 SQL語言介紹
2 數據庫的安裝
2.1 啟動數據庫
方式一:net start mysql
方式二:在計算機管理里面手動打開數據庫
2.2 登錄MySQL
方式一:本地登錄
即數據庫與客戶端在同一臺電腦上。
方式二:遠程登錄
mysql -uroot -h數據庫服務器的IP地址 -p
但用root賬戶對數據庫服務器進行遠程登錄,一般會被拒絕,因為root賬戶的權限非常高。
若是想要訪問,可以按照以下步驟進行操作:
- 第一步:先在本地使用root賬戶登錄mysql
- 第二步:use mysql
- 第三步:update user set host=‘%’ where user=‘root’;
- 第四步:flush privileges;
- 第五步:退出,再以遠程方式登錄
3 初始化數據
3.1查看有多少個數據庫
show databases;
3.2 使用數據庫
use 數據庫名;
3.3 查看表
show tables
3.4 創建新的數據庫
create database 數據庫名;
3.5 刪除數據庫
drop database 數據庫名;
3.6 查看當前使用的數據庫
select database();
3.7 退出mysql
- exit
- quit
- ctrl+c
3.8 查看mysql版本
- 方式一:啟動數據庫后,用
select version();
查看 - 方式二:在cmd中輸入
mysql --version
3.9 熟悉表結構
desc 表名
;
3.10 初始化數據
- 你入職的時候,項目一般都是進展了一部分,多數情況下你進項目組的時候數據庫的表以及數據都是有的,項目經理第一天可能會給你一個較大的sql腳本文件,你需要執行這個腳本文件來初始化你的本地數據庫。(當然,也有可能數據庫是共享的。)
- 創建文件:xie.sql,把以上SQL語句全部復制到sql腳本文件中。
- 執行SQL腳本文件,初始化數據庫
- 第一步:命令窗口登錄mysql
- 第二步:創建數據庫xie(如果之前已經創建就不需要再創建了):create database xie;
- 第三步:使用數據庫xie:use xie;
- 第四步:source命令執行sql腳本,注意:source命令后面是sql腳本文件的絕對路徑。
4 查詢語句DQL專題
select語句永遠不會改變表的結構
4.1 簡單查詢
4.1.1 查詢一個字段
語法格式:select 字段名 from 表名;
4.1.2 sql語句寫錯了
輸入\c來終結該語句
4.1.2 查詢多個字段
語法格式:select 字段名,字段名,字段名… from 表名;
4.1.3 查詢一個表所有信息
語法格式:select * from 表名;
4.1.4查詢時字段可參與數學運算
例如:select deptno*12 from dept;
4.1.5 查詢時給字段起別名
可以起中文別名
- 情況一:select 字段 as 字段別名 from 表名;
- 情況二:select 字段 字段別名 from 表名;(as可以省略)
- 情況三:select 字段 ‘字段別名 1’ from 表名;(若是別名有空格必須給別名括上單引號或雙引號,其中單引號是標準)
4.2 條件查詢
條件 | 說明 |
---|---|
= | 等于 |
<>或!= | 不等于 |
>= | 大于等于 |
<= | 小于等于 |
> | 大于 |
< | 小于 |
between…and… | 等同于 >= and <= |
is null | 為空 |
is not null | 不為空 |
<=> | 安全等于(可讀性差,很少使用了)。 |
and 或 && | 并且 |
or 或 || | 或者 |
in | 在指定的值當中 |
not in | 不在指定的值當中 |
exists | |
not exists | |
like | 模糊查詢 |
4.2.1 條件查詢語法格式
select 字段名 from 表名 where 過濾條件;
執行順序,先from再where最后select
mysql無論是語句還是字段等內容都不區分大小寫,orcale區分大小寫
4.2.2 不等于查詢
在開發中一般使用<>表示不等于。
select * from emp where deptno<>10;
4.2.3 區間查詢
查詢工資在1600~3000的員工信息
between…and…是閉區間的。between 1000 and 2000 是包含1000和2000的。
- 方式一:
select * from emp where sal>=1600 and sal<=3000;
- 方式二:
select * from emp where sal between 1600 and 3000;
4.2.4 and和or的優先級問題
and和or同時出現時,and優先級較高,會先執行,如果希望or先執行,這個時候需要給or條件添加小括號。另外,以后遇到不確定的優先級時,可以通過添加小括號的方式來解決。對于優先級問題沒必要記憶。
4.2.5 between…and…
between…and…是閉區間的。between 1000 and 2000 是包含1000和2000的。
不僅能用在數字方面,字符串,日期方面也可以。
- 數字:
select * from emp where sal between 1600 and 3000;
- 字符串:
select ename from emp where ename between 'a' and 'z';
- 日期:
select * from emp where HIREDATE between ' 1982-01-23' and '1987-04-19';
4.2.6 is null is not null
判斷某個數據是否為null,不能使用等號,只能使用 is null 判斷某個數據是否不為null,不能使用不等號,只能使用 is not null 在數據庫中null不是一個值,不能用等號和不等號衡量,null代表什么也沒有,沒有數據,沒有值.
4.2.7 in not in
案例1:找出工作崗位是MANAGER和SALESMAN的員工姓名、薪資、工作崗位.
- 方式一:select ename,sal,job from emp where job= ‘MANAGER’ or job=‘SALESMAN’;
- 方式二:select ename,sal,job from emp where job in(‘MANAGER’,‘SALESMAN’);
4.2.8 in not in 與null的小細節
select * from emp where comm = NULL or comm = 300;
上述語句執行的效果如下:select * from emp where comm = 300;
NULL不能用等號=進行判斷,所以comm = NULL結果是false.
in是自動忽略NULL的,但not in是不忽略NULL的。
如下代碼:mysql> select * from emp where comm not in(null,300);
結果什么也查不出來。
4.2.9 模糊查詢
語法格式:select …from … where 字段1 like ‘通配符表達式’;
- %代表任意多個字符
- _代表任意一個字符
查含有下劃線的字符需要轉義_
5 排序操作
5.1 單個字段排序
語法格式:select .. from .. order by 字段 asc/desc
默認為升序。
5.2 多個字段排序
語法格式:select .. from .. order by 字段 asc/desc,字段 asc/desc
例子:查詢員工的編號、姓名、薪資,按照薪資升序排列,如果薪資相同的,再按照姓名升序排列。
select empno,ename,sal from emp order by sal asc,ename asc;
5.3 where和order by的位置
找出崗位是MANAGER的員工姓名和薪資,按照薪資升序排列。
select ename,sal from emp where job = 'MANAGER' order by sal asc;
where先執行,order by語句是最后執行的。
5.4 執行順序
首先執行where再執行from再執行select最后執行order by。
6 distinct去重
去除表中重復的記錄(聯合全部字段去重),但真實數據庫里面的不會改變。
distinct 出現在所有字段的最前方。
數據庫注意事項
當數據庫連接不上的時候,可以看看是不是在計算機管理的標準里面將數據庫關閉了。
`
where先執行,order by語句是最后執行的。
5.4 執行順序
首先執行where再執行from再執行select最后執行order by。
6 distinct去重
去除表中重復的記錄(聯合全部字段去重),但真實數據庫里面的不會改變。
distinct 出現在所有字段的最前方。
數據庫注意事項
當數據庫連接不上的時候,可以看看是不是在計算機管理的標準里面將數據庫關閉了。