目錄
一、函數
1. 字符串函數?
2. 數值函數
3. 日期函數
4. 流程函數
5. 總結?
二、約束?
1. 概述
2. 約束演示
3. 外鍵約束
3.1 添加外鍵
3.2 刪除外鍵?
3.3 外鍵刪除更新行為
4. 總結?
一、函數
1. 字符串函數?
命令如下所示:
-- concat
select concat("Hello" , " MySQL");//Hello MySQL-- lower
select lower("Hello");//hello-- upper
select upper("Hello");//HELLO-- lpad
select lpad('01",5,"-");//---01-- rpad
select rpad('01",5,"-");//01----- trim
select trim(" Hello MySQL ");//Hello MySQL-- substring
select substring("Hello MySQL",1,5);//Hello;首位索引為1
案例練習:?
命令如下所示:?
-- 1.由于業務需求變更,企業員工的工號,統一5位數,目前不足5位數的全部在前面補0。比如:1號員工的工號應該為00001,
update emp set workno = lpad(workno,5,"0");
輸出如下所示:
2. 數值函數
命令如下所示:??
-- ceil
select ceil(1.1);//2-- floor
select floor(1.9);//1-- mod
seLect mod(3,4);//3%4=3-- rond
select rand();-- round
select round(2.345,2);//2.35
案例練習:??
命令如下所示:?
--若rand生成的數為0.0135566則需要右邊補零
select lpad(round(rand()*1000000 , 0),6,"0');
3. 日期函數
命令如下所示:??
-- curdate()
select curdate();-- curtime()
select curtime();-- now ()
select now();-- YEAR MONTH DAY
select YEAR(now());select MONTH(now());seleet DAY(now());-- date_add
select date_add(now(),INTERVAL 70 DAY);
select date_add(now(),INTERVAL 70 MONTH);
select date_add(now(),INTERVAL 70 YEAR);-- datediff
select datediff("2021-12-01", "2021-10-01");//60;前減后
?案例練習:??
?命令如下所示:?
select name,datediff(curdate(),entrydate) as 'entrydays' from emp order by entrydays desc;
?輸出如下所示:
4. 流程函數
命令如下所示:??
-- if
select if(true,'Ok','Error');//OK-- ifnull
select ifnull('Ok','Default');//OKselect ifnull(' ','Default');//空select ifnull(null, 'Default');//Default-- case when then else end
--需求:查bemp表的員工姓名和工作地址〔北京/上海---->一線城市,其他---->二線城市)
selectname,( case workaddress when'北京' then '一線城市' when ' 上海' then '一線城市' else '二線城市' end ) as '工作地址
from emp;
?案例練習:???
生成表:
如下所示:?
命令如下所示:??
selectid,name,(case when math >= 85 then '優秀' when math >=60 then '及格' else '不及格' end)'數學",(case when english >= 85 then '優秀' when english >=60 then‘及格' else '不及格' end)'英語',(case when chinese >= 85 then '優秀' when chinese >=60 then‘及格'else '不及格' end)'語文
from score;
??輸出如下所示:
5. 總結?
二、約束?
1. 概述
2. 約束演示
?案例練習:???
命令如下所示:??
create table user(id int primary key auto_increment comment "主鍵",name varchar(10) not null unique conment"姓名",age int check ( age > 0 && age c= 120 ) comment"年齡",status char(1]default "1"comment"狀態",gender char(1) comment"性別"
)comment '用戶表'; --插入數據
insert into user(name ,age,status,gender) values ('Tom1',19,'1','男'),('Tom2',25,0','男');
insert into user(name,age,status,gender) values ('Tom3',19,'1','男');insert into user(name,age,status,gender) values (null,19,'1','男');
insert into user(name,age,status,gender) values ('Tom5',19,'1','男');insert into user(name,age,status,gender) values ('Tom4',80,"1','男');
insert into user(name,age,status,gender) values ('Tom5',-1,'1','男');
insert into user(name,age,status,gender) values ('Tom5',121,'1','男');insert into user(name,age,gender) values ('Tom5',120,'男');
輸出如下所示:?
?
圖形化界面創建如下所示:
補充:?
3. 外鍵約束
?命令如下所示:??
--準備數據
create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部門名稱',
)comment '部門表';
INSERT INTO dept (id,name) VALUES (1,'研發部'),(2,'市場部'),(3,'財務部'),(6,'銷售部'),(5,'總經辦');create table emp(id int auto_increment conment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年齡',job varchar(20) comment '職位',salary int comment '薪資',entrydate date comment '入職時間',managerid int comment '直屬領導ID',ept_id int comment '部門ID'
)comment '員工表';INSERT INTo emp (id,name,age,job, salary,entrydate,managerid,dept_id) VALUES(1,'金庸',66,'總裁' ,2000,'280-01-01',null,5),(2,'張無忌',20,'項目經理',12500,'2005-12-05',1,1),(3,‘楊道',33,'開發',8400, '2000-11-03',2,1),(4,'韋一笑',48,'開發' ,11000,'2682-82-85',2,1),(5,'常遇春',4,'開發' ,10500,'2004-09-87',3,1),(6,'小昭',19,'程序員鼓勵師' ,6600,'2004-10-12',2,1);
上述兩表并未建立關聯?
3.1 添加外鍵
?命令如下所示:???
--準備數據
create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部門名稱',
)comment '部門表';
INSERT INTO dept (id,name) VALUES (1,'研發部'),(2,'市場部'),(3,'財務部'),(6,'銷售部'),(5,'總經辦');create table emp(id int auto_increment conment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年齡',job varchar(20) comment '職位',salary int comment '薪資',entrydate date comment '入職時間',managerid int comment '直屬領導ID',ept_id int comment '部門ID'
)comment '員工表';INSERT INTo emp (id,name,age,job, salary,entrydate,managerid,dept_id) VALUES(1,'金庸',66,'總裁' ,2000,'280-01-01',null,5),(2,'張無忌',20,'項目經理',12500,'2005-12-05',1,1),(3,‘楊道',33,'開發',8400, '2000-11-03',2,1),(4,'韋一笑',48,'開發' ,11000,'2682-82-85',2,1),(5,'常遇春',4,'開發' ,10500,'2004-09-87',3,1),(6,'小昭',19,'程序員鼓勵師' ,6600,'2004-10-12',2,1);--添加外鍵
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);
輸出如下所示:?
3.2 刪除外鍵?
?命令如下所示:???
--準備數據
create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部門名稱',
)comment '部門表';
INSERT INTO dept (id,name) VALUES (1,'研發部'),(2,'市場部'),(3,'財務部'),(6,'銷售部'),(5,'總經辦');create table emp(id int auto_increment conment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年齡',job varchar(20) comment '職位',salary int comment '薪資',entrydate date comment '入職時間',managerid int comment '直屬領導ID',ept_id int comment '部門ID'
)comment '員工表';INSERT INTo emp (id,name,age,job, salary,entrydate,managerid,dept_id) VALUES(1,'金庸',66,'總裁' ,2000,'280-01-01',null,5),(2,'張無忌',20,'項目經理',12500,'2005-12-05',1,1),(3,'楊逍',33,'開發',8400, '2000-11-03',2,1),(4,'韋一笑',48,'開發' ,11000,'2682-82-85',2,1),(5,'常遇春',4,'開發' ,10500,'2004-09-87',3,1),(6,'小昭',19,'程序員鼓勵師' ,6600,'2004-10-12',2,1);--添加外鍵
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);--刪除外鍵
hlter table emp drop foreign key fk_emp_dept_id;
?輸出如下所示:?
3.3 外鍵刪除更新行為
?命令如下所示:????
--準備數據
create table dept(id int auto_increment comment 'ID' primary key,name varchar(50) not null comment '部門名稱',
)comment '部門表';
INSERT INTO dept (id,name) VALUES (1,'研發部'),(2,'市場部'),(3,'財務部'),(6,'銷售部'),(5,'總經辦');create table emp(id int auto_increment conment 'ID' primary key,name varchar(50) not null comment '姓名',age int comment '年齡',job varchar(20) comment '職位',salary int comment '薪資',entrydate date comment '入職時間',managerid int comment '直屬領導ID',ept_id int comment '部門ID'
)comment '員工表';INSERT INTo emp (id,name,age,job, salary,entrydate,managerid,dept_id) VALUES(1,'金庸',66,'總裁' ,2000,'280-01-01',null,5),(2,'張無忌',20,'項目經理',12500,'2005-12-05',1,1),(3,'楊逍',33,'開發',8400, '2000-11-03',2,1),(4,'韋一笑',48,'開發' ,11000,'2682-82-85',2,1),(5,'常遇春',4,'開發' ,10500,'2004-09-87',3,1),(6,'小昭',19,'程序員鼓勵師' ,6600,'2004-10-12',2,1);--添加外鍵
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);--刪除外鍵
hlter table emp drop foreign key fk_emp_dept_id;--外鍵的刪除和更新行為
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade;
?輸出如下所示:??
圖形化界面設置如下所示: