zoukankan      html  css  js  c++  java
  • (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的数据

    查询和进入

    desc table_name; # 查看表有哪些字段

    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  #做好外键后查看对应的值,这个指令会将表对应表全部获取,右边的表数据全显示

    39、create user`koal`@`*` identified by'123456';   # 创建用户和密码

    40、show grants for 'koal'@'*';  # 查看用户权限,能操作的表

    41、GRANT ALL PRIVILEGES ON koal.* TO 'koal'@'%' IDENTIFIED BY '123456';  # 创建用户权限并允许远程登录

    42、flush privileges;  # 刷新策略

    新建

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

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

    create database koalra DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;  # 新建GBK编码的数据库

    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(id1) references tablename2(id2) #这个是给已有表创建外键,tablename就是需要创建外键的表名,id1就是这张表的字段,tablename2就是需要关联的表名,id2就是这张表的字段

    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 视图名;

    更新视图:

    先删除视图,再创建视图

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

  • 相关阅读:
    go 接口
    jboss 7部署cas3.4.11
    HP LoadRunner 11 破解及license
    JBoss7快速入门
    jboss7的服务器开启和关闭命令
    proc/sys/net/ipv4/下各项的意义
    JAVA使用EPoll来进行NIO处理的方法(转)
    Java NIO类库Selector机制解析(下)
    Java NIO类库Selector机制解析(上)
    mysql 性能优化方向
  • 原文地址:https://www.cnblogs.com/shizhengquan/p/10282359.html
Copyright © 2011-2022 走看看