MySql資料庫(基礎)

2021-08-02 14:51:57 字數 3990 閱讀 3388

學習資料庫,我覺得關鍵在於記住相關的英文單詞。把自己比較陌生的寫下來,便於記憶

查詢表結構(desc +表名)

修改表頭欄位都是(alter table...開頭)

給建立好的表新增位址字段,例如給學生表新增gender varchar(2)字段

alter table student add column gender varchar(2)

修改gender字段值為varchar(3)

-------------------------modify column gender varchar(3)

將gender欄位改為***字段值為varchar(2)

-------------------------change column gender *** varchar(2)

刪除gender欄位

--------------------------drop column gender

檢視表的資料(select+欄位名字+from student;如果檢視所有表 select *from+表名)

按條件查詢,只需要在後面加上where+條件

例如查詢age欄位為null的學生(is null):select*from student where age is null

查詢指定別名:select name '姓名' from student

合併兩項查詢例如合併servle和jsp的成績 (只能合併數值型別的字段):select (servle+jsp)'總成績' from student

去除重複值查詢,例如有幾個學生來自同乙個地方,但是只想讓這個地方名字只顯示一次:

select distinct address from student

-- 查詢address欄位不為''的學生(<>'')-- 查詢select * from student where address<>'';

聚合函式

查詢某個欄位的(總和,平均分,最大,最小)值:select sum(欄位名)fom student

排序,例如,按照字段公升序asc(降序 desc)排序:select*from student order by id desc

給資料表中插入元素(insert into+表名開頭)

插入所有字段:insert into student values(...填入相應的值)

插入某個字段:insert into student(id,name)values(1,郭德綱)

修改表內元素值(update+表名)

將所以學生年齡修改為50:update student set age=50

將id=1的學生名字改為小明年齡改為40:------------------set name='小明',age=40 where id=1

刪除資料(delete from)

刪除所以表元素:delete from student  (本質上是一條條刪,效率比較慢。無法重置自增長主鍵)

------------------------truncate table student(將全表資料直接刪除,效率高。可以重置自增長主鍵)

刪除id為1的資料:-------------------------where id=1

資料約束(當給這個字段沒有新增值的時候,會給乙個預設值,如果給預設值約束的字段新增的值為null的時候,那麼他的字段值就為null)

預設值約束(default)例如在建立學生表時gender varchar(20)default '男'  (就是給性別預設為男,如果在新增元素時沒有給出gender值,就預設為 男)

非空約束(not null),插入的字段不為null,而且必須插入資料:id int not null

唯一約束(unique)

當我們給id欄位設定了主鍵約束後,這個id欄位就非空+唯一了(primary key)

自增長約束(auto_increment)

主鍵自增長(primary key auto_increment)設定主鍵自增長約束,我們其實就將id這個字段交給了資料庫自己去維護,我們自己不需要去動他

外來鍵約束:constraint emp_dept_fk foreign key(deptid) references dept(id)

宣告      外來鍵名稱           外來鍵            字段            依賴於         那張表的那個字段

1.給副表中插入主表中不存在的資料的時候,外來鍵起作用

2.當將副表中的資料改為主表中不存在的資料的時候,外來鍵起作用

3.當我們刪除附表中還在使用的主表中的資料的時候,外來鍵起作用

當我們有了外來鍵之後,我們該怎麼去運算元據庫呢

1.插入資料的時候,先插入主表,再插入副表

2.當我們修改副表中的資料的時候,先修改主表

3.刪除主表資料的時候,先得將副表中的資料刪除乾淨,再去刪除主表中的資料

級聯技術:當我們修改或者刪除主表的時候,同時能夠影響到副表的資料

constraint emp_dept_fk foreign key(deptid) references dept(id) on update cascade on delete cascade

宣告      外來鍵名稱   外來鍵        字段               依賴於     那張表的那個字段

儲存空間和你的查詢效率之間是乙個矛盾的東西,當你降低了資料的冗餘度的時候你的查詢效率就會降低

-當資料的儲存空間占用的比較大的時候,我們不關心資料冗餘這個問題的時候,但是查詢效率比較高

多表查詢

1.交叉連線查詢:select name,deptname  from employee,dept;

2.內連線查詢(用得最多):只有滿足連線條件的時候結果才會給予顯示:

select e.name,d.deptname

-- 需要查詢的表

from employee e,dept d

-- 連線條件

where e.deptid=d.id;

-- 內連線另一種寫法

select name,deptname

from employee e

inner join dept d

on e.deptid=d.id;

左外連線查詢:左表資料滿足連線條件就顯示滿足連線條件的資料,當不滿足鏈結條件的時候顯示null

左表和右表的區分:left outer join左邊的就叫左表,右邊的就叫右表

select deptname,name

from dept d

left outer join employee e

on e.deptid=d.id;

右外連線查詢:優先顯示右表,如果滿足連線條件就顯示滿足連線條件的資料,如果不滿足連線條件就顯示null

儲存過程的語法

delimiter $  -- 宣告乙個結束符

create procedure pro_test(輸入或者輸出引數)

begin

帶有邏輯的sql語句

end$

根據上面的語法敘述,建立乙個不帶引數的儲存過程,並呼叫

delimiter $

create procedure pro_test2()

begin

-- 這裡面寫sql語句

select * from employee where id=2;

end$

-- 呼叫上面的儲存過程

call pro_test2();

建立乙個帶有輸入引數的儲存過程

給儲存過程傳入員工id查詢對應的員工資訊

delimiter $

create procedure pro_queryempbyid(in eid int)

begin

select * from employee where id=eid;

end$

更改root這個使用者名稱的密碼為root

update user set password=password('root') where user='root';

資料庫 mysql 基礎

1.建立 create database 資料庫名 例如建立名為d testdb的資料庫 mysql create database d testdb 2.修改 alter database 資料庫名 character set 字符集名 例如修改字符集 set utf8 3.刪除 drop dat...

mysql資料庫基礎

乙個表不能有多個主鍵?解釋 不能,乙個表中有且只能有乙個主鍵,大事兩列 字段 可以作為乙個主鍵 例如 mysql create table t name varchar 5 addr varchar 28 age int 5 primary key name,addr 為什麼要設定主鍵?資料庫儲存的...

MySQL資料庫基礎

1.什麼是資料庫?儲存資料一般用檔案就可以,那麼為什麼要用資料庫呢?檔案儲存資料是有缺點的 為了解決上述問題,資料庫就出現了,資料庫能更有效的管理資料。注意 資料庫的水平是衡量乙個程式設計師水平的重要指標。因此,資料庫是高效的儲存和處理資料的介質 介質主要是兩種 磁碟和記憶體 2.目前主流的資料庫 ...