MySQL语句的使用

进入数据库

 mysql -u root -pmysql    (u用户名,p密码)#如果不想让其他人看到就直接一个p然后回车再打密码
select version();   查看数据库版本
select now  查看现在时间

数据库操作

查看数据库 show databases    复数加s
创建数据库 create [kri:eit] database 文件名 charset=utf8; 
删除数据库 drop [drop] database
use     切换路径进入到指定的库

 

表操作

desc        查看列表
约束表格
primary key     设为主键
auto_increment  自然生长
not null        不为空
int unsigned    无符号整型
create  table+表名(列名
+约束,
drop table+表名   删除表
id  int unsigned  primary key  auto_increment  not null # 无符号整形  设为主键 自动增长 不为空
varchar(10) 字符串字节
 
 

表的增删改查‘

1、查
查询表的所有数据
select * from 表名;
查询指定的列
select 列名1,列名2 from 表名;

全列插入
insert into 表名 values(id int primary key auto_increment )
指定列插入
插入的数据和列名对应
insert into 表名(列名1,列名2) values ( )
指定列一行一行插入
insert into 表名( 列名) values ( ..........)

修改表里的数据
update 表名 set 列名=新的值 where id = **;

delete from 表名 where id = ** ;

起别名
select 列名 as 新列名, 列名1 as 新列名1 from 表名
去重 单列
select distinct 列名 from 表名

数据条件查询
where
1、比较语句
> = < >= <= !=
2、逻辑运算符
and or not
3、模糊查询
like
% 匹配任意多个字符
_ 匹配任意一个字符
4、范围查询
in 表示在一个不连续的范围内
between ......and ... 表示在一个连续的范围内
null
is null 判断是空
is not null 判断不是空

优先级:
由高到低的顺序
小括号>not>比较运算符>逻辑运算符
在逻辑运算符里 and > or
如果想要先执行or 就得加括号


排序
order by
asc 升序
desc 降序

分组

group by 在查询结果后面进行分组
select gender from students group by gender;

1、group by + group_concat(字段名) 可以查出该字段的信息
select gender,group_concat(name) from students group by gender;
2、group by + 聚合函数 avg() sum() count(*)
select gender,count(*) from students group by gender;
3、group by + having
having 条件表达式 用来分组查询后再根据条件进行查询
having和where的用法是一样的 只不过having只能在group by 后使用
mysql> select gender,count(*) from students group by gender having count(*)>2;
4、group by + with rollup
作用就是在最后一行 记录当前列里所有记录的总和

聚合函数
1、count(*) 获取总行数
select count(*) from students;
2、max 查询最大值
3、min 查询最大值
4、sum 求和
5、avg 求平均值
5、round(avg(列名),2) 求平均值保留两位小数

一个汉字占多少长度与编码有关:
UTF-8:一个汉字=3个字节
GBK:一个汉字=2个字节

分页
1、limit start(开始,从第几行开始查) ,count(从开始行下一行,往后查几行数据)
select * from 表名 limit start,count;
select * from 表名 limit 9,5;

外键
定义,连接两个表
1,先建主表 插入数据
2,再建子表

 

连接查询

 

1、内连接 就是两张表的交集
select * from 表1 inner join 表2 on 表1.列名=表2.列名
2、左连接
select * from 表1 left join 表2 on 表1.列名=表2.列名
3、右连接
select * from 表1 right join 表2 on 表1.列名=表2.列名

自关联
一个表自己查询自己
inner join on

子查询
定义:一个select语句里面嵌入另一个select语句
主查询和子查询的关系
1、子查询是嵌入在主查询里
2、子查询是辅助主查询 充当条件或者数据源的
3、子查询是一个完整的select语句,可以被单独拿出来使用
子查询分类
1、标量子查询 返回的是数据(一行一列)
2、列级子查询 返回的是一列(一列多行)
3、行级子查询 返回的是一行(一行多列)

 

posted @ 2020-06-02 13:53  老祝头  阅读(285)  评论(0编辑  收藏  举报