Mysql数据类型

1.选择合适的类型保存数据,有以下两个优点:
<1>节省存储空间
<2>提升查询效率
(所以大家要根据自己的需求选择合适的数据类型进行保存,以免造成不必要的麻烦)

2.数据类型:

  1. 整型 :int tinyint
  2. 浮点型 :
    float double decimal(表示不同精度)
    float有效位数:6位
    double有效位数:16位
    eg:double(5,2) : 最多5位,其中两位为小数
    decimal:更加精确地保存小数
  3. 字符串:
    char(255个字符,固定大小)
    varchar(65535个字节,不固定可变)
    text(64kb)
  4. 枚举:
    enum():1~2个字节存储数据
    enum(“值1”,“值 2”,…)
  5. 时间:
    date:年月日
    datetime:年月日时分秒
    time:时分秒

sql命令

显示数据库版本:select version() ;
显示当前时间:select now() ;
查看当前使用的数据库:select database() ;
查看所有数据库:show databases ;
创建数据库:create database 数据库名 charset = utf-8;
查看创建数据库:show create datebase 数据库名;
使用数据库:use 数据库命;
删除数据库:drop database 数据库名;
创建表:create table 数据表名字(字段 类型 约束);
查看当前数据库的所有表:show tables;
查看表结构:desc 数据表的名称;
查看表的创建语句: show create table 表名称;
修改表:
1.添加字段:alter table 表名 add 列名 类型;
2.修改字段
#重命名:alter table 表名 change 原名 新名 类型以及约束;
#不重命名: alter table 表名 modify 列名 类型以及约束;
3.删除字段:alter table 表名 drop 列名;
删除表:drop table 表名;
全列插入:insert [into] 表名 values (…) 主键字段可以用 “0 null default”来占位 ;
部分插入:insert into 表名 (列1,…) values (值1,…);
多行插入:insert into 表名 values (值1…) , (值2…);
全部修改:update 表名 set 条件;
按条件修改:update 表名 set 条件 where 条件;
查询所有列:select * from 表名;
按条件查询:select * from 表名 where 条件;
查询指定列:select 列1… from 表名;
为列或表指定列名或表名:select 字段 (as 别名)… from 数据表(列);
删除:
#物理删除:delete from 表名 where 条件
#逻辑删除(用一个字段来表示这条信息已经不可使用了):alter table 表名 add is_delete bit default 0;
(bit类型 0或1 当is_delete = 1时 逻辑删除)
数据库备份与恢复:mysqldump -uroot -p 数据库名 > python.sql;
mysql -uroot -p 新数据库名 < python.sql;
创建用户:create user 用户名@ip地址(’%’) identified by ‘密码’;
授权:grant 权限1(all)… on 数据库 * to 用户名@ip地址;
撤销:revoke 权限1(all)… on 数据库 * from 用户名@ip地址;
查看权限:show grants from 用户名@ip地址;
删除用户:drop user 用户名@ip地址;
升序排序:select * from where 表名 order by 列名(ASC);
降序排序:select * from where 表名 order by 列名(DESC);
使用多列作为排序条件:select * from where 表名 order by 列名1(ASC), 列名2(DESC)… ;
排序优先级:select > from > where(前) > group by(分组) > having(后) > order by(排序)

约束类型:
int unsigned 无符号整型
auto_increment 自动增长
not null 不能为空
primary key 主键
default 默认值

查询操作练习

查询编号为30的员工的信息
select * from emp where deptno = 30;

查询所有销售员的名字,编号和部门编号
select ename,empno,deptno from emp where job='销售员';

查询将近高于工资的员工 
select * from emp where comm>sal;

查询奖金高于工资60%的员工
select * from emp where comm>sal*0.6;

查询部门编号为10的所有经理和部门编号为20的所有销售员的资料
select * from emp where (deptno=10 and job='经理') or (deptno=20 and job='销售员');

查询部门编号为10的所有经理和部门编号为20的所有销售员并且既不是经理也不是销售员但工资大于等于20000的员工信息
select * from emp where (deptno=10 and job='经理') or (deptno=20 and job='销售员') or (job not in('经理' , '销售员') and sal>=20000);

查询无奖金或者奖金小于1000的员工信息
select * from emp where comm is null or comm<1000;

查询名字由三个字组成的员工信息
select * from emp where ename like'___';

查询2000年入职的员工信息
select * from emp where hiredate like '2000-%';//模糊查询

查询所有员工信息并以升序排列
select * from emp order by empno ASC;

查询所有员工信息并以工资降序排列,若工资一样,则用入职年份升序排列
select * from emp order by sal DESC,hiredate ASC;

查询每个部门的平均工资
select deptno,avg(sal) 平均工资 from emp group by deptno;

查询每个部门的雇员数量    
select deptno,count(*) from emp group by deptno;

查询每种工作的最高工资、最低工资和人数
select job,max(sal),min(sal),count(*) from emp group by job;

感想:第一次写博客,可能多少有点生疏,还请谅解。学习每一门计算机语言的道路都是坎坷和艰辛的,我也是一个小白,靠学校老师讲的知识是远远不够的,要想就业成功率高,就得自己上网站上各种渠道去获取学习资源自己一步步的来,只有这样,才能慢慢地走向成功,希望看完我的分享之后对你有所帮助,希望你和我一样,为了未来不懈努力,会有结果的!
(后期还会不断更新自己所学,欢迎关注了解,谢谢您花了N秒来看这篇文章)