一、命令
登录数据库: mysql -u root -p123456
退出数据库: quit 或者 exit
创建数据库: create database 数据库名;
使用数据库: use 数据库名;
删除数据库: drop database 数据库名;
创建表: create table 表名(字段名 字段类型 约束, ...);
修改表-添加字段: alter table 表名 add 字段名 字段类型 约束
修改表-修改字段类型: alter table 表名 modify 属性名 字段类型
修改表-修改字段名和字段类型: alter table 表名 change 原字段名 新字段名 字段类型 约束
修改表-删除字段: alter table 表名 drop 字段名;
删除表: drop table 表名;
查询数据: select * from 表名; 或者 select 列1,列2,... from 表名;
插入数据: insert into 表名 values (...) 或者 insert into 表名 (列1,...) values(值1,...)
修改数据: update 表名 set 列1=值1,列2=值2... where 条件
删除数据: delete from 表名 where 条件
二、常用的数据类型:
整数:int,bit
小数:decimal
字符串:varchar,char
日期时间: date, time, datetime
枚举类型(enum)
常见的约束:
主键约束 primary key
非空约束 not null
惟一约束 unique
默认约束 default 配合枚举类型使用时,需要在枚举内加上默认值
外键约束 foreign key
数据类型和约束保证了表中数据的准确性和完整性
三、基本查询结构
select * from 表名
判断和逻辑查询
>, <, >=, <= , =, !=/<>
and , or , not
判断为空使用: is null
判断非空使用: is not null
带Like的字符进行查询
like是模糊查询关键字
select * from 表名 where 属性名 like ‘%明_’;
%表示任意多个任意字符
_表示一个任意字符
范围查询
between .. and .. 表示在一个连续的范围内查询
in 表示在一个非连续的范围内查询
排序
排序使用 order by 关键字
asc 表示升序
desc 表示降序
集合函数
count(): 表示求指定列的总行数
max(): 表示求指定列的最大值
min(): 表示求指定列的最小值
sum(): 表示求指定列的和
avg(): 表示求指定列的平均值
分组
select * from 表名 group by 分组字段 having分组条件;
group_concat(属性):每个分组中指定字段值都显示出来
distinct字段 可用来消重
with rollup在最后记录后面新增一行,显示select查询时聚合函数的统计和计算结果
四、子查询
子查询是嵌入到主查询中
子查询是辅助主查询的,要么充当条件,要么充当数据源
子查询是可以独立存在的语句,是一条完整的 select 语句
例:查询大于平均年龄的学生:
select * from students where age > (select avg(age) from students);
左连接
左连接使用left join .. on .. , on 表示两个表的连接查询条件
左连接以左表为主根据条件查询右表数据,右表数据不存在使用null值填充。
select字段from表1 left join 表2 on 表1.字段1 = 表2.字段2
右连接则是right join.. on..
五、索引:
索引有数据库表中一列或多列组合而成,其作用是提高对表中数据的查询速度;
索引是建立在表上的,是对数据库表中一列或多列的值进行排序的一种结构。
索引有两中存储类型:B型树(BTREE)索引和哈希(HASH)索引,InnoDB和MYISAM储存引擎支持BTREE索引,MEMORY储存引擎支持HASH索引和BTREE索引,默认为HASH索引;
索引包括普通索引,唯一性索引,全文索引,单列索引,多列索引,空间索引等;
唯一性索引:在创建唯一性索引时,限制该索引的值必须时唯一的;
全文索引:只能创建在char,varchar和text类型的字段上;
全文索引的搜索执行方式可以不区分大小写,但索引的列使用二进制排序后,可以执行区分大小写的全文索引;
单列索引只根据该字段进行索引;
空间索引:使用SPATIAL参数可以设置为空间索引,空间索引只能建立在空间数据类型之上;
空间数据类型包括:GEOMETRY,POINT,LINESTRING,POLYGON等,
索引的优点:
提高检索数据的速度;对于有依赖关系的子表与父表的联合查询时,可以提高查询速度;通过分组和排序子句进行数据查询时,可以节省分组和排序的时间;
索引的缺点:
创建和维护索引时要耗费时间,耗费时间的数量数据量的增加而增加,而且索引要占据物理空间,每一个索引都要占据一定的物理空间;增加,删除和更改数据时,要动态维护索引,因此数据的维护速度减慢了;
索引提高查询数据的速度,因此在插入数据时,删掉索引,在查询数据时添加索引。