第七章索引:入门安装 - 增删改查基本操作 - 外键(不同表之间的关联) - 数据库的建立和操作 - MySQL的查询操作(模糊、通配、限制符等) - MySQL的引擎 - MySQL的事物(数据回滚) - SQL的注入(漏洞的防范) - 触发器(同时操作两张表) - 索引(提高查找速度) - 慢日志(记录sql语句的执行时间,用来排查优化语句)

PS:所有指令的后面都需要加分号,告诉程序这条指令到这里为止结束了,否则会报错,只有少数特殊指令不需要加分号如use

PS:where 和having 的区别(都是用来过滤数据的),但是不同的where是过滤的原生的数据(没有经过处理的数据,比如分组等),having是过滤group by(分组)之后的数据进行二次筛选,这个程序设计者设计的,固定的

PS:where是可以和having配合使用的,但是必须在group by 分组之前使用,即select count(id) as cut,age from tablename where id > 6 group by age having cnt < 2 #查找tablename中age列下序号6以后的值,然后计算相同的数量,查找相同数量<2的数据

查询和进入

1、show databases; #查看data文件夹下的数据库

2、use db(test1);  #进入指定的文件夹(数据库)

3、show tables;  #查看当前数据库下的所有数据表

4、show databases;  # 查看data文件夹下所有的数据库,确认自己想建立的表存不存在

5、select * from test1;  #查看指定数据表(test1)的所有列,*是正则匹配所有 \ test1 就是数据表名

6、selece id from test ;  #查看指定数据表中的指定列(id就是列名)的所有内容

7、select name,id from test1;  #查看指定数据表(test1)中多项列名(name,id)的所有内容

8、select * from test1 where id = 1;   #查看指定数据表(test1)中指定行数(id=1就是指定行数是1的行)的数据

9、show create table test1;   #查看数据表的修改或者建立过程

10、desc test1;   #查看数据表例的信息(包括格式、约束等条件)

11、select id,name from test1 where id<4;   #查看数据表中指定多个列的一个范围的数据 \ id<4 就是查看4行之前的数值

12、select id,name from test1 where id<=4;   #查看数据表中指定多个列的一个范围的数据 \ id<4 就是查看4行之前的数值也包括第四行

13、select id,name from test1 where id>4;   #查看数据表中指定多个列的一个范围的数据 \ id>4 就是查看4行之后所有的数值

14、select id,name from test1 where id>=4;   #查看数据表中指定多个列的一个范围的数据 \ id>4 就是查看4行之后所有的数值包括第四行

15、select id,name from test1 where id!=4;   #查看数据表中指定多个列的一个范围的数据 \ id!=4 就是除了第四行的所有值

16、select id,name from test1 where id>1 and id <4;   #查看数据表中指定多个列的一个范围的数据 \ id>1 and id <4 第一行至第四行中间的所有数据

17、select id,name from test1 where id>=1 and id <=4;   #查看数据表中指定多个列的一个范围的数据 \ id>1 and id <4 第一行至第四行中间的所有数据包括第一行和第四行

18、select id,name from test1 where id betweeb 1 and 4;   #查看数据表中指定多个列的一个范围的数据 \   id betweeb 1 and 4 第一行至第四行中间的所有数据,包括第一行和第三行

19、 select id,name from test1 where id in (1,2,3,4);   #查看数据表中指定多个列的一个范围的数据 \   in(1,2,3,4) 列出在指定行内的所有数据

20、select id,name from test1 where id not in (1,2,3,4);   #查看数据表中指定多个列的一个范围的数据 \   not in(1,2,3,4) 列出不在指定行内的所有数据

21、select * from tablename where 列名='值' and 列名=值;  #查看数据表中同行的指定多个列下指定名称的值,如果符合就会返回,不符合就不会返回值

22、select * from test1 where name like 'x%';  #列出数据表中所有以x开头的数据

23、select * from test1 where name like '%x%' ; #列出数据表中所有中间含有x的数据

24、select * from test1 where name like '%x';  #列出数据表中所有以x结尾的数据

25、select * from test1 limit 2,2; #列出数据表中指定行后面指定行数的数据

26、select * from tablename limit 5; #tablename就是表名,数字 5 就是要取几行数据

27、select * from tablename limit offset(4),5;  #offset就是偏移量,意思就是从第几行开始,数字 5 就是要取几行数据

28、select * from tablename order by age;  #将列表中的数据通过age来进行升序排序,后面有asc和desc两个参数,如果不写,默认按照升序进行排序

29、select * from tablename order by age asc;  #acs就是按照升序 排列

30、select * from tablename order by age desc;  #desc就是按照降序排列

31、select * from tablename order by age desc,id asc;  #优先按照age降序排列,如果age有相同的,就按照id进行升序排列

32、select count(id) as cnt,age from tablename group by age;   #分组age并且计算这个组相同的条件的数量

33、select count(id) as cnt,age from tablename  group by age having cnt < 2;  #查询tablename表中age列然后计算相同age值的数量并且查找相同age数量<2的数据

34、select count(id) as cut,age from tablename where id > 6 group by age having cnt < 2 ;#查找tablename表中age列,且id列>6的值,并且分组,且计算相同的数量,查找相同数量<2的数据

连表查询(做好外键后查询关联)

35、select * from tablename1 inner join tablename2 on tablename1 .外键_id=tablenam2.id  #将两张表的值所有列的值全部获取

36、select  tablename1.列名, tablename2.列名 from tablename1 inner join tablename2 on tablename1.外键_id=tablename2.id #查询获取的不是id,而是值对应的值

37、select * from tablename1 left join tablename2 on tablename1.外键_id=tablename2.id  #做好外键后查看对应的值,这个指令会将表对应表全部获取,左边的表数据全部显示

38、select * from tablename1 right join tablename2 on tablename1.外键_id=tablename2.id  #做好外键后查看对应的值,这个指令会将表对应表全部获取,右边的表数据全显示

新建

1、tee D:\mysql.txt  #建立一个数据库操作过程的记录文件,将数据库的所有操作记录在指定文件下,名称和路径可以自定

2、create database db1 default charset utf8; #建立db1数据库

3、create table  test1(  # 新建表的语句

    #这里可以加注释,就是# + 内容

    id int unsigned auto_increment primary key,  #unsigned 就是类型,做外键的时候这个类型一定要一样  \  auto_increment就是自增的意思 \  primary key就是定义成主键

    name char(32) not null default '',

    age int #最后一列不能有逗号,有逗号会报错

) charset=utf8;  #这里括号后面必须有分号,这个语法格式是新建数据表的固定语法,最后也可以加个charset utf8(加不加都可)

PS:创建数据表的固定格式,包括约束和数据类型

4、constraint  depe_id foreign key user('deperment') references depertment('id')  #创建一个外键的语句格式,这个条件实在创建表的时候使用的

PS:depe_id(就是外键的名字,自定义) \ user就是表的名字(需要加约束的列名) \ depertment 就是外键表的名字(外键表的id列)

5、 alter table tablename add foreign key(外键名) references tablename2(外键关联的列名) #这个是给已有表创建外键

PS:外键中子表就是使用约束规则的表,父表就是提供规则的表

删除

1、drop database db;  # 删除数据库

1、drop table test1;  #删除数据表

2、delete from test1; #将数据表(test1)中的数据清空

3、delete from  test1 where id = 2  #删除指定数据表(test1)指定行数(id=1就是代表行数为1行)的数据

4、truncate test1  #清空数据表(test1)后将序号格式化自增时候从0开始

5、alter table test1 drop name #删除数据表指定列

增加

1、insert into test1(列名,列名) values(‘值','值');  #插入数据,字符类型要加 ‘’,int类型不需要 ‘’

2、insert into test1(列名) values('值'),('值'),('值');  #一列增加多行值

3、insert into test1(列名,列名) values('值','值'),('值','值'),('值','值');  #多列增加多行值

insert into 是固定语法

db1是要增加数据的表明,括号里就是要增加的列名

values()是和列对应的,括号里写列对应的数据

4、alter table test1 add mingzi varchar(32) not null default ''; # 在数据表中增加列 \ mingzi就是要增加的列名

PS:因为默认值default是空,所以查看的时候都是空的

5、alter table 表名 add column 列名 varchar(20) not null after 列名;#在指定列的后面增加一列

6、alter table 表名 add column 列名 varchar(20) not null first;#在第一列添加新列

修改

1、update test1 set name='bbbb'  #直接将执行列名下的数据全部改成指定的值 \ test1就是数据表名 \ name就是列名 \ =后面的就是要改的新名

1、update test1 set name='bbbb' where id=1  #修改指定数据表下指定的列名下指定行数的值 \  id=1 就是指定行数(这个id不是固定,是根据自己写的主键的名称来定义的,就是表第一列的名称)

3、update test1 set name='bbbb',name='aaaa' where id=1 #同时修改多列指定行数的值

4、alter table test1 change name  mingzi varchar(32) not null default ''; #修改指定列表下指定列名 \ mingzi就是要更新的名字

5、alter table tablename modify column 列名 类型; #修改列的属性,最后的类型可以是int,int unsigned,char等

事物

1、开启事务: start transaction;

2、A开始转账:update user1 set money=4500 where id=1;

3、B开始收钱:update user1 set monet=5500 where id=2;

4、提交事务:  commit;

5、数据错误回滚: rollback

索引

unique(id) # id就是外键被约束的列的名字,意思就是这列内的数据不能重复,也叫唯一约束

unique(id,url) #这个是联合唯一索引

了解知识点

-----------------------------------------------------------------------------------------------------

视图的作用,就是限制查询者指令的权限,限制查询者能够看表的内容

---主表内的数据更新后视图也能同步,但是不能往视图里添加数据,会报错

创建视图:

creat view 视图名 as select name,age from tablename;

查看视图:

select  * from 视图名;

删除视图:

drop view 视图名;

更新视图:

先删除视图,再创建视图

-----------------------------------------------------------------------------------------------------

(0)MySQL 的指令(包含了解知识点)的更多相关文章

  1. 【数据库】7.0 MySQL入门学习(七)——MySQL基本指令:帮助、清除输入、查询等

    1.0 help == ? 帮助指令,查询某个指令的解释.用法.说明等.详情参考博文: [数据库]6.0 MySQL入门学习(六)——MySQL启动与停止.官方手册.文档查询 https://www. ...

  2. MySQL常用指令,java,php程序员,数据库工程师必备。程序员小冰常用资料整理

    MySQL常用指令,java,php程序员,数据库工程师必备.程序员小冰常用资料整理 MySQL常用指令(备查) 最常用的显示命令: 1.显示数据库列表. show databases; 2.显示库中 ...

  3. ASP.NET4.0所有网页指令

    ASP.NET网页指令(Page Directive)就是在网页开头的标签声明: <% Page Language="C#" %> 而指令的作用在于指定网页和用户控件编 ...

  4. MySQL Desc指令相关

    MySQL Desc指令相关   2011-08-09 11:25:50|  分类: my基本命令 |举报 |字号 订阅 1.desc tablename; 例如 :mysql> desc jo ...

  5. 【数据库】6.0 MySQL入门学习(六)——MySQL启动与停止、官方手册、文档查询

    1.0 MySQL主要有四种启动方式:直接启动.安全启动.服务启动.多实例启动. 直接启动: 服务器启动: 安全启动(最常用): 多实例启动: 2.0如何获得MySQL帮助 2.1官方手册 下面提供百 ...

  6. 【数据库】1.0 MySQL入门学习(一)——常识性知识

    1.0 什么是MySQL(官方发音 My Ess Que Ell)? 是一个快速.多线程.多用户和强壮的SQL数据库服务器,SQL是世界上最流行的标准化数据库语言. 名字来源:共同创办人Monty W ...

  7. Ubuntu Mysql 常用指令

    mysql 常用指令及中文乱码解决 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  8. mysql判断是否包含某个字符的方法

    mysql判断是否包含某个字符的方法用locate 是最快的,like 最慢.position一般实战例子:select * from historydatawhere locate('0',open ...

  9. mysql 基础指令/命令

    1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root - ...

  10. Mysql下Limit注入方法(此方法仅适用于5.0.0<mysql<5.6.6的版本)

    SQL语句类似下面这样:(此方法仅适用于5.0.0<mysql<5.6.6的版本) SELECT field FROM table WHERE id > 0 ORDER BY id ...

随机推荐

  1. Weka中数据挖掘与机器学习系列之数据格式ARFF和CSV文件格式之间的转换(五)

    不多说,直接上干货! Weka介绍: Weka是一个用Java编写的数据挖掘工具,能够运行在各种平台上.它不仅提供了可以直接用于数据挖掘的软件,还提供了src代码,使用者可以修改源代码,进行二次开发. ...

  2. Win10系列:VC++媒体播放

    媒体播放包括视频播放和音频播放,在开发Windows应用商店应用的过程中可以使用MediaElement控件来播放视频文件和音频文件.本节将通过一个具体的示例介绍如何使用MediaElement控件来 ...

  3. learning ddr DLL-off mode

  4. python 学习 map /reduce

    python 内建了map()和reduce()函数 map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回. ...

  5. 首次编译Java小程序

    public class helloworld { public static void main(string[] args) { system.out.println("hello wo ...

  6. 通过eclipse创建项目

    基于eclipse的Java文件:项目(project)<类(class)<方法(method),即方法method必须基于class, class必须基于project. 项目是程序的源 ...

  7. Linux3.10.0块IO子系统流程(4)-- 为请求构造SCSI命令

    首先来看scsi_prep_fn int scsi_prep_fn(struct request_queue *q, struct request *req) { struct scsi_device ...

  8. 对称加密-java实现

    主要步骤如下: 1.利用SecretKeyFactory.getInstance("加密算法")创建密钥工厂,加密算法如"DES","AES" ...

  9. window.setTimeout和window.setInterval的区别,及用其中一个方法记录时间。

    window.setTimeout(语句,时间)是在多久之后执行语句,语句只执行一次. window.setInterval(语句,时间)是每隔多久执行一次语句,语句循环执行. <!DOCTYP ...

  10. python scrapy 数据处理时间格式转换

    def show(self,response): # print(response.url) title = response.xpath('//main/div/div/div/div/h1/tex ...