日常筆記之數據庫入門

 

數據庫:按照數據結構來組織、存儲、管理數據的倉庫

好處:可以存儲大量的數據、安全

常見的數據庫有哪些:oralce 數據庫            oralce公司

                                    sql-server 數據庫      微軟公司

                                    mysql 數據庫             oralce 公司


 權限

dba:數據庫管理員(Database Manager admin)

DCL(Data Control Language):數據庫控制語言,用來定義訪問權限和安全級別

如何創建用戶:create user 用戶名@地址 identified by '密碼';

地址:給的是電腦IP地址

如何查看電腦的IP地址:cmd命令  ipconfig

本機地址爲  localhost

如何查看數據庫中有哪些用戶

進入系統數據庫中:use mysql;

查看用戶表:select host,user from user;

給用戶權限

grant 權限1,權限2,... on 數據庫名稱.* to 用戶名@地址;

查看用戶的權限

show grants for 用戶名@地址;

刪除用戶名的操作

drop user 用戶名@地址;

管理數據庫:

1.登錄

2.操作數據庫:

                     

查看有哪些數據庫:  show databases;

創建數據庫:       create database 數據庫名稱;

刪除數據庫:       drop database 數據庫名稱;

使用數據庫:       use 數據庫名稱;

查看當前數據庫名稱:select database();

查看數據庫中的編碼:status;

修改數據庫中的編碼:alter database 數據庫名稱 character set gbk;
   
查看錶中的編碼:   show create table 表名;

修改表的編碼:     alter table 表名 character set gbk;

修改表中字段的編碼:alter table 表名 change 字段 字段 數據類型 set gbk;

3.數據庫中操作表

常用的數據類型

日期:date    年-月-日(3個字節)

時間:time    時:分:秒(3個字節)

日期+時間:datetime    年-月-日 時:分:秒(8個字節)

整型:int (4個字節,正負21億)

浮點型:

float(m,d)(4個字節,單精度,m總個數,d小數位)

double(m,d)(8個字節,雙精度,m總個數,d小數位)

字符串:varchar(n)(n設置字符的長度) 

注:定義表的時候告訴字段只能放什麼數據

查看數據庫中有哪些表: show tables;

創建表:              create table 表名(字段名稱1 數據類型1,字段名稱2 數據類型2);

刪除表:              drop table 表名;

查看錶的信息:        desc 表名;

添加字段:            alter table 表名 add 字段名稱 數據類型;

刪除字段:            alter table 表名 drop 字段名稱;

修改字段:            alter table 表名 change 修改的字段 新的字段 數據類型;

修改字段類型:        alter table 表名 modify 字段 數據類型;

修改表的名稱:        alter table 舊的表名 rename to 新的表名;

4.往表中操作數據

添加數據:          insert into 表名(字段1,字段2,...) values(值1,值2,...);
可以添加多條數據
                   insert into 表名(字段1,字段2,...) values(值1,值2,...),(值1,值2,...);
可以只添加一個字段(沒有添加的字段數據默認爲null)
注:字符串數據要用''引起來

刪除數據:         update 表名 set 修改的字段1='值1',字段2='值2' where 條件;

刪除整行數據:     delete from 表名 where 條件;

5.select 基本查詢

查詢所有的列: select * from 表名;

查詢指定的列: select 列名1,列名2 from 表名;

6.where 條件查詢   

運算符的查詢

= 、 != 、 <> 、 < 、 > 、 <= 、 >=

select * from 表名 where 條件;

 

連接查詢

and 

select * from 表名 where 條件1 and 條件2;
區間查詢

between ... and ...;

select * from 表名 where 列名 between 值1 and 值2;
邏輯查詢

1.or 或者

select * from 表名 where 條件1 or 條件2;

2.in 在...裏面(領域範圍)

select * from 表名 where 列名 in(值1,值2,...);

3.not in 不在...裏面

select * from 表名 not in(值1,值2,...);

4.is null 是空的

select * from 表名 where 列名 is null;

5.is not null  不是空的

select * from 表名 where 列名 is not null;
模糊查詢:模糊查詢用like(相似)

其中"_"爲一個空格佔一個位置(一個位置一個字符)
其中"%"佔多個位置)(多個字符)

1.select * from 表名 where 列名 like"_h%";
查詢第二個字母爲"h"的...

2.select * from 表名 where 列名 like"zhang%";
查詢姓"zhang"什麼的...

3.select * from 表名 where 列名 like"%a%";
查詢什麼中包含"a"的...

 7.去除重複

去除重複 distinct

select distinct 列名 from 表名;

8.取別名 

取別名 as(可以省略)

列取別名

select 列名 as '別名' from 表名;

表取別名

select e.ename,e.empno from emp e;

9.排序 

排序(不管做什麼操作都是查詢結果後排序)

order by asc(升序)
         desc(降序)

select * from 表名 

order by 列名 asc/desc;

10.聚合函數

聚合函數

count(統計)
select count(列名) from 表名;
select count(distinct 列名) from 表名;

sum(求和)
select sum(列名) from 表名;

avg(平均數)
select avg(列名) from 表名;

max(最大值)
select max(列名) from 表名;

min(最小值)
select min(列名) from 表名;

11.分組查詢

分組查詢(有重複的數據纔可以分組)

select 列名1,列名2 from 表名

group by 列名1;

 12.having 子句

having 子句

having 是對“分組後”數據的約束

select 列名1,列名2 from 表名

group by 列名1

having 條件;

13.分頁查詢 

分頁查詢

limit

select * from 表名 limit 值1(從哪裏開始),值2(查詢多少條數據);

 14.連接查詢

內連接:都滿足條件就給查出來

select e.ename,e.deptno,d.dname,d.loc

from emp e join dept d on e.deptno=d.deptno;



外連接:查詢出的結果存在不滿足條件的可能

左連接:先查詢出左表,然後查詢右表,右表中滿足條件的顯示出來,不滿足條件的顯示null

select e.empno,e.ename,e.deptno,d.dname,d.loc

from emp e left join dept d on e.deptno=d.deptno;


右連接:先查詢右表,然後查詢左表,左表中滿足條件的顯示出來,不滿足條件的顯示爲null

select e.empno,e.ename,d.deptno,d.dname,d.loc

from emp e right join dept d on e.deptno=d.deptno;



子查詢:嵌套查詢,即select 中包含 select

單行單列           (用於條件)
單行多列  in       (用於條件)
多行單列  all,any (用於條件)
多行多列  作爲臨時表(用於表)

                                                                      


表的約束

完整性約束是爲了表的數據的正確性,如果數據不正確,那麼一開始就不能添加到表中

主鍵:唯一約束

主鍵列的值不能爲null,也不能重複

每張表最好只能有一個主鍵,指定主鍵約束使用 primary key 關鍵字

not null 如果給空是不能插入數據的

primary key 如果主鍵有重複的不能插入數據

primary key 主鍵

auto_increment 自動遞增
外鍵約束

主外鍵構成表與表關聯的唯一途徑

外鍵是另一張表的主鍵

constraint fk_約束名稱 foreing key(外鍵字段) references 關聯的表(關聯的字段);

 

簡單的存儲過程

概念類似於函數,就是把一段代碼封裝起來

當要執行這段代碼的時候,可以通過調用該存儲過程來實現

create procedure 程序名稱()

begin

    sql語句

end;


調用存儲過程  

call 程序名稱();


帶參數的存儲過程

create procedure 程序名稱(參數)

begin

    sql語句

end;

調用存儲過程

call 程序名稱(參數);

索引:主要思想是將數據分段,從而減少查詢時的無效數據,提高查詢效率


什麼是視圖:視圖是有查詢結果形成的一張虛擬表

什麼時候要用到視圖:某個查詢結果出現的非常頻繁,也就是要經常拿這個查詢結果來做子查詢

create view 視圖名 as select 語句;

可以用視圖名這個臨時表來使用

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章