mysql——2-18數(shù)據(jù)庫(kù)

mysql數(shù)據(jù)庫(kù)中 :
database : 文件夾
table : 數(shù)據(jù)表(數(shù)據(jù)文件)

進(jìn)入mysql
mysql -u 用戶(hù)名 -p 輸入密碼

顯示系統(tǒng)的database(文件夾)
查看存在的數(shù)據(jù)庫(kù)
show databases;

創(chuàng)建database
create database 名稱(chēng);

選擇database
use database名稱(chēng);
在當(dāng)前database可以隨時(shí)選擇其他的database 只需要直接use 名稱(chēng)即可

顯示數(shù)據(jù)文件
show tables;
顯示數(shù)據(jù)文件必須要在選擇database之后才可以進(jìn)行

刪除database
drop database 名稱(chēng);

查看表的詳細(xì)數(shù)據(jù)
desc 表名;

創(chuàng)建table
create table 表名(列名 類(lèi)型,列名1 類(lèi)型1,...列名N 類(lèi)型N);

刪除表
drop table 名稱(chēng);

插入數(shù)據(jù)
1.insert (into )表名 values(列值,列值1,...列值N);
該種插入方式必須與表中的列順序一致

2.insert (into) 表名(列名,列名1,...列名N) values(列值,列值1,...列值N);
制定某些列之后插入相對(duì)應(yīng)的值,可以不按照表中列順序插入,
并可以只插入一部分?jǐn)?shù)據(jù)

查詢(xún)數(shù)據(jù)
select 列名,列名1,...列名N from 表名;
最簡(jiǎn)單的查詢(xún)方式 :select * from 表名;

  • 一種通配符,用來(lái)代表所有列 一般情況下苍狰,工作中不使用
    因?yàn)樾枰嘁淮伪闅v查詢(xún)表內(nèi)列名

刪除數(shù)據(jù)
條件刪除 delete from 表名 where 列名 = 列值;

刪除全部數(shù)據(jù) delete from 表名;

更改數(shù)據(jù)
條件更改 update 表名 set 列名 = 列值 where 列名1 = 列值1;

更改全部數(shù)據(jù) update 表名 set 列名 = 列值;

別名機(jī)制
在數(shù)據(jù)庫(kù)中 一個(gè)列名之后直接添加一個(gè)未定義的單詞瓤帚,相當(dāng)于對(duì)該列進(jìn)行別名操作
例:select ename name from emp; name既是ename的別名 中間略寫(xiě)了關(guān)鍵字as
數(shù)據(jù)表也可以起別名份企,sql語(yǔ)句的執(zhí)行順序?yàn)?br> from起向右執(zhí)行君旦,執(zhí)行完畢后再?gòu)膕elect開(kāi)始向右執(zhí)行

條件查詢(xún)
查詢(xún)工資大于5000的員工的編號(hào)贡蓖、姓名和工資
select empno,ename,salary from emp where salary > 5000;

查詢(xún)工資大于5000且小于10000的員工的編號(hào)甩牺、姓名和工資
select empno,ename,salary from emp where salary > 5000 and salary < 10000;

查詢(xún)工資小于5000或大于10000的員工的編號(hào)蘑志、姓名和工資
select empno,ename,salary from emp where salary < 5000 or salary > 10000;

查詢(xún)工資在5000到10000之間的員工的編號(hào)、姓名和工資
select empno,ename,salary from emp
where salary between 5000 and 10000;

比較運(yùn)算符 > < = <>(!=) >= <=
在mysql中支持!=運(yùn)算符 但是贬派,部分?jǐn)?shù)據(jù)庫(kù)不支持!=運(yùn)算符急但,
一般情況下,<>運(yùn)算符是數(shù)據(jù)庫(kù)的通用"不等于"運(yùn)算符

邏輯運(yùn)算符 and(&&) or(||)
在mysql中支持&&和||運(yùn)算符搞乏,但是通用的邏輯運(yùn)算使用and和or

在做區(qū)間判斷時(shí)where 列名 between (列值begin) and (列值end)
between and是一個(gè)全閉區(qū)間波桩,左右值均包含

條件刪除、條件更新请敦、條件查詢(xún)都可以使用數(shù)據(jù)庫(kù)中的通用比較運(yùn)算符

查詢(xún)員工的月工資
select empno,ename,salary+ifnull(bonus,0) sal_month from emp;
列之間相加镐躲,就是列之間的值一一相加

查詢(xún)員工的姓名,編號(hào)侍筛,月工資萤皂,一年的基本工資,一年總獎(jiǎng)金匣椰,一年的總工資
select empno,ename,
salary+ifnull(bonus,0) sal_month,
salary12 sal_base_year,
bonus
12 bonus_year,
(salary+ifnull(bonus,0)) *12 sal_year from emp;
列還可以直接與一個(gè)常量做運(yùn)算裆熙,并且運(yùn)算結(jié)果依然可以做二次運(yùn)算

查詢(xún)員工編號(hào)為1001,1003,1005的員工編號(hào),姓名
select empno,ename from emp where empno in(1001,1003,1005);
in 查詢(xún)一個(gè)集合 但效率比較低 一般情況下不使用 一般情況下用exists替換

查詢(xún)出名字叫Lacus的員工的編號(hào)禽笑、姓名入录、工資
select empno,ename,salary from emp where ename = 'Lacus';
在mysql中查詢(xún)字符串信息時(shí)不區(qū)分大小寫(xiě),但在其他數(shù)據(jù)庫(kù)中區(qū)分
需要使用upper和lower做相應(yīng)的轉(zhuǎn)換

通用函數(shù)
ifnull(列名佳镜,value) 如果該列的某一個(gè)值為NULL僚稿,則修改為value
在部分?jǐn)?shù)據(jù)庫(kù)中該函數(shù)叫nvl

upper(列名) 將該列的值轉(zhuǎn)換為大寫(xiě)(對(duì)字符串列操作)
lower(列名) 將該列的值轉(zhuǎn)換為小寫(xiě)(對(duì)字符串列操作)

求出公司里的人數(shù)
select count(empno) emp_count from emp;
使用一個(gè)不會(huì)是空的列進(jìn)行查詢(xún),一般情況下使用編號(hào)列

求出公司員工所有人的總工資
select sum(salary + ifnull(bonus,0)) sum_sal from emp;

求出公司員工的平均工資
select avg(salary+ifnull(bonus,0)) avg_sal from emp;

求出公司員工的編號(hào)蟀伸、姓名蚀同、工資并按照工資從小到大的順序排序
select empno,ename,salary from emp order by salary asc;

asc : 正序 默認(rèn)排序方式 可省略
desc : 逆序 當(dāng)逆序排序時(shí) 在最后添加
當(dāng)條件查詢(xún)語(yǔ)句需要排序時(shí),要在語(yǔ)句最后添加排序

組函數(shù)
count(列名) 根據(jù)該列的值望蜡,返回相應(yīng)的數(shù)量
sum(列名) 根據(jù)該列的值唤崭,返回該列值的總和
avg(列名) 根據(jù)該列的值,返回該列的平均數(shù)
max(列名) 根據(jù)該列的值脖律,返回該列的最大值
min(列名) 根據(jù)該列的值谢肾,返回該列的最小值

查詢(xún)出公司每個(gè)部門(mén)的部門(mén)編號(hào)、該部門(mén)的人數(shù)小泉、該部門(mén)的工資總和
select deptno,count(empno),sum(salary) from emp group by deptno;

平均工資大于5000元的部門(mén)編號(hào)和平均工資芦疏,沒(méi)有部門(mén)的不算
select avg(salary) avg_sal,deptno from emp
group by deptno having avg_sal > 5000;
當(dāng)分組之后不可以使用where條件查詢(xún)只可以使用having

哪些職位的人數(shù)超過(guò)1個(gè)人冕杠?
select job,count(empno) from emp group by job
having count_emp > 1;

查詢(xún)調(diào)用組函數(shù)時(shí),如果語(yǔ)句中帶有普通列查詢(xún)酸茴,則必須做分組處理
group by 列名
分組處理的列一般情況下分预,就是所查詢(xún)的普通列,并且該列的值是有重復(fù)的

查詢(xún)出沒(méi)有獎(jiǎng)金的員工編號(hào)和姓名
select empno,ename from emp where bonus is NULL;

NULL的特性
1.任何與NULL做運(yùn)算的結(jié)果 都是NULL
2.被組函數(shù)忽略
3.在mysql中NULL默認(rèn)最小,在oracle中NULL默認(rèn)最大
4.在數(shù)據(jù)庫(kù)中判斷是否為NULL不可以用比較運(yùn)算符判斷
判斷是NULL is NULL 不是NULL is not NULL

子查詢(xún)
查詢(xún)出工資比Lacus高的員工的編號(hào)薪捍、姓名笼痹、工資
select empno,ename,salary from emp where salary >
(select salary from emp where ename = 'Lacus');

查詢(xún)出工資比Lacus低的員工的編號(hào)、姓名酪穿、工資,按照工資的從小到大的順序排序
select empno,ename,salary from emp where salary <
(select salary from emp where ename = 'Lacus') order by salary;

查詢(xún)出比部門(mén)20人數(shù)多的部門(mén)編號(hào)和部門(mén)人數(shù)
select deptno,count(empno) count_emp from emp group by deptno
having count_emp > (select count(empno) from emp where deptno = 20);

當(dāng)子查詢(xún)返回多列時(shí)
all 所有的 any 任意一個(gè)
誰(shuí)比所有的Lacus工資高
select empno,ename,salary from emp where salary >
all(select salary from emp where ename = 'Lacus');

誰(shuí)比任意一個(gè)Lacus工資高
select empno,ename,salary from emp where salary >
any(select salary from emp where ename = 'Lacus');

關(guān)聯(lián)子查詢(xún)
哪些員工的薪水比本部門(mén)的平均薪水低凳干?
select empno,ename,salary from emp e1 where salary <
(select avg(salary) from emp e2 where e1.deptno = e2.deptno);

求每個(gè)部門(mén)的最高工資的員工的編號(hào)和姓名
select empno,ename,salary from emp e1 where salary =
(select max(salary) from emp e2 where e1.deptno = e2.deptno);

exists
哪些人是其他人的經(jīng)理?
select empno,ename from emp where empno in
(select mgr from emp where mgr is not null);

select empno,ename from emp where empno = any
(select mgr from emp where mgr is not null);

select empno,ename from emp e1 where exists
(select 1 from emp e2 where e1.empno = e2.mgr);

exists 判斷時(shí) 判斷的是一個(gè)bool類(lèi)型被济,不判斷列值是否相同
書(shū)寫(xiě)時(shí) 直接按照where exists的方式使用
子查詢(xún)中 select不需要返回一個(gè)列值救赐,只需要返回一個(gè)bool值
所以不需要查詢(xún)某一列 一般情況下我們用select 1(一個(gè)常量)做查詢(xún)條件

誰(shuí)和拉克絲同部門(mén)?列出除了拉克絲的人
select empno,ename from emp where deptno in
(select deptno from emp where ename = 'Lacus')
and ename <> 'Lacus';

select empno,ename from emp where deptno = any
(select deptno from emp where ename = 'Lacus')
and ename <> 'Lacus';

select empno,ename from emp e1 where exists
(select 1 from emp e2 where e1.deptno = e2.deptno and e2.ename = 'Lacus')
and ename <> 'Lacus';

誰(shuí)是拉克絲的下屬只磷?
select empno,ename from emp where mgr in
(select empno from emp where ename = 'Lacus');

select empno,ename from emp where mgr = any
(select empno from emp where ename = 'Lacus');

select empno,ename from emp e1 where exists
(select 1 from emp e2 where e1.mgr = e2.empno and e2.ename = 'Lacus' );

in between...and... exists
都可以在使用前面添加not 用來(lái)表示不在這些數(shù)據(jù)中

哪些人不是別人的經(jīng)理经磅?
select empno,ename from emp where empno not in
(select mgr from emp where mgr is not null);
in的方式中需要去掉null值 否則判斷不正確

select empno,ename from emp where empno <> all
(select mgr from emp where mgr is not null);

select empno,ename from emp e1 where not exists
(select 1 from emp e2 where e1.empno = e2.mgr);

哪些部門(mén)沒(méi)有員工?
select deptno from dept where deptno not in
(select deptno from emp);

select deptno from dept where deptno <> all
(select deptno from emp);

select d.deptno from dept d where not exists
(select 1 from emp e where d.deptno = e.deptno);

表間關(guān)聯(lián)查詢(xún) 表A join 表B on 條件
查詢(xún)出所有員工的編號(hào)钮追、姓名预厌、部門(mén)名和工作地點(diǎn)
select e.empno,e.ename,d.dname,d.location from emp e,dept d
where e.deptno = d.deptno; 部分?jǐn)?shù)據(jù)庫(kù)不支持

select e.empno,e.ename,d.dname,d.location from
emp e (inner) join dept d on e.deptno = d.deptno;

inner 可略
默認(rèn)按照inner的方式關(guān)聯(lián) 內(nèi)聯(lián)聯(lián)接 取兩個(gè)表中的交集

外連接
左外連接 驅(qū)動(dòng)表 left outer join 匹配表 on 條件
顯示驅(qū)動(dòng)表中的所有數(shù)據(jù),匹配表進(jìn)行匹配

查詢(xún)出所有員工的編號(hào)元媚、姓名配乓、部門(mén)名和工作地點(diǎn) 把沒(méi)有部門(mén)的員工也顯示出來(lái)
select e.empno,e.ename,d.dname,d.location from
emp e left outer join dept d on e.deptno = d.deptno;

select e.empno,e.ename,d.dname,d.location from
dept d right outer join emp e on e.deptno = d.deptno;

右外連接 驅(qū)動(dòng)表 right outer join 匹配表 on 條件
顯示匹配表中的所有數(shù)據(jù),驅(qū)動(dòng)表進(jìn)行匹配

查詢(xún)出所有員工的編號(hào)惠毁、姓名、部門(mén)名和工作地點(diǎn) 把沒(méi)有員工的部門(mén)也顯示出來(lái)
select e.empno,e.ename,d.dname,d.location from
emp e right outer join dept d on e.deptno = d.deptno;

select e.empno,e.ename,d.dname,d.location from
dept d left outer join emp e on e.deptno = d.deptno;

全外連接
select e.empno,e.ename,d.dname,d.location from
emp e left outer join dept d on e.deptno = d.deptno
union
select e.empno,e.ename,d.dname,d.location from
emp e right outer join dept d on e.deptno = d.deptno;

full outer mysql不支持 在其他數(shù)據(jù)庫(kù)中均支持
select e.empno,e.ename,d.dname,d.location from
emp e full outer join dept d on e.deptno = d.deptno;

union 聯(lián)合 返回兩次查詢(xún)的結(jié)果 去掉重復(fù)的數(shù)據(jù)
將不重復(fù)的結(jié)果都打印
一般情況下 用于全外連接和做合計(jì)相關(guān)的數(shù)據(jù)查詢(xún)
注:聯(lián)合的后段查詢(xún)結(jié)果 不會(huì)顯示相應(yīng)的列名崎页,
而是按照前段的查詢(xún)結(jié)果顯示
在程序接收數(shù)據(jù)時(shí)有可能造成接收困難

自鏈接 當(dāng)前表與當(dāng)前表的另外一個(gè)別名進(jìn)行表間關(guān)聯(lián)查詢(xún)
顯示員工的編號(hào)鞠绰、姓名和他的上司姓名
select e1.empno,e1.ename,e2.ename from emp e1
join emp e2 on e1.mgr = e2.empno;

模糊條件查詢(xún) like
需要配合通配符使用
% 寫(xiě)在查詢(xún)的值的內(nèi)部
例:like '%valueTemp%' 數(shù)據(jù)中存在valueTemp的值都查詢(xún)
注:可以操作基本數(shù)字類(lèi)型,只是操作時(shí)依然需要添加'' 因?yàn)閙ysql在這種情況飒焦,
將數(shù)據(jù)轉(zhuǎn)換為varchar類(lèi)型

_ 寫(xiě)在查詢(xún)的值得內(nèi)部
例:like 'valueTemp' 一共三個(gè)值 第二個(gè)值是valueTemp的數(shù)據(jù)
注:一般情況下是配合%使用的通配符蜈膨,獨(dú)立使用的情況比較少
例:like '_valueTemp%' 查詢(xún)出第二個(gè)值是valueTemp的數(shù)據(jù)

查詢(xún)出名字里第三個(gè)字母是e的員工的編號(hào)、姓名牺荠、工資翁巍、工作部門(mén)名稱(chēng)和工作地點(diǎn)
按照工資從大到小的順序排序
select e.empno,e.ename,e.salary,d.dname,d.location from
emp e join dept d on e.deptno = d.deptno
where e.ename like '__e%' order by e.salary desc;

去重 distinct
加在列名之前
查詢(xún)公司的職位都有哪些?
select distinct job from emp;
注:一個(gè)select對(duì)應(yīng)下 一般情況只有一個(gè)distinct,
并且一般情況下不會(huì)出現(xiàn)去重列后查詢(xún)其他列
因?yàn)槿ブ亓惺菬o(wú)法判斷行數(shù)的休雌,會(huì)導(dǎo)致數(shù)據(jù)混亂

復(fù)制表
create table 表名 select 列名 from 表名
復(fù)制結(jié)果集

復(fù)制表內(nèi)數(shù)據(jù)
insert into 表名 select 列名 from 表名

在數(shù)據(jù)庫(kù)中 對(duì)比于c/c++新增了一個(gè)新的類(lèi)型date
專(zhuān)門(mén)用于存儲(chǔ)日期類(lèi)型的數(shù)據(jù)類(lèi)型
在mysql date的延伸類(lèi)型 time timestamp datetime year
timestamp 默認(rèn)存儲(chǔ)當(dāng)前時(shí)間灶壶,當(dāng)修改同一行數(shù)據(jù)時(shí)會(huì)默認(rèn)修改

在mysql中 時(shí)間函數(shù) :
now() : yyyy-mm-dd hh:mm:ss 年-月-日 時(shí):分:秒
current_time() : hh:mm:ss 時(shí):分:秒 可略寫(xiě)為curtime();
current_date() : yyyy-mm-dd 年-月-日 可略寫(xiě)為curdate();

求出所有員工的編號(hào)、姓名和工作天數(shù)
select empno,ename,to_days(curdate())-to_days(hiredate) work_day from emp;

select empno,ename,datediff(curdate(),hiredate) work_day from emp;

索引 index
類(lèi)似于目錄式另外的一個(gè)數(shù)據(jù)文件 當(dāng)條件查詢(xún)時(shí)可以加快

< >= <= in not in <> between...and... not between...and...

但是提高查詢(xún)效率的同時(shí)杈曲,會(huì)降低插入驰凛、修改和刪除的效率胸懈,因?yàn)樗饕募?br> 會(huì)與表本身同步更新
索引文件會(huì)根據(jù)表中數(shù)據(jù)的增大而增大,占用硬盤(pán)空間恰响,容易造成服務(wù)器硬盤(pán)溢出

創(chuàng)建一個(gè)一般索引
create index 名稱(chēng) on 表名(列名);

刪除一個(gè)一般索引
drop index 名稱(chēng) on 表名

索引還區(qū)分為 組合索引趣钱,主鍵索引,聚簇索引

事務(wù) begin
在mysql中默認(rèn)情況下 想要進(jìn)行事務(wù)處理
需要先進(jìn)行一次begin操作
begin執(zhí)行后才可以進(jìn)行一下操作
commit
提交 確定begin之后的操作 使其不可以rollback
rollback
撤銷(xiāo) begin之后的操作可以退回到?jīng)]有操作時(shí)的狀態(tài)

事務(wù)操作只可以操作上一次事務(wù)胚宦,無(wú)法連續(xù)撤銷(xiāo)
set autocommit = 1/0 可以設(shè)置開(kāi)啟事務(wù)或關(guān)閉事務(wù)

contraint 約束
not null 不可為空
unique 不可重
primary key 主鍵(主鍵索引)
default value 默認(rèn)值
auto_increment 自增長(zhǎng)列
foreign key 外鍵約束(組合索引)
在表的基本列寫(xiě)完之后首有,按照以下方式:
foreign key(本表列名) references 主表名(主表列)

約束可以提高插入數(shù)據(jù)的準(zhǔn)確性,但是因?yàn)橄到y(tǒng)需要匹配約束條件枢劝,所以會(huì)降低修改數(shù)據(jù)的效率

修改數(shù)據(jù)表結(jié)構(gòu)
alter table 表名 action

action :
add 添加
set 設(shè)置
change 改變
modify 修改
CHANGE 對(duì)列進(jìn)行重命名或更改列的類(lèi)型井联,需給定舊的列名稱(chēng)和新的列名稱(chēng)、當(dāng)前的類(lèi)型
MODIFY 可以改變列的類(lèi)型呈野,此時(shí)不需要重命名(不需給定新的列名稱(chēng))
drop 刪除
engine 改變類(lèi)型
rename 改名

什么是觸發(fā)器低矮?
什么是事務(wù)寒瓦?什么是鎖赦肃?
什么叫視圖?游標(biāo)是什么怎茫?
數(shù)據(jù)庫(kù)中常見(jiàn)的幾種約束有哪些昨悼?
分別代表什么意思蝗锥?如何使用?

1, 數(shù)據(jù)庫(kù)編程(每小題3分)
有如下表:
Student(S#,Sname,Sage,Ssex) 學(xué)生表
Course(C#,Cname,T#) 課程表
SC(S#,C#,score) 成績(jī)表
Teacher(T#,Tname) 教師表
注:S#為學(xué)生編號(hào)率触,C#為課程編號(hào)终议,T#為教師編號(hào)

  1. 查詢(xún)“001”課程比“002”課程成績(jī)高的所有學(xué)生的學(xué)號(hào)
    select s1.S# from SC s1 join SC s2 on s1.S# = s2.S# and s1.score > s2.score and s1.C# = 001 and s2.C# = 002;

  2. 查詢(xún)平均成績(jī)大于60分的同學(xué)的學(xué)號(hào)和平均成績(jī)
    select S#,avg(score) avg_score from SC group by S#
    having avg_score > 60;

  3. 查詢(xún)所有同學(xué)的學(xué)號(hào)、姓名葱蝗、選課數(shù)穴张、總成績(jī)
    select s.S#,s.Sname,count(sc.C#) count_course,
    sum(sc.score) sum_score from Student s
    join SC sc on s.S# = sc.S# group by s.s#;

  4. 查詢(xún)沒(méi)學(xué)過(guò)“葉平”老師課的同學(xué)的學(xué)號(hào)、姓名
    select S#,Sname from Student s1 where not exists
    select 1 from Student s2 join SC sc
    on s.S# = sc.S# where s1.S# = s2.S# and sc.C# =
    (select C# from Course where T# =
    (select T# from Teacher where Tname = '葉平'));

  5. 刪除學(xué)習(xí)“葉平”老師課的SC表記錄
    delete from SC where C# =
    (select C# from Course c
    join Teacher t on c.T# = t.T# and
    t.Tname = '葉平');

  6. 查詢(xún)不同老師所教不同課程平均分從高到低顯示
    select avg(score) avg_score from SC sc
    join Course c on sc.C# = c.C#
    group by c.T# order by avg_score desc;

  7. 查詢(xún)兩門(mén)以上不及格課程的同學(xué)的學(xué)號(hào)及其平均成績(jī)
    select S#,avg(score) avg_score from SC sc1
    where exists(select 1 from
    (select S#,score from score where score < 60) sc
    where sc1.S# = sc.S#
    group by sc.S# having count(sc.S#) >= 2)
    group by S#;

  8. 查詢(xún)各科成績(jī)前三名的記錄:(不考慮成績(jī)并列情況)
    select score,C# from SC sc1 where sc1.score =
    (select score from SC sc2 where sc1.C# = sc2.C#
    order by score desc limit 1) or sc1.score =
    (select score from SC sc2 where sc1.C# = sc2.C#
    order by score desc limit 1,1) or sc1.score =
    (select score from SC sc2 where sc1.C# = sc2.C#
    order by score desc limit 2,1) order by C#;

  9. 查詢(xún)各科成績(jī)最高和最低的分:以如下形式顯示:課程ID两曼,最高分皂甘,最低分
    select C#,max(score) max_score ,min(score) min_score from SC group by C#;

  10. 查詢(xún)學(xué)過(guò)“001”并且也學(xué)過(guò)編號(hào)“002”課程的同學(xué)的學(xué)號(hào)、姓名;
    select S#,Sname from Student s
    where exists(
    select 1 from SC sc1 where C# = 1
    and exists
    (select 1 from SC sc2 where C# = 2
    and sc1.S# = sc2.S#) and s.S# = sc1.S#);

主鍵:唯一確定一條記錄悼凑〕フ恚可以由一個(gè)或多個(gè)字段產(chǎn)生。
create table student(stuId int not null auto_increment primary key
, stuName varchar(32) not null default 'NewStu'
, stuSex char(7) not null default 'male'
, stuAge int not null default 18
, stuPart varchar(32) not null default 'computer');

create table teacher(tecId int not null auto_increment
, tecName varchar(32) not null default 'NewTec'
, salary float not null default 3000
, primary key(tecId));

外鍵:若表中的某字段的值需要依賴(lài)于其他表中的某個(gè)字段户辫,則把該字段申明為外鍵
create table course(couId int not null auto_increment
, couName varchar(32) not null default 'NewCou'
, tecId int not null
, primary key(couId)
, foreign key(tecId) references teacher(tecId));

create table score(stuId int not null
, couId int not null
, mark float not null default 60
, primary key(stuId, couId)
, foreign key(stuId) references student(stuId)
, foreign key(couId) references course(couId));

刪除

mysql> delete from student where id = 10009; //如果不加條件--delete from student渐夸,則會(huì)將表中數(shù)據(jù)全部清除

修改重置

update student set age = 20 where id = 10005;  //如果不加條件--update student set age = 20,則會(huì)將表中所有age字段的設(shè)置為20
mysql> update student set age=age-4,dept='math' where id = 10007;
mysql> update student set age=age+3 where age >= 20;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末渔欢,一起剝皮案震驚了整個(gè)濱河市墓塌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖桃纯,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酷誓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡态坦,警方通過(guò)查閱死者的電腦和手機(jī)盐数,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)伞梯,“玉大人玫氢,你說(shuō)我怎么就攤上這事∶战耄” “怎么了漾峡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)喻旷。 經(jīng)常有香客問(wèn)我生逸,道長(zhǎng),這世上最難降的妖魔是什么且预? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任槽袄,我火速辦了婚禮,結(jié)果婚禮上锋谐,老公的妹妹穿的比我還像新娘遍尺。我一直安慰自己,他們只是感情好涮拗,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布乾戏。 她就那樣靜靜地躺著,像睡著了一般三热。 火紅的嫁衣襯著肌膚如雪鼓择。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天就漾,我揣著相機(jī)與錄音惯退,去河邊找鬼。 笑死从藤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锁蠕。 我是一名探鬼主播夷野,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼荣倾!你這毒婦竟也來(lái)了悯搔?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舌仍,失蹤者是張志新(化名)和其女友劉穎妒貌,沒(méi)想到半個(gè)月后通危,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灌曙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年菊碟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片在刺。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逆害,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蚣驼,到底是詐尸還是另有隱情魄幕,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布颖杏,位于F島的核電站纯陨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏留储。R本人自食惡果不足惜翼抠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望欲鹏。 院中可真熱鬧机久,春花似錦、人聲如沸赔嚎。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)尤误。三九已至侠畔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間损晤,已是汗流浹背软棺。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尤勋,地道東北人喘落。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像最冰,于是被迫代替她去往敵國(guó)和親瘦棋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容