mysql 知识复习

linux (mysql安装) :sudo apt-get install mysql-server mysql-client
mysql 修改密码: mysqladmin -u root -p password 123456
mysql重要知识:增删该查,事务,索引,存储过程
root 用户是最高权限
常见的字符集:GB2312,GBK
事务:要么完全执行,要么完全不执行 
事务语句 : 1.开启:begin; 2.提交:commit; 3.回滚:rollback;
原子性:在一个事物的所有操作中 要么全部执行,要么全部不执行,
一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏,
隔离性:防止多个事务并发执行时由于交叉执行而导致数据的不一致
 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

索引:

SQL:结构化查询语言
sql功能分类
DDL: 数据定义语言 用来定义数据库对象:创建库、表、列等
DML: 数据操作语言 用来操作数据表中的记录
DQL: 数据查询语言 用来查询数据
DCL: 数据控制语言 用来定义访问权限和安全级别

MySQL支持多种类型
数值类型:int 整数,double 浮点数
字符串类型:char , varchar , text 文本
日期和时间类型:date 年月日 yyyy-MM-dd ,time 时分秒 hh:mm:ss ,datetime 年月日 时分秒 yyyy-MM-dd hh:mm:ss

DDL 数据定义语言
给表添加一列:alter table 表名 add 列名 数据类型;   alter table students add age int;
删除一列:alter table students drop age;
修改表的数据类型:alter table students modify id bigint;
修改表名:alter table 原始表名 TO 新表名;  alter table students to teacher;
查看表的创建细节:show create table students;
修改表的字符集gbk:alter table students charset=gbk
修改表的列名:alter table students change name newname varchar(20);
修改teacher表的存储引擎更改为MyISAM类型 : alter table teacher engine = MyISAM

DML 数据操作语言 (对表中的数据进行增、删、改操作)
增,插入数据 insert into (注意:我们插入的数据顺序必须要跟列对应)
1.完全插入:例如:insert into 表名 values( 108401,' 小甜甜 ', 20,1,' 1245678999 ');
2.选择插入:例如:insert into 表名(userid,name,age) values( 10000,' 花花 ',19);
3.多行插入:例如:insert into 表名(userid,name) values(19999,' 葡萄 '),(18888,‘ 辣椒 ’);
将一个表复制到另一个表中 insert into 新表 (列名,列名...) select 列名,列名... from 原表 ;

更新 update
更新一条数据:update 表名 set 列名1=列值1, 列名2=列值2... where 列名=值;例如:update students set name='倪好' where id=1;
把倪好的年龄在原来基础上+1岁:例如:update students set age=age+1 where id = 7;
把年龄这个字段更新为18岁:update students set age=18;
把姓名为花花的学生分数修改为90:update students set score=90 where name='花花';

删除 delete
删除一条数据:delete from 表名 where 列名=值;例如:delete from students where id=3;
删除所有(尽量不要用):delete from 表名;例如:delete from students;
删除truncate:例如:truncate 表名;例如:truncate students;

DQL 数据查询语言 用来查询数据
查询 select
聚合函数
count() | count(1) :计算所有行; select count() from students where age>11;
avg() :计算列的平均值; select avg(age) from students;
max() :计算列的最大值; select max(age) from students;
min() :计算列的最小值; select min(age) from students;
sum() :求和 ,计算列的总和; select sum(age) from students;
模糊查询:关键字 like  通配符 _ :任意一个字母,通配符 % :任意0~n个字母
select * from students where name like '_花'; select * from students where name like '花%';
去重: 关键字distinct select distinct name from students;
分组查询:group by   根据名字分组 select name from students group by name;
使用group_concat(字段名) 来放置每一组的某字段的值的集合
根据性别分组,查询哪个名字为男性,哪个姓名为女性:select gender,group_concat(name) from students group by gender
查询每个部门的部门名称以及每个部门工资大于1500的人数
select job,group_concat(salary),count(*) from emp where salary > 1500 group by job;
去重和分组的区别:去重是把相同的数据去除掉,分组是把相同的数据划成一组
group by + having having作用和where一样,但是having只能用于 group by where 在分组之前使用,having在分组之后使用,ha cving 可以使用聚合函数,where 不可以使用
使用having 查询工资总和大于9000的部门名称:select job,group_concat(salary),sum(salary) from emp group by job having sum(salary)>5000;
使用where 查询工资大于9000的部门名称:select job,group_concat(salary),sum(salary) from emp where salary>9000 group by job;
书写顺序
select --> from --> where --> group by --> having --> order by --> limit

合并结果集union与union_all : 合并结果集就是把两个SELECT语句的查询结果合并到一起展示
注意事项:被合并的两个结果集:列数,列类型必须相同
union 合并时去除重复记录:select * from 表1 union select * from 表2;
union all 合并时不去除重复记录:select * from 表1 union all select * from 表2;
笛卡尔集
什么是笛卡尔集:同时查询两个表(使用一个SQL语句),出现的结果就是笛卡尔集结果
例如:select * from students,score;mjkysql 知识复习 。 
解决笛卡尔集现象:查询时主键和外键保持一致,
99写法:select * from students st,score sc where st.id=sc.sid;
内连接写法:select * from students st inner join score sc on st.id=sc.sid;
查询成绩大于70并且性别为女的学生的所有信息:select * from students st inner join score sc on st.id=sc.sid where sc.score>70 and st.gender='女';

内连接:( 关键字 inner join)
              select * from students st inner join score sc on st.id=sc.sid;
左链接:( 关键字 left join )左表中数据的全部显示出来,右表中只显示符合条件的数据
               select * from students st left join score sc on st.id=sc.sid;
右链接:( 关键字 right join )右表中的数据全部显示出来,左表中只显示符合条件的数据
                select * from score sc right join students st on st.id=sc.sid;          

多表查询:
               99写法:select * from students st,score sc,course co where st.id=sc.sid and co.id=sc.cid;
               内连接:select * from students st inner join score sc on st.id=sc.sid inner join course co on co.id=sc.cid;

子查询:
            什么是子查询?
                    一个select语句中包含另外一个完整的select语句或者说两个以上select,那么就是子查询语句了
            子查询出现的位置~
                    where后,把select查询出的结果当做另外一个select的条件值
                    from后,把查询出的结果当作一个新表  然后另起一个新名字   例如:as cc
                      
                    where 后面:查询与项羽同一个部门人员工
                                          select ename from emp where deptno = (select deptno from emp where ename='项羽');
                    from 后面:查询30号以内大于2000的薪水的人(放在from,是把这个语句当成一个表)
                                          select ename from (select ename,deptno,salary from emp where deptno=30) as cc where 
                                          cc.salary>2000;

1.排序 order by   asc 升序 desc 降序
select * from emp order by age; 按照年龄排序(默认为升序)
select * from emp order by age asc; 按照年龄排序升序
select * from emp order by age desc; 按照年龄排序降序
2.条件查询 and
select * from emp where name='花花' and age=11; 查询emp表中 名字为花花并且年龄为11的所有信息(两个条件同时满足)
3.条件查询 or
select * from emp where name='花花' or age=11; 查询emp表中 名字为花花或者年龄为11的所有信息(满足其中一个条件即可)
4.集合方式查询 in   (in 相当于or)
select * from emp age in (11,21); 查询emp 表中年龄为11或者21 的所有信息
5.区间查询 between ... and ... 
select * from emp where age between 11 and 21; 查询emp表中年龄在11至21之间的所有信息 (还可以用 >= <=)
相当于
select * from emp where age >= 11 and age <= 21; 查询emp表中年龄大于等于11并且年龄小鱼等于21的所有信息

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

推荐阅读更多精彩内容

  • -- 1基础查询 -- 1.1查询所有列 SELECT * FROM stu; -- 1.2在stu表中查询指定列...
    龍傲天阅读 668评论 0 0
  • 条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字: =、!=、<>、<、<=、...
    淡泊年华阅读 521评论 0 2
  • 一、SQL速成 结构查询语言(SQL)是用于查询关系数据库的标准语言,它包括若干关键字和一致的语法,便于数据库元件...
    shadow雨轩阅读 507评论 0 3
  • 1. 查询20号部门的所有员工信息: select * from emp where deptno = 20; 2...
    AAnna珠阅读 3,514评论 0 2
  • 1.安装go语言环境(windows和linux) 2.环境变量配置path环境(例如C:\Go\bin) 3.添...
    smallThree1阅读 383评论 0 0