首页 > 数据库 >学习笔记:MySQL常用的一些SQL语句

学习笔记:MySQL常用的一些SQL语句

时间:2023-05-07 14:24:28浏览次数:41  
标签:语句 10 -- MySQL increment SQL 11 id select

本文谈谈MySQL的开发必会的sql语句

创建数据库

createdatabasedb1;

删除数据库

dropdatabasedb1;

创建数据表

createtabletb1用户表(idintnotnullauto_increment primarykey,namechar(10),                     department_idint,                     p_idint,                 )engine=innodbdefaultcharset=utf8;

主键(primary key)一个表只能有一个主键,主键可以由一列或者多列组成

外键的创建

CREATETABLEt5 (                       nidint(11)NOTNULLAUTO_INCREMENT,                       pidint(11)notNULL,numint(11),                       primarykey(nid,pid)--这里就是把两列设置成了主键 )ENGINE=InnoDBDEFAULTCHARSET=utf8;createtablet6(idintauto_increment primarykey,namechar(10),                         id1int,                         id2int,CONSTRAINTfk_t5_t6 foreignkey(id1,id2)REFERENCESt1(nid,pid)--这里是设置外键 )engine=innodbdefaultcharset=utf8;

数据行的操作

数据的插入

insertintotb1(name,age)values('ax',8);insertintotb12(name,age)selectname,agefromtb11;

表中的数据的删除

deletefromt1;truncatetablet1;droptablet1deletefromtb1whereid>10deletefromtb12whereid>=2orname='alex'

数据的更新

updatetb1setname='root'whereid>10

数据的查询

select*fromtb;selectid,namefromtb;

表结构的查看

showcreatetablet1; desc t1;

其他

select*fromtb12whereid!=1select*fromtb12whereidin(1,5,12);select*fromtb12whereidnotin(1,5,12);select*fromtb12whereidin(selectidfromtb11)select*fromtb12whereidbetween5and12;

通配符

select*fromtb12wherenamelike"a%"select*fromtb12wherenamelike"a_"

分页

select*fromtb12 limit10;select*fromtb12 limit0,10;select*fromtb12 limit10,10;select*fromtb12 limit20,10;select*fromtb12 limit10offset20;# page = input('请输入要查看的页码') # page = int(page) # (page-1) * 10 # select * from tb12 limit 0,10; 1  # select * from tb12 limit 10,10;2 

排序

select*fromtb12orderbyiddesc; 大到小select*fromtb12orderbyidasc;  小到大select*fromtb12orderbyagedesc,iddesc;  取后10条数据select*fromtb12orderbyiddesclimit10;

分组

selectcount(id),max(id),part_idfromuserinfo5groupbypart_id; 聚合函数有下面几个:                                       count                     max                     min                     sum                     avg  **** 如果对于聚合函数结果进行二次筛选时?必须使用having ****selectcount(id),part_idfromuserinfo5groupbypart_id havingcount(id) > 1;selectcount(id),part_idfromuserinfo5whereid > 0groupbypart_id havingcount(id) > 1;

自增值设置

表自增值的设置

altertablet1 auto_increment=20;-- 这个就表示从开始20开始算,用上面的show create table t1\G 就可以看到当前的值是多少。 

基于会话级别

-- 查看当前的会话值 showsessionvariableslike'auto_incre%'-- 设置会话步长 setsessionauto_increment_increment=2;-- 设置起始值 setsessionauto_increment_offset=10;

基于全局设置

-- 查看全局的设置值 showglobalvariableslike'auto_inc%';-- 设置全局步长值 setglobalauto_increment_increment=3;-- 设置起始值 setglobalauto_increment_offset=11;

sql server 是在创建表的时候就可以自己设置,灵活度很高REATE TABLE t5 (nid int(11) NOT NULL AUTO_INCREMENT,pid int(11) NOT NULL,num int(11) DEFAULT NULL,PRIMARY KEY (nid,pid)) ENGINE=InnoDB AUTO_INCREMENT=4, 步长=2 DEFAULT CHARSET=utf8

CREATE TABLE `t6` (

nid int(11) NOT NULL AUTO_INCREMENT,pid int(11) NOT NULL,num int(11) DEFAULT NULL,PRIMARY KEY (nid,pid)) ENGINE=InnoDB AUTO_INCREMENT=4, 步长=20 DEFAULT CHARSET=utf8

唯一索引

createtablet1(idint,numint,     xxint,uniquequ1 (num,xx)-- 意思就是这两列在一行上面数据不能相同,例如都是1,1,就不行 );

唯一索引:约束不能重复(可以为空)主键索引:约束不能重复(不可以为空)他们的特点都是加速查询

外键一对一

createtableuserinfo1(idintauto_increment primarykey,namechar(10),                     genderchar(10),                     emailvarchar(64)                 )engine=innodbdefaultcharset=utf8;createtableadmin(idintnotnullauto_increment primarykey,                     usernamevarchar(64)notnull,passwordVARCHAR(64)notnull,                     user_idintnotnull,uniqueuq_u1 (user_id),CONSTRAINTfk_admin_u1 FOREIGNkey(user_id)REFERENCESuserinfo1(id)                 )engine=innodbdefaultcharset=utf8;

外键多对多

示例1:                 用户表                 相亲表              示例2:                 用户表                 主机表                 用户主机关系表             ===》多对多createtableuserinfo2(idintauto_increment primarykey,namechar(10),                     genderchar(10),                     emailvarchar(64)                 )engine=innodbdefaultcharset=utf8;createtablehost(idintauto_increment primarykey,                     hostnamechar(64)                 )engine=innodbdefaultcharset=utf8;createtableuser2host(idintauto_increment primarykey,                     useridintnotnull,                     hostidintnotnull,uniqueuq_user_host (userid,hostid),CONSTRAINTfk_u2h_user FOREIGNkey(userid)REFERENCESuserinfo2(id),CONSTRAINTfk_u2h_host FOREIGNkey(hostid)REFERENCEShost(id)                 )engine=innodbdefaultcharset=utf8;

连表操作

select*fromuserinfo5,department5select*fromuserinfo5,department5whereuserinfo5.part_id = department5.idselect*fromuserinfo5leftjoindepartment5onuserinfo5.part_id = department5.idselect*fromdepartment5leftjoinuserinfo5onuserinfo5.part_id = department5.id                     # userinfo5左边全部显示                      #select*fromuserinfo5rightjoindepartment5onuserinfo5.part_id = department5.id                     # department5右边全部显示select*fromuserinfo5 innderjoindepartment5onuserinfo5.part_id = department5.id                     将出现null时一行隐藏select*fromdepartment5leftjoinuserinfo5onuserinfo5.part_id = department5.idleftjoinuserinfo6onuserinfo5.part_id = department5.idselectscore.sid,                         student.sidfromscoreleftjoinstudentonscore.student_id = student.sidleftjoincourseonscore.course_id = course.cidleftjoinclassonstudent.class_id = class.cidleftjointeacheroncourse.teacher_id=teacher.tiselectcount(id)fromuserinfo5;

标签:语句,10,--,MySQL,increment,SQL,11,id,select
From: https://www.cnblogs.com/bk6601/p/17379266.html

相关文章

  • SQL Server 多行合并成一行,逗号分隔实现
    我们写sql脚本处理数据的时候针对部分数据进行groupby分组,分组后需要将部分数据放入分组后的行里面以逗号分隔。举一个简单例子: 如上图的数据,需要对学生进行分组,取得学生都参与了哪些学科的考试和所有总分。如下图这种数据目前有两种方案,1.在SQLServer2017版本 ......
  • mysql执行顺序
    Mysql语法顺序,即当sql中存在下面的关键字时,它们要保持这样的顺序: select[distinct]fromjoin(如leftjoin)onwheregroupbyhavingunionorderbylimit  Mysql执行顺序,即在执行时sql按照下面的顺序进行执行: from......
  • [docker]mysql的docker镜像中docker-entrypoint-initdb.d目录的妙用
    docker-entrypoint-initdb.d是Docker官方MySQL镜像中的一个目录,用于初始化数据库。在该目录下,可以放置一些SQL脚本文件,MySQL会在容器启动时自动执行这些脚本文件,用于创建用户、创建数据库、创建表等操作。具体来说,当MySQL镜像启动时,其entrypoint.sh脚本会检查是否存在......
  • 神奇的 SQL 之 CASE表达式,妙用多多 !
    CASE表达式之概念相信大家都用过CASE表达式,尤其是做一些统计功能的时候,用的特别多,可真要说什么是CASE表达式,我估计还真没几个人能清楚的表述出来。CASE表达式和“2+1”或者“120/3”这样的表达式一样,是一种进行运算的功能,正如CASE(情况)这个词的含义一样,用于区分情况,在有......
  • 在本机有MYSQL57的情况下安装MYSQL80
    下载MYSQL80https://dev.mysql.com/downloads/mysql/需要ORACLE账号配置环境变量加一个环境变量MYSQL_HOME80值为自己的放置解压的MYSQL80的根目录路径在PATH中配置环境变量%KEY%可以索引到刚才在外面配置的路径的内容,然后加上\bin,\bin中有可执行的批处理脚本将80的环境......
  • Linux deplay 安装 Ubuntu 及 MySQL
    设备支持:已root的mi-4(架构:armv71)软件支持:LinuxDeplay在Linuxdeplay上安装好你希望安装的Linux版本,我这里安装的是Ubuntu18.04(bionic),注意要根据手机的处理器型号选择适配的处理器版本,由于mi-4的处理器是armv71,发行版本选择armhfARMCortex-A系列(A53、A57、......
  • MySQL数据优化
    select*fromstudent;deletefromstudent;SELECTCOUNT(1)fromstudent;SELECT*FROM`student`LIMIT10000,10--0.674s--0.033s--0.031sSELECT*FROM`student`LIMIT10000,10;--0.031sSELECT*FROM`student`LIMIT10000,100;--0.032sSELECT*FROM......
  • 软件测试|一文告诉你SQL到底是什么
    前言我们在学习数据库时,第一个要弄明白的东西就是,SQL是什么,SQL是StructuredQueryLanguage的缩写,字面意思为“结构化查询语言”,它可以用来进行数据的查询、插入、更新、删除等操作,也可以用于创建和管理数据库对象,如表、视图、存储过程、函数等。本篇文章我们就将对SQL进行系统......
  • mysql error 1064(42000)
    mysql表里面,使用同样的语法查询一张表,用的nopcommerce的表,里面的Order表,查询的时候出不来,总是提示1064(42000说语法有错误,思考不会有错,于是查询这个问题,也有想过这张表名有些特殊, 查询要加反单引号,select*from`Order`;就查询出来了,可能Order是一个关键......
  • 《SQLi-Labs》03. Less 11~15
    目录Less-11知识点题解Less-12题解Less-13题解Less-14题解Less-15知识点题解sqli。开启新坑。Less-11知识点第十一关页面发生了变化,是账户登录页面。那么注入点在输入框。前十关使用的是get请求,参数都体现在url上,而十一关是post请求,参数在表单里。可以直接在输入框......