常用工具

Mysql常用简单语句

2019-04-19  本文已影响0人  张小Di

基本操作

//查看数据库
show databases;
//创建数据库
create database A;
//使用数据库
use A;
//删除数据库
drop database A;

遇到问题:使用administrator执行cmd,创建数据库时出现ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'a'提示,因为需要使用mysql的默认用户名root登陆

//-u:数据库用户名,localhost表示本地
//-h:服务器名,root是默认用户名
//-p:密码
mysql -h localhost -u root -p

表的操作

//查看数据库中所有表
show tables
//创建表
create table student
(
列 数据类型,
·······
列 数据类型
);
//删除表
drop table 表名
//显示表的结构
describe 表名
//查询表的具体结构
show create table 表名;
基本数据类型:

数值类型

  1. 整型
    tinyint:1字节,范围(-128~127)
    smallint:2字节,范围(-32768-32767)
    mediumint(m):3字节 范围(-8388608~8388607)
    int(m) :4字节 范围(-2147483648~2147483647)
    bigint(m) :8字节 范围(+-9.22*10的18次方
    取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。

  2. 浮点型
    float(m,d):单精度浮点型,8位精度(4字节),m总个数,d小数位
    double(m,d):双精度浮点型,16位精度(8字节),m总个数,d小数位

  3. 定点数
    浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位。

字符串类型
char(n):固定长度,最多255个字符
varchar(n):固定长度,最多65535个字符

char和varchar差异

  1. char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
  2. char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),
    所以varchar(4),存入3个字符将占用4个字节。
  3. char类型的字符串检索速度要比varchar类型的快。

时间日期类型
date:日期 '2008-12-2'
time:时间 '12:25:36'
datetime :日期时间 '2008-12-2 22:06:44'
timestamp:自动存储记录修改时间

//插入数据
insert  into 表名(字段1,字段2) values(值1,值2),(值1,值2);
//更新数据
update 表名 set 字段1=值1 (where 条件表达式);
//查询信息
select * from 表名 (where 条件表达式) (group by 列名 ASC/DESC) (order by 列名 ASC/DESC)(having 分组条件)(limit 限制条数);
//删除信息
delete  from 表名 (where 条件表达式);
//删除全部数据
truncate 表名;

truncate与delete删除表信息区别:
1.truncate只能删除全部信息,delect可以添加条件语句
2.truncate删除时没有记录,delete则会有日志记录
3.使用truncate删除数据后,再添加数据时,自动增加字段的默认值会从1开始,delete则N+1

//修改表名
rename table A to A1;
alter table A rename A1;
//添加列
alter table student add (column) 列名 数据类型;
//修改列名称及定义
alter table student change (column) 列名1 列名2 数据类型;
//删除列
alter table student drop (column) 列名;
//别名使用,as
 select 列名1 as 列名2 from 表名;
子查询
select * from 表名 where 列名=
[all|some|any|not]
select 列名  from 表名 where 条件表达式;
表的连接

内连接:(inner)join A on B,相当于等值关系,取得是两表的交集
左连接:left join A on B ,以左边的表为基础,因此存在右边表对应内容为NULL的情况
右连接:right join A on B,以右边的表为基础,因此存在左边表对应内容为NULL的情况

左连接,右连接使用场景:
如,部门表,员工表(非强绑定关系)
如果使用左连接,则可能会存在部门中没有员工的情况
如果使用右连接,则可能会存在员工不属于任一部门的情况

having与where的区别

where针对表中的列来查询数据(只能是表中字段),目的:过滤特定行
having针对查询结果中的列来筛选数据(可以不是表中的字段),目的:过滤特定组

group by

根据指定数据列的成员对查询结果进行分组统计
在group by子句前使用where子句
在gruop by子句后使用having

聚合函数

sum:求和
max:最大值
min:最小值
avg:平均数
count:统计记录数

参考文档:
MYSQL中数据类型介绍
group by 和 order by 的区别 + 理解过程

上一篇下一篇

猜你喜欢

热点阅读