• 第一阶段:前端开发_MySQL——对数据库中库的操作和表结构的操作


    2018-06-12

    对数据库中库的操作和表结构的操作

    一、对数据库的操作

    1、创建数据库

      create database 数据库名;

      create database 数据库名 character set 编码;

     

    2、查看数据库

      查看数据库服务器中的所有数据库:show databases;

      查看某个数据库的定义的信息:show create database 数据库名;

     

    3、删除数据库

      drop database 数据库名;

     

    4、其他的数据库操作命令

      切换数据库:use 数据库名;

      查看正在使用的数据库:select database();

     -------------------------------------------

     

    二、表操作:table

    1、创建表

      create table 表名(

        字段名 类型 (长度)  [约束],

        字段名 类型 (长度)  [约束]

      );

      

      字符类型:varchar(n)

      单表约束:

        主键约束:primary key,要求被修饰的字段:唯一  和  非空

        唯一约束:unique,要求被修饰的字段:唯一

        非空约束: not null,要求被修饰的字段:非空

     

    2、查看表

      查看数据库中所有的表:show tables;

      查看表结构:desc 表名;

     

    3、删除表

      drop table 表名;

     

    4、修改表

      alter table 表名 add 列名 类型(长度) [约束];  --修改表添加列

      alter table 表名 modify 列名 类型(长度) 约束;  --修改表修改列的类型长度及约束

      alter table 表名 change 旧列名 新列名 类型(长度) 约束;  --修改表名修改列

      alter table 表名 drop 列名;   --修改表删除列

      rename table 表名 to 新表名;  --修改表名

      alter table 表名 character set 字符集;  --修改表的字符集

     

    5、查看当前编码

      show create table 表名;

    ------------------------------------------------------------------------------------------------------- 

    三、对数据库表记录进行操作(修改)

    1、插入记录:insert

      insert into 表(列名1,列名2,列名3...) values(值1,值2,值3...);  --向表中插入某些列

      insert into 表  values(值1,值2,值3...);  --向表中插入所有列

     

      注意:

      • 列名数与values后面的值的个数相等
      • 列的顺序与插入 值的顺序一致
      • 列名的类型与插入的值要一致
      • 插入值的时候不能超过最大长度
      • 值如果是字符串或者是日期需要加‘ ’(一般是单引号)

     

      例如:

      insert into t_cate(cid,canme) values('c001','电器');

     

      插入数据中文乱码问题的解决办法:

        方式一:【不建议!】

          直接修改数据库安装目录里面的my.ini文件的第57行,重启mysql服务器

          default-characer-set = utf8

        方式二:在cmd命令行中,当前cmd命令窗口有效

          set names gbk;

    2、修改表的记录:update

      update 表名 set 字段名=值,字段名=值 ...;  --更改该列的所有记录

      update 表名 set 字段名=值,字段名=值 ... where 条件;  

      注意:

      • 列名的类型与修改的值要一致。
      • 修改值的时候不能超过最大长度。
      • 值如果是字符串或者日期需要加‘’。

    3.删除表记录:delect

      delect from 表名 [where 条件];

      面试题:说说delete与truncate的区别?

        delete删除的时候是一条一条的删除记录,它配合事务,可以将删除的数据找回。

        truncate删除,它是将整个表摧毁,然后再创建一张一模一样的表。它删除的数据无法找回。

      注意:  

        delect删除,uid不会重置。而使用truncate操作,uid会重置。

    4.查询表记录:select

    准备工作:

     1 #创建商品表
     2 create table product(
     3     pid int primary key auto_increment,
     4     pname varchar(20),
     5     price double,
     6     pdate timestamp
     7 );
     8 #自动增长列:auto_increment, 要求:1.必须整形(int2.必须主键
     9 
    10 
    11 insert into product values(NULL, '谭尼平', 0.01, NULL);
    12 insert into product values(null, '李士雪', 38, null);
    13 insert into product values(null, '左慈', -998, null);
    14 insert into product values(null, '黄迎', 9999, null);
    15 insert into product values(null, '南国强', 999998, null);
    16 insert into product values(null, '士兵', 1, null);

    4.1 简单查询:

       select [distinct] * from 表名 [where 条件]

       select [distinct] 列名1,列名2 from 表名 [where 条件]

     1 #一、简单查询:
     2 
     3 #1.查询所有商品
     4 select * from product;
     5 
     6 #2.查询商品名和商品价格
     7 select pname,price from product;
     8 
     9 #3.别名查询,使用关键字as.as 可以省略的
    10 #3.1表别名
    11 select * from product as p;
    12 #3.2列别名
    13 select pname as pn from product;
    14 
    15 #4.去掉重复值(按照价格)
    16 select distinct price from product;
    17 
    18 #5.查询结果是表达式(运算查询):将所有商品的价格+10元进行显示
    19 select pname, price+10 from product;

    4.2条件查询

       where后的条件写法:>, <, =, >=, <=, <>
       like使用占位符_ 和 %。_代表一个字符,%代表任意字符。
         select * from product where pname like '%新%';
       in在某个范围中获得值
         select * from product where pid in(2,5,6);
         select * from product where pid=1 or pid=3 or pid=5;

     1 #1.查询商品名称为“左慈”的商品所有信息
     2 select * from product where pname = '左慈';
     3 
     4 #2.查询价格>60元的所有商品信息
     5 select * from product where price > 60;
     6 
     7 #3.查询商品名称含有"士"字的商品信息
     8 select * from product where pname like '%士%';
     9 
    10 #4.查询商品id在(3,6,9)范围内的所有商品信息
    11 select * from product where pid in(3,6,9);
    12 
    13 #5.查询商品名称含有"士"字并且id为6的商品信息
    14 select * from product where pname like '%士%' and pid=6;
    15 
    16 #6.6.查询id为2或者6的商品信息
    17 select * from product where  pid=2 or pid=6;

     

    4.3 排序操作

      select ... order by 字段1 asc | desc, 字段2 asc | desc ...

       asc:升序, desc:降序

    1 #1.查询所有的商品,按价格进行排序(asc:升序, desc:降序)
    2 select * from product order by price;
    3 
    4 #2.查询名称有"士"的商品信息并且按照价格降序排序
    5 select * from product where pname like '%士%' order by price desc;

    4.4 聚合函数

    常用的聚合函数:sum()求和, avg()平均, max()最大值, min()最小值, count()计数


    注意:聚合函数不统计null值

    1 #1.获得所有商品的价格的总和
    2 select sum(price) from product;
    3 
    4 #2.获得所有商品的平均价格
    5 select avg(price) from product;
    6 
    7 #3.获得所有商品的个数
    8 select count(*) from product;

    4.5 分组操作

     1 #1.添加分类id 
     2 alter table product add cid varchar(32);
     3 #2.初始化数据
     4 update product set cid='1';
     5 update product set cid='2' where  pid in (5,6,7);
     6 
     7 #1.根据cid字段分组,分组后统计商品的个数。
     8 select cid,count(*) from product group by cid;
     9 
    10 #2.根据cid分组,分组统计每组商品的平均价格,并且平均价格大于20000元。
    11 select cid, avg(price) from product group by cid having avg(price)>20000;

    四、SQL语句查询总结

    select  一般在的后面的内容都是要查询的字段

    from    要查询到表

    where  查询条件

    group by  分组字段

    having    分组条件:分组后带有条件只能使用having

    order by  排序字段:asc | desc    它必须放到最后面

  • 相关阅读:
    本地及远程二级缓存
    ubuntu下使用golang、qml与ubuntu sdk开发桌面应用
    TCP之心跳包实现思路
    Java读书笔记1
    回文字符串
    6.1 遍历字符串
    linux系统文件夹的作用 good
    在线程中建立Form遇到的问题
    QTabWidget and QTabBar.的文字的颜色设置,三种方法
    Ring3下Hook NtQueryDirectoryFile隐藏文件
  • 原文地址:https://www.cnblogs.com/sunNoI/p/9172052.html
Copyright © 2020-2023  润新知