MySQL第一篇
1.启动和连接MySQL服务器
sudo /etc/init.d/mysql start
sudo /etc/init.d/mysql start | stop | restart
sudo -i
/etc/mysql/mysql.conf.d/mysqld.cnf #修改配置文件,远程连接
2.客户端连接
mysql -h主机地址 -u用户名 -p密码
mysql -hlocalhost -uroot -p123456
3.基本的数据库命令
对库操作:
show databases; 查看已有的库
create database 库名 character set utf8; 创建库(指定字符集)
select database(); 查看当前所在库
use 库名; 切换库
show tables; 查看库中已有的表
drop database 库名; 删除库
4.库命名规则
1、数字、字母、_,但不能使用纯数字
2、库名区分字母大小写
3、不能使用特殊字符和mysql关键字
对表操作:
create table 表名(字段名1 数据类型,
字段名2 数据类型
)character set utf8; 创建表(指定字符集)
show create table 表名; 查看创建表的语句(字符集、存储引擎)
desc 表名; 查看表结构
drop table 表名; 删除表
对表记录:
insert into 表名 values(值1),(值2); 增加表记录
delete from 表名 where 条件; 删除满足条件的记录
update 表名 set 字段1=值1,字段2=值2 where 条件; 更新满足条件的记录的字段1,字段2的值
查询表记录:
select * from 表名 where 条件;
select 字段1,字段2 from 表名 where 条件;
对表字段操作:
1.语法:alter table 表名 执行动作;
2、添加字段(add)
alter table 表名 add 字段名 数据类型;
alter table 表名 add 字段名 数据类型 first;
alter table 表名 add 字段名 数据类型 after 字段名;
3、alter table 表名 drop 字段名; 删除字段
4、alter table 表名 modify 字段名 新数据类型;
5、desc 表名; 查看表结构
6.alter table 原表名 rename 新表名 修改表名
7.alter table 表名 change 原字段名 新字段名 数据类型
show engines 查看引擎
show index from 表名\G 查看索引
字符类型宽度和数值类型宽度区别:
1、数值类型宽度为显示宽度,只用于select查询时显示,和存储无关,可用zerofill查看效果
2、字符类型宽度超过之后无法存储
数据类型:整型 字符型 枚举型 时间类型
关系型数据库的核心内容是 关系 即 二维表
char和varchar的特点:
1、char :浪费存储空间,性能高
2、varchar :节省存储空间,性能低
运算符操作
1、数值比较&&字符比较&&逻辑比较
1、数值比较 := != > >= < <=
2、字符比较 := !=
3、逻辑比较 :and 、or 、between 值1 and 值
2、范围内比较
1、where 字段名 in(值1,值2,…)
2、where 字段名 not in(值1,值2,…)
3、匹配空、非空
1、where name is NULL
2、where name is not NULL
4、模糊查询(like)
1、where 字段名 like 表达式
select * from stu where name like “%明”
2、表达式
% :匹配0到多个字符
_ :匹配1个字符
SQL查询
语法:
3、select ...聚合函数 from 表名
1、where ...
2、group by ...
4、having ...
5、order by ...
6、limit ...;
*数字代表步骤顺序
聚合函数
avg(字段):平均值
sum(字段):求和
max(字段):最大值
min(字段):最小值
count(字段):统计该字段记录的条数
group by 字段名 根据给定的字段进行分组
e.g.
select country,avg(gongji) from sanguo group by country;
注意
1、group by后字段名必须要为select后的字段
2、如果查询字段和group by后字段不一致,则必须对该字段进行聚合处理(聚合函数)
having :对分组聚合后的结果进行进一步筛选
e.g.
select country,avg(gongji) from sanguo
group by country
having avg(gongji)>105
order by avg(gongji) DESC
limit 2;
order by 字段名 给查询结果进行排序 默认ASC(升序)/DESC(降序)
limit(永远放在SQL语句的最后写)
1、用法
1、limit n :显示n条记录
2、limit m,n :从第m+1条记录开始,显示n条
limit 2,3 :显示3、4、5三条记录
2、分页
1、每页显示5(m)条记录,显示第4(n)页的记录
limit (n-1)*m,m