sql語句

三表聯查sql語句:
 

好比有三張表,student,teacher , project :sql

    1. 第一種方法:select * from student,teacher,project where student.id=teacher.sid and student.id=project.sid;函數

    2. 第二種:select * from student inner join teacher on student.id=teacher.sid inner join project on student.id=project.sid;spa

建立表:unix

CREATE table 表名 (ID int(11) AUTO_INCREMENT(主鍵自增), uname char(12) not null,sex char(2) null, PRIMARY KEY (id)(主鍵));code

該表名的sqlorm

rename table tbl_name(表名) to new_tbl_name(改後的表名)

添加字段
ALTER TABLE hel ADD hae varchar(20) ;
指定位置添加
ALTER TABLE hel ADD hae(新增字段) varchar(20) AFTER hahah(字段後)

//建立一個管理員表(id,admin_name,admin_pwd,admin_email,is_del)
create table admin(
id int(11) unsigned not null auto_increment comment '管理員id',
admin_name varchar(30) not null comment '管理員名稱',
admin_pwd char(32) not null comment '密碼',
admin_email varchar(100) default null comment '郵箱',
is_del tinyint(1) not null default '0' comment '是否刪除 1爲刪除 0正常',
primary key(id),
key admin_name(admin_name))
engine=Innodb auto_increment=2 default charset=utf8 comment '管理員表';索引

//給admin表添加一個管理員手機號字段
alter TABLE admin add admin_tel char(11) default null comment '管理員手機號';ci

//給admin表添加一個管理員性別字段 指定位置在admin_name後
alter TABLE admin add admin_sex tinyint default '0' comment '管理員性別 0爲男 1爲女' after admin_name;rem

//把admin表的admin_sex字段修改成sex
alter TABLE admin change admin_sex sex tinyint(1) default '0' comment '管理員性別 0爲男 1爲女';字符串

//修改表名 把表名admin改成admin_user
alter table admin rename admin_user;

//group by
//查詢每一個班人數
select count(*),class_name from student GROUP BY class_name;
//查詢每一個班語文成績平均分
select avg(chinese),class_name from student GROUP BY class_name;
//查詢語文成績平均分大於90的班級
select avg(chinese)as c,class_name from student GROUP BY class_name HAVING c>=90;
//查詢英語成績平均分大於90的班級 倒序
select avg(English)as e,class_name from student GROUP BY class_name HAVING e>90 ORDER BY e desc;
//查詢英語成績平均分最低的班級
select avg(English)as e,class_name from student GROUP BY class_name ORDER BY e asc LIMIT 1;
//查詢每一個班英語成績最低分
select class_name,min(english) from student GROUP BY class_name;
//查詢每一個班英語成績最高分
select class_name,max(english) from student GROUP BY class_name;
//查詢英語成績平均分大於90班級的個數
select count(1) from (select class_name,avg(english)as e from student GROUP BY class_name HAVING e>90)as num;

 

 

必會
ddl:
一、create 建立庫、表
二、alter 修改表,包括建立、修改、字段和索引
三、group by 聚合查詢
四、distinct 結果集去重
五、union|union all合併結果集

多表聯合查詢:
一、多表關聯修改表記錄
update emp a, dept b set a.sal=a.sal*b.deptno,b.deptname=a.ename where a.deptno=b.deptno;

二、多表關聯刪除表記錄
delete a,b from emp a, dept b where a.deptno=b.deptno and a.deptno=3;

三、把條件的內容用文字表達出來
select case salary when 1000 then 'low' when 2000 then 'mid' else 'high' end from salary;

經常使用函數
字符串函數
concat\insert\lower\upper\left\right\lpad\rpad\ltrim\rtrim\repeat\repleace\strcmp(比較ascii碼)\trim\substring\
數值函數
abs\ceil\floor\mod\rand\round(四捨五入)\truncate(不四捨五入)
日期和時間函數
curdate()\curtime()\now()\unix_timestamp()\from_unixtime()\week\year\hour\minute\monthname\date_format(date,fmt)\date_add()\datediff(expr,expr2)\
流程函數
select if(salary>2000, 'high', 'low') from salary;
select ifnull(salary, 0) from salary;
select case when salary<=2000 then 'low' else 'high' end as sal from salary;
select case salary when 1000 then 'low' when 2000 then 'mid' else 'high' end from salary;

瞭解: 試圖 存儲過程

相關文章
相關標籤/搜索