第三十六章 MYSQL语句一

4.外键(一对多):    作用:1.约束 2.节省空间

        create table department (                       id  int auto_increment primary key,                       depart_name varchar(32)  not null  default ‘‘,                       num int  not null default 0                           )engine=Innodb charset=utf8;

  create table userinfo (                       id  int auto_increment primary key,                       name varchar(32) not null default ‘‘,                       depart_id int not null  default 1,

                       # constraint 外键名(fk_userinfo_depart) foreign key (列名(depart_id)) references 表名(department)(关联的列名(id)),                       # constraint fk_userinfo_depart foreign key (depart_id) references department(id)                          )engine=Innodb charset=utf8;  注意:      1.不能将创建外键的语句单独拿出来          先将表创建好以后再加约束外键,和删除外键          alter table userinfo add constraint fk_userinfo_depart foreign key (depart_id) references department(id);                alter table userinfo drop foreign key 外键名称(fk_userinfo_depart );    #删除外键            2.外键关联的时候,必须关联的是表的主键ID            3.主键索引:加速查找+不能为空+不能重复

外键的变种:(重点)    1.唯一索引:unique        create table 表名( id int,                           num int,                           unique(num)   #num成为唯一                          )engine=Innodb charset=utf8;        作用:num列的值不能重复,加速查找    2.联合唯一索引:        create table 表名(id int,                          num int,                          unique(id,num)                          )engine =Innodb charset=utf8;        作用: num 列和id列的值不能重复,加速查找    3.多重联合索引:        create table 表名(id int,                          num int,                          ...    ,                          unique(num,int,...)                           ) engine = Innodb charset=utf8;5.外键:一对一:        多对多:

高级查询:    增:insert into 表名(列名1,列名2,) values(值1,值2); 添加一条        insert into 表名(列名1,列名2) values (值1,值2),(值1,值2),(值1,值2);  #添加多条        insert into 表名(列名1,列名2) select 列名1,列名2 from 表名;   #从另外一个表中将数据复制到要操作的表中    删除:删除可以在where后面加条件        delete from 表名;        delete from 表名 where id >10        delete from 表名 where id <10        delete from 表名 where id<=10        delete from 表名 where id>=10        delete from 表名 where id!=10        delete from 表名 where id=10 and name=‘xxx‘;# and:并且,两个条件都必须要成立        delete from 表名 where id=10 or name=‘xxx‘; #or :或者 只要满足一个条件成立

    修改:可以在where后面加条件        update 表名 set 列名=‘xxx‘,列名=23 where id >10;

    查询:        基本:             select * from 表名;             select 列名,列名 from 表名;        高级:            1. where 条件查询:                select * from 表名 where id>10;                select * from 表名 where  id >10 and id<15;                select * from 表名 where  id > 10;                != : 不等与                >= <=               between and :闭区间                    select * from 表名 where id between 9 and 12:               in :在某一个集合中                    select * from 表名 where id in (9,10,11,...);

                    select * from t4 where id in (select id from t3 where id between 2 and 4)                    是可以这样使用的, 但是不建议大家使用;            2. 通配符: like  (alex)                    select * from 表 where name like ‘ale%‘  - ale开头的所有(多个字符串)       select * from 表 where name like ‘ale_‘  - ale开头的所有(一个字符)   3.限制取几条:           select * from 表名 limit 索引偏移量,去除多少数据;           select * from t3 limit 0, 10;  第一页      select * from t3 limit 10, 10;  第二页

   page = input(‘page:‘)

               page    索引偏移量      数据量(offset)                 1         0              10                 2         10             10                 3         20             10                 4         30             10

                 page   (page-1)*offset   offset

            分页核心SQL:

               select * from t3 limit (page-1)*offset, offset;4.排序:    order by:        select * from 表名 order by 列名 desc; descending        select * from 表名 order by 列名 asc; ascending        多列:      create table t7(                  id int auto_increment primary key,                  num int not null default 0,                  age int not null default 0                   )charset=utf8;

      insert into t7 (num, age) values (2, 12),(3,13),(4, 12);

      select * from t4 order by num desc, name asc;

      如果前一列的值相等的话, 会按照后一列的值进行进一步的排序.   5.分组:       select 列名,聚合函数(count(num)/sum(num)/max(num)/min(num)/avg(num)) from 表名 group by 列名;       select age, count(num) from t7 group by age;       select age, count(num) as cnt from t7 group by age;  显示别名 as

       having 的二次删选:

       select 列名,聚合函数 as 别名  from 表名 group by 列名 having 别名 > 条件;       select age, count(num) as cnt from t7 group by age  having cnt>1;       where 和 having的区别:               1). having与where类似,可筛选数据               2). where针对表中的列发挥作用,查询数据               3). having针对查询结果中的列发挥作用,二次筛选数据, 和group by配合使用            6.链表操作:                        select * from 表名,表名 where 表名.关联id=表名.关联id;                 左连接:                        select * from userinfo left join department on userinfo.depart_id=department.id;                        左边的表全部显示, 右边没有用到不显示                        右连接:

               select * from userinfo right join department on userinfo.depart_id=department.id;               右边的表全部显示, 左边没关联的用null表示

            内连接:               左右两边的数据都会显示

            ps:               a.只需要记住左连接 left join

               b.可以连接多张表 通过某一个特定的条件

   注意查询的顺序:      select name,sum(score) from 表 where id > 10 group by score having age> 12  order by age desc limit 2, 10      select * from score where

原文地址:https://www.cnblogs.com/sry622/p/11022628.html

时间: 2024-11-06 11:47:43

第三十六章 MYSQL语句一的相关文章

Gradle 1.12用户指南翻译——第三十六章. Sonar Runner 插件

本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个

第三十六章

将欲翕之,必姑张之:将欲弱之,必姑强之:将欲去之,必姑与之:将欲夺之,必姑予之.是谓微明.柔弱胜强.鱼不可脱于渊,邦利器不可以示人. 第三十六章1 想摆脱失眠?So easy! 将欲翕之,必姑张之 (第三十六章 第1讲) 姑:姑且,先. 上天想要把一件事情关上,就必先把它张开. 我们要懂得天地间阴阳变化的原理,顺着事物发展的原理去走.夜晚要想睡个好觉,白天就要打起精神做事. 各位朋友大家好,今天我们接着来聊<道德经>,看看老子又带给我们什么样的人生启发.今天,我们聊到了第三十六章,这是新的一章

【WPF学习】第三十六章 样式基础

原文:[WPF学习]第三十六章 样式基础 前面三章介绍了WPF资源系统,使用资源可在一个地方定义对象而在整个标记中重用他们.尽管可使用资源存储各种对象,但使用资源最常见的原因之一是通过他们的保存样式. 样式是可应用于元素的属性值集合.WPF样式系统与HTML标记中的层叠样式表(Cascading Style Sheet,CSS)标准担当类似的角色.与CSS类似,通过WPF样式可定义通用的格式化特性集合,并且为了保证一致性,在整个应用程序中应用他们.与CSS一样,WPF样式也能够自动工作,指定具体

奋斗吧,程序员——第三十六章 落花人独立,微雨燕双飞

什么什么,要我别倒下? 废话,不看着情敌们在我面前一个个倒下,然后踩着他们的尸体过去继续战斗,我怎么可能比他们先一刻倒下. 生命的意义在于不屈的抗争,只要情敌一天未清除,我们就不能退出战斗. 我们必须迎着夕阳勇往直前,正义在浪子们的心里点燃了一展明 灯,让鲜花洒满大地,让真爱充斥人间,那就是希望所在. 什么什么,要我退出? 废话,你见过我的刀出了刀鞘而不染血的吗,即使没有敌人的血,也必须有自己的血! 在我的脑海里只有仇人有资格变得刻骨铭心,其他的都无所谓,我就是忘乎所以我就是数典忘宗我就是粪土当

第十六章 MySQL基本操作

1.使用mysql命令行: a.连接mysql:打开mysql command line client 输入密码,回车 b.创建数据库.显示所以数据库.删除数据库.使用数据库 mysql> create database pet; ERROR 1007 (HY000): Can't create database 'pet'; database exists mysql> show databases; +--------------------+ | Database | +--------

老子《道德经》第三十六章

道生一,一生二,二生三,三生万物. 万物负阴而抱阳,冲气以为和. 人之所恶,惟孤寡不谷,而王公以为称. 故物或损之而益,或益之而损. 人之所教,我亦教之:强梁者不得其死,吾将以为教父. 天下之至柔,驰骋天下之至坚,无有入于无间,吾是以知无为之有益也. 不言之教,无为之益,天下希及之.

高性能MySQL之【第十六章MySQL用户工具】总结

接口工具: Msql Workbench   http://www.mysql.com/products/workbench SQLyog  http://www.webyog.com phpMyAdmin http://sourceforge.net/projects/phpmyadmin [不建议使用] Adminer phpmyadmin的更好的替代品, http://www.adminer.org[不建议公开访问] 命令行工具集: Percona Toolkit : Mysql管理员必备

第三十六章 metrics(4)- metrics-graphite

将metrics report给graphite(carbon-relay) 一.代码 1.pom.xml 1 <!-- metrics-graphite --> 2 <dependency> 3 <groupId>io.dropwizard.metrics</groupId> 4 <artifactId>metrics-graphite</artifactId> 5 </dependency> 依托于springboot

php分享(三十六)mysql中关联表更新

一:关联不同的表更新 1: 通过where关联更新 update student s, city c set s.province_name = c.province_name, s.city_name = c.name where s.city_code = c.code; 2:子查询更新 update student s set city_name = (select name from city where code = s.city_code); 子查询更新优化: UPDATE t_ad