3、select …聚合函数 from 表名 1、where … 2、group by … 4、having … 5、order by … 6、limit …;
聚合函数 方法功能avg平均值max最大值min最小值sum求和count求总数group by group by后字段名必须要为select后的字段 查询字段和group by后字段不一致,则必须对该字段进行聚合处理(聚合函数)
having语句 对分组聚合后的结果进行进一步筛选
eg1 : 找出平均攻击力大于105的国家的前2名,显示国家名称和平均攻击力 select country,avg(attack) as number from sanguo group by country having number>105 order by number DESC limit 2;注意 having语句通常与group by联合使用 having语句存在弥补了where关键字不能与聚合函数联合使用的不足,where只能操作表中实际存在的字 段,having操作的是聚合函数生成的显示列
distinct语句 不显示字段重复值 eg1:表中有哪些国家 select distinct country from 表名定义 对数据库表的一列或多列的值进行排序的一种结构
优点 加快数据检索速度
缺点 占用物理存储空间 当对表中数据更新时,索引需要动态维护,降低数据维护速度
创建索引 建表时:
create table 表名( 字段名 数据类型, 字段名 数据类型, index(字段名), index(字段名), unique(字段名) );在已有表中创建索引
create [unique] index 索引名 on 表名(字段名); 查看索引 desc 表名; 删除索引 drop index 索引名 on 表名;让当前表字段的值在另一个表的范围内选择
-语法
foreign key(参考字段名) references 主表(被参考字段名) on delete 级联动作 on update 级联动作 create table slave (stu_id int ,name char(32),money decimal(6,2), foreign key (stu_id) references master(id) on delete cascade on update cascade); 使用规则: 1、主表、从表字段数据类型要一致 2、主表被参考字段 :KEY的一种,一般为主键删除外键:alter table 表名 drop foreign key 外键名; 查询外键名 :show create table 表名;
级联动作 cascade 数据级联删除、更新(参考字段) restrict(默认) 从表有相关联记录,不允许主表操作 set null 主表删除、更新,从表相关联记录字段值为NULL 已有表添加外键 alter table 表名 add foreign key(参考字段) references 主表(被参考字段) on delete 级联动作 on update 级联动作定义:把内层的查询结果作为外层的查询条件 语法格式:
select ... from 表名 where 条件(select ....);示例:
1、把攻击值小于平均攻击值的英雄名字和攻击值显示出来 select name,attack from sanguo where attack<(select avg(attack)from sanguo) 2、找出每个国家攻击力最高的英雄的名字和攻击值(子查询) select name,attack from sanguo where (country,attack)in (select country,max(attack)from sanguo group by country);source 文件名.sql
作用
把文件系统的内容导入到数据库中 语法(方式一)
load data infile “文件名” into table 表名 fields terminated by “分隔符” lines terminated by “\n” 示例 scoretable.csv文件导入到数据库db2的表
1、将scoretable.csv放到数据库搜索路径中 mysql>show variables like 'secure_file_priv'; /var/lib/mysql-files/ Linux: sudo cp /home/tarena/scoreTable.csv /var/lib/mysql-files/ 2、在数据库中创建对应的表 create table scoretab( rank int, name varchar(20), score float(5,2), phone char(11), class char(7) )charset=utf8; 3、执行数据导入语句 load data infile '/var/lib/mysql-files/scoreTable.csv' into table scoretab fields terminated by ',' lines terminated by '\n'语法(方式二)
source 文件名.sql
作用
将数据库中表的记录保存到系统文件里
语法格式
select … from 表名 into outfile “文件名”
fields terminated by “分隔符” lines terminated by “分隔符”;
注意 1、导出的内容由SQL查询语句决定 2、执行导出命令时路径必须指定在对应的数据库目录下
1、表能根据实际需求复制数据
2、复制表时不会把KEY属性复制过来 create table 表名 select 查询命令;
全程重点,理论和锁分类及特点
目的
解决客户端并发访问的冲突问题
锁类型分类
读锁(共享锁):select 加读锁之后别人不能更改表记录,但可以进行查询 写锁(互斥锁、排他锁):加写锁之后别人不能查、不能改锁粒度分类
表级锁 :myisam 行级锁 :innodb
添加授权用户
1、用root用户登录mysql mysql -uroot -p123456 2、授权 grant 权限列表 on 库.表 to "用户名"@"%" identified by "密码" with grant option; 3、刷新权限(不刷新不生效) flush privileges;权限列表
all privileges 、select 、insert ... ... 库.表 : *.* 代表所有库的所有表示例
1、添加授权用户work,密码123,对所有库的所有表有所有权限 mysql>grant all privileges on *.* to 'work'@'%' identified by '123' with grant option; mysql>flush privileges; mysql>grant all privileges on db2.* to 'work01'@'%' identified by '123' with grant option; mysql>flush privileges; 2、添加用户duty,对db2库中所有表有所有权限事务四大特性(ACID)
1、原子性(atomicity) 一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作 2、一致性(consistency) 数据库总是从一个一致性的状态转换到另一个一致性的状态 3、隔离性(isolation) 一个事务所做的修改在最终提交以前,对其他事务是不可见的 4、持久性(durability) 一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失注意
1、事务只针对于表记录操作(增删改)有效,对于库和表的操作无效 2、事务一旦提交结束,对数据库中数据的更改是永久性的