2.3MySQL 操作 查询

1 连接其他人mysql数据库

mysql -p root -h ip地址

2.创建数据库-创建表-更改表结构-更改表数据

--create database 数据库名字 # 创建数据库

--use 数据库名   # 进入数据库

--create table 表名(字段名 类型 [约束]...) 创建表

-----约束:主键:primary key 唯一:unique 非空:not null 默认值:default 检查:通过枚举enum 达到限制的作用

--alter table 表名 add 字段 类型 (约束) #增加表中的字段

--alter table 表名 drop 字段 #删除表中字段

--alter table 表名 change 原 新 数据类型 约束 # 修改字段名

--删除表: drop table 表名  # 表结构已删除

--增加表数据:insert 表名(字段名,...) values(值1,...)

--更改表数据: update 表名 set 字段=新值 [where 条件]

--将手机号为null的学生 年龄-1并性别改成女

如:update student2 set age=age-1,gender='女‘ where phone is null; 

--删除表中所有数据,并保留表结构

delete from student2;

--删除女生小坤坤

delete from student2 where gender='女’ and name='小坤坤‘

3.约束:外键 foreigh key  

alter table employee add constraint fk_deptno foreigh key(deptno) references department(id)

添加1个约束,约束名:fk_deptno,类型foreign key,加到deptno字段上,当加数据时,去department的表里的id字段看下是否有符合的数据。

#fk_deptno 给外键取的名字,一般以fk开头


4. 查询

(1)--查询:* 表中所有字段

select * from emplyee;

(2)--查询指定字段

select * from ename,ebonus,ebsalary from employee;

(3)--根据指定条件查询 select 字段名 from 表名 where 条件

1) where 条件之运算符 >    <     >=   <=   不等于:<>  !=

2)between    and   限制区间

3)in() 区间  not in() 

4)null有关判断: 字段名 is null / 字段名 is not null

IFNULL(ebonus,0)  如果ebonus的值是null,会替换成0

例如:


5)逻辑: and和  or或 not非

and 和between例:

select * from employee where ebsalary>10000 and ebsalary<15000;

select * from employee where ebsalary between 10000 and 15000;  # (包含左右两边)

补充-- char_length(str) 获取字符串的长度

mysql> select * from employee where char_length(ename) = 3;

# 多个and 和or的优先级顺序:

补充 找出2017年入职的员工

mysql> select * from employee where ehiredate like '2017-%';

mysql> select * from employee where ehiredate regexp '^2017';

mysql> select * from employee where year(ehiredate)=2017;

补充 and 和 or的运算顺序

in例:

将5,7,2,9的奖金设置成null:

update employee set ebonus=null where eno=2 or eno=5 or eno=7 or eno=9;

等同于:update employee set ebonus=null where eno in (2,5,7,9)

6)模糊查询:like  通配符:_任意1个字符   % 任意多个字符

例:查询名字中有‘飞字的员工

select * from employee where ename like'%飞%’;

7)排序 order by  默认升序,也可以降序:order by 字段 desc

降序 例:select * from employee order by eage desc;

降序 例:select * from employee where ebonus+esalary>9000 oder by ebonus+ebsalary desc;

5.LIMIT  获取部分记录

(1)-- limit n : 获取前n条记录

例:select * from employee LIMIT 5; 

(2)limit offset,n :获取偏离量后n个数据

OFFSET 表示的是偏移量 n本次查询要获取的数据

例:select * from employee limit 5,5;

例:-- 共有100,15条一页,想得到第3页 

select * from employee limit 30,15;

例: 第五页 

select * from employee limit 60,15;


6. distinct 去重

-- 获取employee表中所有的职位(去除重复的)

select distinct ejob from employee;


7 as 起别名  使用as起别名可以辅助查询结果得查看,起的别名可以与order by结合使用但是 在where中使用报错

例:查询员工姓名和总工资,并按照总工资排序

select ename as 姓名,ebsalary+IFNULL(ebonus,0) as 总工资 from employee where ebsalary+IFNULL(ebonus,0)>10000 order by 总工资;


8 -- 聚合函数: max()最大值,min()最小值,sum() 求和,avg()平均值,count()计数 # count(*)代表返回的数据有多少行(条)默认可以都用*

例:查询员工表的最大年龄

select eage from employee order by eage desc limit 1;

select max(eage) from employee;

例:-- 查询3号部门有多少位员工

select count(eno) from employee where deptno=5;

select count(*) from employee where deptno=5;

例:-- 查询姓王的员工人数

select count(*) from employee where ename like '王%';

例:-- 查询女生的薪资总和

SELECT SUM(ebonus+ebsalary) from employee where esex='女'


9 (1)分组查询:select 字段,... from 表名 where 条件 group by 字段 [having 字段][order by 字段] [limit n] 

-- *** where ...group by ... 先筛选再分组

-- ***  group by ... having ...  先分组后筛选

-- having 不能独立存在,必须结合group by使用

例:-- 查询employee表中男女的人数

select esex, count(*) as number from employee group by esex;

-- sex 人数

-- 男  5

-- 女  6

例:-- 查询4号部门各个职位的最低工资低于3000元的职位

select ejob,min(ebsalary) as 最低底薪 from employee where deptno=4 group by ejob having 最低底薪<3000;

例:-- 查询各个部门的男女生人数

select deptno,esex,count(*) from employee group by deptno,esex ORDER BY deptno;


9.(2)子查询:嵌入到其他查询语句中查询语句



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356