(0)MySQL 的指令(包含了解知识点)

第七章索引:入门安装 - 增删改查基本操作 - 外键(不同表之间的关联) - 数据库的建立和操作 - 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 视图名;

更新视图:

先删除视图,再创建视图

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

上一篇:基于condition 实现的线程安全的优先队列(python实现)


下一篇:oc 关键字