Mysql Dos命令操作数据库/2

时间:2022-09-12 15:08:52

数据库的三个数据类型:数值;字符串;日期;

  数据库和php是两个概念;

  任何后台都能连接mysqi

  数据库的增删查改。。。

  创建表 create table 表名()  在创建表一定要加字段;

  字段类型: 就是数据库的三个数据类型;

  数值:              有符号                                                                                                                   无符号

    tinyint:小整数值       -128,127                               0,255      (如果数字超过255 , 系统默认为255)

    smallint:大整数值      -32 768,32 767                             0,65 535

    int:大整数值        -2 147 483 648,2 147 483 647                      0,4 294 967 295

    bigint:极大整数值;      -9,223,372,036,854,775,808,9 223 372 036 854 775 807           0,18 446 744 073 709 551 615

  数值后面跟的属性:

    unsgined:无符号  只能取到正整数  

    int(5):代表 数字的长度,最多5位;  如果后面跟   zerofill属性,表示数字的长的必须是5位,不够的话,拿0代替;

    主键:primary key()   一个表得有一个唯一标识符;往往都是id 且尽量不要用数据记录去充当组件key;  主键后跟的属性    自增:auto_increment();  写一条数据,会自动在id的下面 加值   无需自己写

    null属性: 默认是null (值可以为空)  但主键不能是null;

      not null 属性:值不能为空;  案例:alter table 表名 modify money int not null;

    default:默认属性值  在后面加数据记录的时候,字段后面有跟的值,就会有值,没有的话,就是默认值; 案例:alter table t1 modify money int default 10;

    float(m,d):单精度 (最多到小数点后7位)  但并不是精确的   案例 :3.123456789----》得到的值  3.1234568;    m代表总数,d代表小数;

    double(m,d):双精度(最多到小数点后14位)  但也不是精确的; m代表总数,d代表小数;

    decimal(m,d):存储货币使用  (精度高且准确,常用于会计) m代表总数,d代表小数;

  案例:

    1.创建表格的时候

    create table 表名(id int primary key auto_increment, age int nonull default=12);

    2.改变字段属性的时候;

    create table 表名 modify id int primary key auto_increment;

    3.如果自增的话添加数据;

    insert into 表名(age) values(20),(30),(40);    表名后面一定要加字段,因为 主键,不需要重新赋值,但别的字段要进行赋值;

  字符串的属性:

    char:定长字符串  空间是固定的,哪怕是一个字母,也还是会占255字节的空间  字母或汉字都是一个字节;

    varchar:变长字符串  根据存储量   一个字母一个字节,一个汉字三个字节;  一个字节一个空间,所以varchar 比 char 省空间

    mysqi  设置字符编码  charset=utf8/gbkd;

    utf8:一个汉字占三个字节;

    gbkd:一个汉字占两个字节;

  查询数据记录:

    select * from 表名    表中所有数据都展现出来;

    select id from 表名  通过id的字段查找;

    select destinct id from 表名   查询不重复的   destinct

  条件表达式:>    >=         <      <=   !=   =   and   or

  聚合查询  (汇总查询)

  sum()  对某一字段的数据进行求和;

  案例:   select sum(money) from 表名;

  count()  行的个数(总数)记录总数;

  案例:  select count(*) from 表名;    建议count()  括号里面带*;

  max()  最大值;

  min()  最小值;

  group by  表示分类聚合;

  案例:select sum(求和的字段) from 表名 group by 分类的字段;

  with rollup  对分类的结果汇总 

  案例:select sum(求和的字段) from 表名 group by 分类的字段 with rollup;  

  having  对分类的结果进行过滤       先看分类后的结果,结果有什么字段,再通过字段进行过滤;

  案例:select sum(求和的字段) from 表名 group by 分类的字段 having sum(求和的字段)>条件;

  表连接:

    内连接:

    两张表:进行连接 ,只通过关联字段

    首先两张表一个主表拥有id的字段,另一张副表,拥有eid的字段 

    内连接 id与eid匹配;

    语法:select * from 主表,副表 where 主表.id=副表.eid;

    外连接:  分为左连接 和 右连接;

      左连接:select * from 主表 left join 副表 on 主表.id=副表.eid;

      右连接:select * from 主表 right join 副表 on 主表.id=副表.eid;

  场景想象

  主表在前《    副表在后 》

  左连接:主表为主;

  右连接:副表为主;

  子查询:

    in 把一表查询结果当条件,在另一个表进行查询,(子查询必须按唯一一个字段查询);

    案例:

      select * from 主表 where id in(select eid from 副表);

      解析:获取副表中eid字段的内容,将副表中的内容当条件 ,在去查询主表中相对应的内容;(eid 必须按唯一一个字段查询)

    not in 刚好与in相反;

    案例:

      select * from 主表 where id not in(select eid from 副表);

      解析:获取副表中的eid字段的内容,将副表中的内容当条件,查询除了副表中的其他内容;(eid 必须按唯一一个字段查询)

  phpstudy 的数据库操作界面;

    mysqi 管理器 ---》 php myadmin    网页地址中 locallhost  后面输入接口 8088   

  编辑:utf8_general_c   创建

  存储引擎:innodn

  用户名和密码都默认 root;