安卓手機應(yīng)用市場杭州seo工作室
#課程目標
- 能夠創(chuàng)建、刪除數(shù)據(jù)表
- 能夠?qū)Ρ砝锏?#61;=數(shù)據(jù)記錄==進行==增加、刪除、修改、查詢操作==
- 能夠==創(chuàng)建、刪除用戶==
- 能夠給==用戶授權(quán)并回收權(quán)限==
- 了解delete和truncate語句的區(qū)別
#一、數(shù)據(jù)庫基本操作
##1、查看數(shù)據(jù)庫相關(guān)信息
mysql> show databases; 查看所有數(shù)據(jù)庫 mysql> show schemas; 查看所有數(shù)據(jù)庫 mysql> use 數(shù)據(jù)庫名; 指定數(shù)據(jù)庫,類似于進入到某個庫里進行操作 mysql> show tables; 查看所有表 mysql> show variables; 查看變量 mysql> show variables like '%char%'; mysql> show variables like '%data%'; mysql> show engines; 查看存儲引擎 ? 說明:";"號代表一條sql語句結(jié)束,所以,每條SQL語句結(jié)束都需要加";"
2、服務(wù)器字符集設(shè)置
注意:只要是永久更改,必然更改配置文件!
[mysqld] basedir=/mysql_3306 datadir=/mysql_3306/data socket=/tmp/mysql.sock character-set-server=utf8mb4 collation-server=utf8mb4_general_ci
3、創(chuàng)建庫(==create database==)
創(chuàng)建db1庫 create database db1; 創(chuàng)建db1庫并指定默認字符集 create database db1 default charset gbk; 如果存在不報錯(if not exists) create database if not exists db1 default character set utf8; 說明:不能創(chuàng)建相同名字的數(shù)據(jù)庫!
##4、更改數(shù)據(jù)庫信息(==alter database==)
更改db1庫的默認字符集 alter database db1 default character set gbk; alter database db2 default charset utf8;
##5、刪除數(shù)據(jù)庫(==drop database==)
刪除db1庫 drop database db1;
#二、數(shù)據(jù)表基本操作
##1、創(chuàng)建表(==create table==)
###㈠ 語法格式
create table 表名 (字段1,字段2,...) create table 表名 (字段1 數(shù)據(jù)類型(字符長度),字段2,...) create table 表名 (字段1 數(shù)據(jù)類型(字符長度) 約束條件,字段2,...)
###㈡ 示例
創(chuàng)建t1表,id列整型,name列字符串 int(10) varchar(30) ? create table t1 (id int,name varchar(10)); 創(chuàng)建t2表,id列整型,并且為主鍵,name列字符串 create table t2 (id int key,name varchar(20) not null,......) 查看表的結(jié)構(gòu) desc t1; describe t2;
##2、插入記錄(==insert into==)
以下是往表里插入數(shù)據(jù)的幾種不同方法 insert into 表名 set 字段1=xx,字段2=xx; insert into t1 set id=3,name='li'; ? insert into 表名 values(值1,值2),(值1,值2) insert into t1 values(1,'zhang'),(2,'wang'); ? insert into 表名 (指定字段1,指定字段2) values(字段1值,字段2值); insert into t2 (id,name) values(3,'li'); ? ? insert into t1 select * from t2; insert into t1(name) select name from t2; 說明: 1.插入的數(shù)據(jù)來自于另外一張表 2.一定要保證兩張表的結(jié)構(gòu)一致(插入表里字段數(shù)和后面表查找出來的字段要相匹配) 3.兩張表結(jié)構(gòu)完全一致;或者人造讓兩邊字段一致 ? 查詢表里所有記錄 select * from t1;
##3、刪除記錄(==delete from==)
刪除表里所有的記錄 delete from 表名;delete from t1; truncate 表名; 根據(jù)條件刪除 delete from t1 where id>3; 注意: truncate不能加where條件刪除數(shù)據(jù);只能全部刪除表里的所有記錄。
##4、更新記錄(==update 表名==)
###㈠ 語法
update 表名 set 字段1=新值,字段2=新值,... where條件;
###㈡ 示例
update t1 set name='harry' where id=1; update t1 set name='jack',id=33 where id=3; update t1 set id=222,name='wanger' where id=2;
##5、更改表屬性信息(==alter table==)
增加一列成為第一列 alter table t2 add id int first; 在id后面增加一列叫id2 alter table t2 add id2 int after id; alter table t1 add sex varchar(10) not null;刪除id2這個列 alter table t2 drop id2;修改列名和數(shù)據(jù)類型 alter table t2 change id ID bigint; 修改列的數(shù)據(jù)類型 alter table t2 modify ID int;查看數(shù)據(jù)庫有哪些存儲引擎 show engines; 修改表的存儲引擎 alter table t2 engine MyISAM; 查看修改存儲引擎是否成功 show create table t2; 修改表的默認字符集 alter table t2 default charset=utf8;
##6、重命名或移動表(==rename table==)
移動表到另一個庫里并重命名 rename table db01.t1 to db02.t11; 或者 alter table db01.t1 rename db02.t11;只重命名表名不移動 rename table tt1 to tt2; 或者 alter table tt1 rename tt2;
##7、刪除表(==drop table==)
drop table 表名;
##8、delete/truncate/drop區(qū)別
-
delete:刪除==數(shù)據(jù)記錄==
-
數(shù)據(jù)操作語言(DML)
-
在事務(wù)控制里,DML語句要么commit,要么rollback
-
刪除==大量==記錄速度慢,==只刪除數(shù)據(jù)==不回收高水位線
-
可以==帶條件==刪除
-
-
truncate:刪除==所有數(shù)據(jù)記錄==
-
數(shù)據(jù)定義語言(DDL)
-
==不在==事務(wù)控制里,DDL語句執(zhí)行前會提交前面所有未提交的事務(wù)
-
清里大量數(shù)據(jù)==速度快==,回收高水位線(high water mark)
-
==不能帶條件刪除==
-
-
drop:刪除==數(shù)據(jù)庫對象==
-
數(shù)據(jù)定義語言(DDL)
-
數(shù)據(jù)庫對象包括庫、表、用戶等
-
#三、用戶管理
##1、創(chuàng)建用戶(==create user==)
注意:MySQL中不能單純通過用戶名來說明用戶,必須要加上主機。如==jack@10.1.1.1==
###㈠ 語法
創(chuàng)建用戶不設(shè)置密碼 create user 'user'@'host';創(chuàng)建用戶設(shè)置密碼 create user 'user'@'host' identified by 'password';說明:用戶的信息保存在mysql數(shù)據(jù)庫中的user表中,驗證用戶是否創(chuàng)建成功如下: select user,host from mysql.user;
###㈡ 示例
create user 'tom'@'localhost' identified by '123'; create user 'harry'@'localhost' identified by '123'; create user 'tom'@'10.1.1.1' identified by '123'; create user 'jack'@'%' identified by '123';
###㈢ 用戶主機表示方式
'user'@'localhost' 表示user只能在本地通過socket登錄數(shù)據(jù)庫 'user'@'192.168.0.1' 表示user用戶只能在192.168.0.1登錄數(shù)據(jù)庫 'user'@'192.168.0.0/24' 表示user用戶可以在該網(wǎng)絡(luò)任意的主機登錄數(shù)據(jù)庫 'user'@'%' 表示user用戶可以在所有的機器上登錄數(shù)據(jù)庫;本機為匿名用戶
2、刪除用戶(==drop user==)
㈠ 語法
drop user 用戶;
㈡ 示例
刪除'user01'@'localhost'用戶 mysql> drop user 'user01'@'localhost'; 默認刪除user01從任意主機登錄 mysql> drop user 'user01'; mysql> drop user 'user01'@'%';重命名用戶名 mysql> rename user 'harry'@'10.1.1.%' to 'harry'@'10.1.1.1';刪除一個匿名用戶 mysql> drop user ''@'localhost';刪除mysql中的匿名用戶 mysql> delete from mysql.user where user=''; 刪除root用戶從本機::1登錄(::1表示IPv6地址) mysql> delete from mysql.user where user='root' and host='::1'; mysql> flush privileges;注意:如果tcp/ip登錄,服務(wù)器端口不是默認3306,則需要加端口號
3、用戶權(quán)限管理(==grant==)
㈠ 權(quán)限說明
所有權(quán)限說明MySQL :: MySQL 5.7 Reference Manual :: 6.2.2 Privileges Provided by MySQL
USAGE 無權(quán)限,只有登錄數(shù)據(jù)庫,只可以使用test或test_*數(shù)據(jù)庫 ALL 所有權(quán)限以下權(quán)限為指定權(quán)限 select/update/delete/super/replication slave/reload...with grant option 選項表示允許把自己的權(quán)限授予其它用戶或者從其他用戶收回自己的權(quán)限
###㈡ 權(quán)限保存位置
mysql.user 所有mysql用戶的賬號和密碼,以及用戶對全庫全表權(quán)限(*.*) mysql.db 非mysql庫的授權(quán)都保存在此(db.*) mysql.table_priv 某庫某表的授權(quán)(db.table) mysql.columns_priv 某庫某表某列的授權(quán)(db.table.col1) mysql.procs_priv 某庫存儲過程的授權(quán)
###㈢ 給用戶授權(quán)
####① 語法
grant 權(quán)限1,權(quán)限 on 庫.表 to 用戶@主機 grant 權(quán)限(列1,列2,...) on 庫.表 to 用戶@主機
####② 用戶授權(quán)示例
給tom@10.1.1.1用戶授予查看db01庫里所有表權(quán)限 mysql> grant select on db01.* to 'tom'@'10.1.1.1'; 刷新權(quán)限表 mysql> flush privileges;給tom@10.1.1.1用戶授予修改db01庫的ID字段的權(quán)限 mysql> grant update(ID) on db01.tt1 to 'tom'@'10.1.1.1'; mysql> flush privileges; 查看當前用戶權(quán)限 mysql> show grants; 查看指定用戶權(quán)限 mysql> show grants for 'tom'@'10.1.1.1';
③ 使用grant創(chuàng)建用戶
說明:5.7以后==不推薦==,未來會被棄用!
grant all on *.* to 'harry'@'10.1.1.%' identified by '123';
####④ with grant option選項
with grant option:用戶是否可以下放和回收權(quán)限grant all on *.* to 'amy'@'10.1.1.%' identified by '123' with grant option; grant all on *.* to 'harry'@'10.1.1.%' identified by '123'; 測試harry用戶和amy用戶是否可以將自己的權(quán)限下放: harry用戶登錄:mysql> grant select on db01.* to 'tom'@'10.1.1.1'; ERROR 1044 (42000): Access denied for user 'harry'@'10.1.1.%' to database 'db01'amy用戶登錄: mysql> grant select on db01.* to 'tom'@'10.1.1.1';
####⑤ 總結(jié)
-
創(chuàng)建用戶方法
-
create user...
==需要單獨grant授權(quán)== -
grant xxx
==直接創(chuàng)建用戶并授權(quán)==
-
-
擴展補充
-
從MySQL 5.7.6開始,不贊成使用grant修改密碼;使用 ALTER USER來代替。
ALTER USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
-
###㈣ 回收用戶權(quán)限
revoke 權(quán)限 on 庫.表 from 用戶; 撤消指定的權(quán)限 mysql> revoke update on db01.tt1 from 'tom'@'10.1.1.1'; 撤消所有的權(quán)限 mysql> revoke select on db01.* from 'tom'@'10.1.1.1';
#四、查詢語句
##1、常見符號
符號 | 說明 |
---|---|
% | 匹配0個或任意多個字符 |
_(下劃線) | 匹配單個字符 |
like | 模糊匹配 |
= | 等于,精確匹配 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
!=和<> | 不等于 |
! 和 not | 邏輯非 |
|| 和 or | 邏輯或 |
&& 和 and | 邏輯與 |
between...and.... | 兩者之間 |
in (....) | 在... |
not in (....) | 不在 |
##2、其他關(guān)鍵字
符號 | 說明 |
---|---|
regexp | 使用正則來匹配 |
order by | 排序 |
asc | 升序排列 |
desc | 降序排列 |
group by | 聚合 |
having | 篩選 |
distinct | 去除重復(fù)的行 |
##3、查詢舉例
###㈠ 基本簡單查詢
select 字段1,字段2,... from 表名;查看所有數(shù)據(jù) select * from emp; 查看指定列 select empno,ename,job,sal from emp; 給列指定別名 select empno 工號,ename 姓名,job 工作,sal 工資 from emp; 或者 select empno as 工號,ename as 姓名,job as 工作,sal as 工資 from emp;
###㈡ 帶where條件查詢
支持邏輯運算符,支持正則表達式 select * from t3 where english >60 && english <90; select * from t3 where math >= 60 and english >= 60; select * from t3 where math >= 60 or english >= 60; select * from t3 where math >= 60 and not english >= 60;select * from t3 where name regexp '^h'; select * from t1 where name regexp '.*[0-9]'; select * from t1 where name regexp '.*[0-9]+.*'; select * from t1 where name regexp '.*[0-9]{2}.*' ;sal不在3000與5000之間的記錄 select * from emp where sal not between 3000 and 5000;sal在500-1000或者3000-5000之間 select * from emp where sal >= 3000 and sal <= 5000 or sal >=500 and sal <=1000;
###㈢ 排序
默認按照deptno列升序排列 select * from emp order by deptno; 指定按照deptno列升序排列 select * from emp order by deptno asc; 指定deptno列按降序排列 select * from emp order by deptno desc;
###㈣ 去重
select distinct deptno from emp;
###㈤ group by和having
####① group by
根據(jù)給定==數(shù)據(jù)列==的查詢結(jié)果進行分組統(tǒng)計,最終得到一個==分組匯總表==
注:一般情況下group by需與==統(tǒng)計函數(shù)==一起使用才有意義
常見統(tǒng)計函數(shù) | 說明 |
---|---|
max | 求最大值 |
min | 求最小值 |
sum | 求和 |
avg | 求平均值 |
count | 求總行數(shù) |
-
舉例說明
查找每個部門的最高工資: select deptno,max(sal) from emp group by deptno; 每個部門最大工資和部門人數(shù): select deptno,max(sal),count(*) from emp group by deptno; +--------+----------+----------+ | deptno | max(sal) | count(*) | +--------+----------+----------+ | 10 | 5000.00 | 3 | | 20 | 3000.00 | 5 | | 30 | 2850.00 | 6 | +--------+----------+----------+ 查找10號和20號部門最大工資和人數(shù) select deptno,max(sal),count(*) from emp where deptno in (10,20) group by deptno; +--------+----------+----------+ | deptno | max(sal) | count(*) | +--------+----------+----------+ | 10 | 5000.00 | 3 | | 20 | 3000.00 | 5 | +--------+----------+----------+
####② having
-
having與where類似,根據(jù)條件對==數(shù)據(jù)==進行過濾篩選
-
where==針對表中的列==發(fā)揮作用,查詢數(shù)據(jù)
-
having==針對查詢結(jié)果集==發(fā)揮作用,篩選數(shù)據(jù)
舉例說明
查詢員工數(shù)大于5個的部門編號和最大工資及員工數(shù) select deptno,max(sal),count(*) from emp group by deptno having count(*)>5; 查詢底薪+提成大于2000的員工相關(guān)信息 select empno,ename,sal+ifnull(comm,0) sum from emp having sum >2000; 查詢每個部門最大工資的員工信息 select ename,empno,deptno,sal from emp where (deptno,sal) in (select deptno,max(sal) from emp group by deptno) ; +-------+-------+--------+---------+ | ename | empno | deptno | sal | +-------+-------+--------+---------+ | BLAKE | 7698 | 30 | 2850.00 | | SCOTT | 7788 | 20 | 3000.00 | | KING | 7839 | 10 | 5000.00 | | FORD | 7902 | 20 | 3000.00 | +-------+-------+--------+---------+ 4 rows in set (0.00 sec)查詢20和30號部門基本工資加提成大于2000的人員信息 select deptno,empno,ename,sal+ifnull(comm,0) sum from emp where deptno in(30,20)having sum >2000;
-
IFNULL函數(shù)擴展
IFNULL()函數(shù): MySQL中的IFNULL函數(shù)類似于Oracle中的NVL函數(shù),其表達式為:IFNULL(expr1,expr2),如果第一個參數(shù)不為空,則返回第一個參數(shù),否則返回第二個參數(shù)。 ifnull(comm,0)IFNULL(expr1,expr2) If expr1 is not NULL, IFNULL() returns expr1; otherwise it returns expr2.IF()函數(shù): IF(expr1,expr2,expr3)類似于Oracle中的NVL2函數(shù),如果第一個表達式的值為TRUE(不為0或null),則返回第二個參數(shù)的值,否則返回第三個參數(shù)的值IF(expr1,expr2,expr3) If expr1 is TRUE (expr1 <> 0 and expr1 <> NULL), IF() returns expr2. Otherwise, it returns expr3.NULLIF()函數(shù): NULLIF(expr1,expr2),如果expr1=expr2為真,返回null;否則返回expr1NULLIF(expr1,expr2) Returns NULL if expr1 = expr2 is true, otherwise returns expr1. This is the same as CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.
###㈥ 合并列函數(shù)(concat)
select concat(user,' ',password) as 用戶名和密碼 from mysql.user; create table t3(path1 varchar(255),homedir varchar(255)); insert into t3 set path1='/www/itcast',homedir='u01'; select concat(path1,'/', homedir) from t3; select concat(path1,'/', homedir) as '家目錄' from t3;
###㈦ 分頁函數(shù)(limit)
用法:limit 起始位置,偏移量 起始位置從0開始 select * from t1 limit n; 顯示前n行 select * from t1 limit n,m; 顯示n+1行至表中的n+m行select * from t1 limit 10; 顯示前10行 select * from t1 limit 10,10; 顯示11至20行 select * from t1 limit 1; 顯示第1行 select * from t1 limit 0,2; 顯示第1,2行 select * from t1 limit 2,2; 顯示3,4行 select * from t1 limit 4,2; 顯示5,6行 select * from t1 limit 6,2; 顯示第7,8行
###㈧ 多表聯(lián)合查詢
常規(guī)查詢表: select * from emp,dept where emp.deptno=dept.deptno;select dept.deptno,dept.dname,emp.ename,emp.job from emp,dept where emp.deptno=dept.deptno;select e.ename,e.job,e.hiredate,d.dname,e.deptno from emp e,dept d where e.deptno=d.deptno;表的連接:縱向連接/內(nèi)連接/左連接/右連接左連接(以左表為標準連接右表): left join=left [outer] join select emp.ename,emp.job,dept.deptno from dept left join emp on emp.deptno=dept.deptno;右連接(以右表為標準連接左表): right join= right [outer] join select emp.ename,emp.job,dept.deptno from dept right join emp on emp.deptno=dept.deptno;內(nèi)連接:取多表之間的交集 inner join select emp.ename,emp.job,dept.deptno from emp inner join dept on emp.deptno=dept.deptno;縱向連接:合并【表結(jié)構(gòu)相同】 select name,math,english,'' as 'chinese' from t2 union select name,math,english,chinese from t3;
###㈨ 四則運算
select 1+2; select 1-3; select 1*4; select 1/4; select 1 + 1, (10-1)/3, 2*2/2; select 1 + 1 from dual; dual表,俗稱萬能表 乘冪需要調(diào)用函數(shù):-3表示2的三次冪取倒數(shù) mysql> select pow(2,3),power(2,3),pow(2,-3),power(2,-3); +----------+------------+-----------+-------------+ | pow(2,3) | power(2,3) | pow(2,-3) | power(2,-3) | +----------+------------+-----------+-------------+ | 8 | 8 | 0.125 | 0.125 | +----------+------------+-----------+-------------+ 1 row in set (0.00 sec)
#五、擴展常見的數(shù)據(jù)類型
##1、數(shù)值類型
常見的數(shù)值類型
###㈠ 整數(shù)類型(精確值)
###㈡ 定點類型(精確值)
-
DECIMAL和NUMERIC
DECIMAL
和NUMERIC
?類型的存儲==精確的數(shù)值數(shù)據(jù)==。使用這些類型時,重要的是要保留==精確的精度==,例如使用貨幣數(shù)據(jù)。在MySQL中, NUMERIC
被作為DECIMAL
來應(yīng)用,所以下面的舉例DECIMAL
同樣適用于?NUMERIC
。
-
舉例說明
salary DECIMAL(5,2) 在上面的例子中,薪水字段的類型為decimal,表示精確的數(shù)字。其中,5代表精度,2代表刻度。 精度表示數(shù)值存儲的有效位數(shù),刻度表示小數(shù)點后面可存儲的位數(shù)。 DECIMAL(5,2)能夠存儲五位數(shù)和兩位小數(shù)的任何值,因此可以存儲在salary 列中的值的范圍-999.99是 999.99特殊注意: DECIMAL(M)和DECIMAL(M,0)是相等的,存儲長度取決于M的值,默認情況下M值為10.刻度為0表示沒有小數(shù)。
###㈢ 浮點類型(近似值)
-
FLOAT和DOUBLE
FLOAT
和DOUBLE
類型代表近似數(shù)字數(shù)據(jù)值。MySQL對于單精度值使用四個字節(jié),對于雙精度值使用八個字節(jié)。 FLOAT
單精度浮點數(shù)精確到約7位小數(shù),DOUBLE
雙精度浮點數(shù)精確到大約15位小數(shù) 。FLOAT
類型會隨著數(shù)值的增大精度會減小。
-
舉例說明
FLOAT(M,D),其中,M表示存儲的有效位數(shù),D代表小數(shù)點后面的位數(shù);即整數(shù)位數(shù)+小數(shù)部分不能超過M值。 colum1 FLOAT(7,4) 上面例子中,如果你插入為999.00009到cloum1列,那么mysql在存儲時會四舍五入變?yōu)?99.0001插入。
-
對比總結(jié)
數(shù)值類型 | 精度 | 存儲空間 | 精確性 |
---|---|---|---|
FLOAT | 單精度 | 4字節(jié) | 低 |
DOUBLE | 雙精度 | 8字節(jié) | 低,比float高 |
DECIMAL | 高精度 | 變長 | 高 |
##2、字符串類型
常見的字符類型
###㈠ CHAR類型
CHAR類型的字符串為定長.長度范圍是0到255之間的任何值.占用定長的存儲空間,不足的部分用==空格==填充;讀取時刪掉后面的空格。
name char(10)
-
存儲空間
CHAR(==M==)類型的存儲空間和字符集有關(guān)系,一個中文在utf8字符集中占用3個bytes、gbk占用2個bytes、數(shù)字和字符統(tǒng)一用一個字符表示。
-
存儲機制
在不夠M長度時,MySQL在存儲數(shù)據(jù)時,需要填充特殊的空格.
-
舉例說明
name CHAR(M),M表示字符數(shù)
###㈡ VARCHAR類型
VARCHAR是==變長存儲==,僅使用必要的存儲空間.
name varchar(10)
-
存儲空間
VARCHAR(M)類型的存儲空間和字符集有關(guān)系,一個中文在utf8字符集中占用3個bytes、gbk統(tǒng)一占用2個bytes、數(shù)字和字符一個字符表示。
-
存儲機制
VARCHAR(M)字段存儲實際是從第二個字節(jié)開始存儲,然后用1到2個字節(jié)表示實際長度,剩下的才是可以存儲數(shù)據(jù)的范圍,因此最大可用存儲范圍是65535-3=65532字節(jié);
第一個字節(jié)標識是否為空.(長度小于255字節(jié),使用一個字節(jié)來表示長度;大于255字節(jié)使用兩個字節(jié)來表示長度)。
###㈢ 其他
BLOB:保存二進制的大型數(shù)據(jù)(字節(jié)串),沒有字符集,eg:圖片、音頻視頻等。
TEXT:保存非二進制字符串(字符串);有一個字符集。
BINARY和VARBINARY:類似CHAR和VARCHAR;保存字節(jié)字符串,而不是字符字符串,這意味著它們沒有字符集
##3、時間類型
###㈠ DATE類型
The?DATE
?type is used for values with a date part but no time part. MySQL retrieves and displays?DATE
?values in'YYYY-MM-DD'
?format. The supported range is?'1000-01-01'
?to?'9999-12-31'
.
###㈡ DATETIME
The?DATETIME
?type is used for values that contain both date and time parts. MySQL retrieves and displaysDATETIME
?values in?'YYYY-MM-DD HH:MM:SS'
?format. The supported range is?'1000-01-01 00:00:00'
?to?'9999-12-31 23:59:59'
.
###㈢ TIMESTAMP
The?TIMESTAMP
?data type is used for values that contain both date and time parts.?TIMESTAMP
?has a range of?'1970-01-01 00:00:01'
?UTC to?'2038-01-19 03:14:07'
?UTC.
注意:
Invalid?DATE
,?DATETIME
, or?TIMESTAMP
?values are converted to the?“zero”?value of the appropriate type ('0000-00-00'
?or?'0000-00-00 00:00:00'
).
無效的日期,日期時間等會被替換成‘0000-00-00’或‘0000-00-00 00:00:00’
###㈣ TIME
MySQL retrieves and displays?TIME
?values in?'HH:MM:SS'
?format (or?'HHH:MM:SS'
?format for large hours values).TIME
?values may range from?'-838:59:59'
?to?'838:59:59'
.
說明:小時部分可以是這么大,因為可以使用TIME類型不僅代表一個時間(必須小于24小時),而且可以表示運行時間或兩個事件之間的時間間隔(可能大于24小時,甚至負數(shù))。
==注意:==
TIME這一列如果存儲縮寫,需要注意mysql的解釋方式。無效的時間值會被轉(zhuǎn)換成'00:00:00'?。
'11:12'
?means?'11:12:00'
, not?'00:11:12'
.
'12'
?and?12
?are interpreted as?'00:00:12'
.
###㈤ YEAR
YEAR(4)
?and?YEAR(2)
?differ in display format, but have the same range of values.
For 4-digit format, MySQL displays?YEAR
?values in?YYYY
?format, with a range of?1901
?to?2155
, or?0000
.
For 2-digit format, MySQL displays only the last two (least significant) digits; for example,?70
?(1970 or 2070) or?69
?(2069).
無效的值將會被轉(zhuǎn)換成'0000'.
六、課后練習
1、將SQL腳本(demo.sql)導(dǎo)入到數(shù)據(jù)庫中
2、根據(jù)如下要求寫出查詢語句
1)查詢英語前三名
2)查詢總分,以降序排列
3)查詢總分第一名
4)查詢英語最高分的姓名及分數(shù)
5)查詢總成績的平均分第一名