zoukankan      html  css  js  c++  java
  • 浅识MySQL

     MySQL常用语句

    #操作数据库

      ##创建数据库

    CREATE DATABASE `dbName`;

      ##切换数据库

    USE `dbName`;

      ##查看所有数据库

    SHOW DATABASES;

      ##删除数据库(删除数据库、表、字段的时候用drop )

    DROP DATABASE `dbName`;

     #操作数据库表

      ##创建表

    CREATE TABLE `TabName`(
          cid INT PRIMARY KEY AUTO_INCREMENT,
          cname VARCHAR(10)
        );

      ##查看表结构

    desc 表名;

      ##添加表数据

        1. 语法一: into 表名 (列名1,列2...) values(值1,值2...),(值1,值2...)...;

    INSERT INTO `tab1` (cid,cname) VALUES 
    (1,'name1'),
    (2,'name2'),
    (3,'name3');

        2. 语法二:insert into 表名(列2,列3) values(值2,值3..)...;  当主键有自动增长时,可以省略主键不写

    INSERT INTO tab1(cname) VALUES ('name4');

        3. 语法三:insert into 表名 values(null,值2,值3....),(null,值2,值3..);  当主键有自动增长时,可以省略列名不写,但是要写出所有的值,主键写null

    INSERT INTO tab1 VALUES (NULL,'name5');

          

      ##查看表数据

        1. 查看所有

    SELECT * FROM tab1;

        2. 查看指定列

    SELECT `cname` from tab1;

      ##删除表元素(删除表元素用delete或者truncate)

        语法一: delete from 表名 [where 条件]  删除表中元素,但是不重置主键的自动增长

    DELETE FROM tab1 WHERE cname = 'name5';

        语法二: truncate table 表名;  删除表中元素并重置主键的自动增长

    TRUNCATE TABLE `tabName`;

    #操作表字段

      ##添加表字段

    语法: alter table 表名 add 字段名 数据类型;
    ALTER TABLE `tabName` ADD `field` VARCHAR(20);

      ##修改表字段

    ALTER TABLE `tabName` CHANGE `oldField` `newField` INT;
    

      ##删除表字段

    ALTER TABLE `tabName`DROP `fieldName`;
    

      


    #操作字段约束 (总结规律:当涉及到修改表结构的时候,需要用到alter关键字)

      ##删除主键约束

        语法: TABLE 表名 DROP PRIMARY KEY;

    ALTER TABLE `tab2 ` DROP PRIMARY KEY;

      ##设置主键约束

        语法: ALTER TABLE 表名 ADD PRIMARY KEY(列名);

    ALTER TABLE `tab2 ` ADD PRIMARY KEY(`cid`);

      ##修改字段约束

        语法: ALTER TABLE 表名 MODIFY 字段 + 数据类型 + 约束名;

    ALTER TABLE tab2 MODIFY `cname` VARCHAR(10) NOT NULL;

      ##设置唯一约束

        语法: ALTER TABLE 表名 ADD UNIQUE(字段);

    ALTER TABLE `product` ADD UNIQUE(pname);

    #查询表数据

      ##注意##

        当你想要查询表中的部分字段,并且将该表起了个别名,那么在调用表中字段的时候,格式必须写为:别名.字段名

      千万不要写成:原表名.字段名  --> mysql数据库会报错

    #正确的写法:
    SELECT a.pid,a.pname,a.price FROM product AS a;
    #错误的写法:
    SELECT product.pid,product.pname,product.price FROM product AS a;
    
    

      ##过滤表数据 --> distinct

    select distinct 要过滤的字段 from 表名;

      ##给表、字段起别名 --> As(可省略)

    select * from `tabName` (as) `newTabName`;

      ##在查询语句中可以执行运算操作

      例: 查询商品表中所有商品,并将价格提高1000元
        select pname, price + 1000 (as) price from `product`;

      ##模糊查询 --> like + 条件(%或者 _)  _ : 一个下划线表示一个字符;   %: 表示多个字符 

      例: 查询商品表中名称带有'男装'的商品信息
        select * from `product where pname like '%男装%';
        select * from `product` where pname like '__男装';  //例如: 劲霸安装,一个下划线_ 表示一个字符

      ##排序查询 --> order by

    select * from product order by price desc;  //按照降序顺序排序
    select * from product order by price (asc)  //按照升序顺序排序 asc可以省略
    

      ##聚合函数查询 --> 对某列的数据按照特定的函数进行查询,返回一个单一的值, 忽略值为null的数据

    #在test表中插入三条数据,其中最后一条的price值为null
    INSERT INTO test VALUES(NULL,20),
    (NULL,300),
    (NULL,NULL);
    #使用聚合函数count进行查询
    SELECT COUNT(price),COUNT(id) FROM test;
    #查询结果如下:

        ###常用的聚合函数有以下几种:

          count: 查询非空值的字段数量

          sum: 求和

          max,min: 最大值、最小值

          avg: 平均值

      ##分组查询 --> group by

    SELECT * FROM `tabName` GROUP BY `field`;  //select * from  表名 group by 字段名;

      

      ##where和having的区别

        where 用于分组前的条件过滤

        having 用于分组后的条件过滤

      ##分页查询 --> limit

    #首先查询所有数据
    SELECT * FROM gjp_ledger;
    结果如下:   
    #分页查询-查询前5条数据
    SELECT * FROM gjp_ledger LIMIT 5;

     #查询第二页数据,每页5条数据
     SELECT * FROM gjp_ledger LIMIT 5,5;

     #查询第三页的数据,每页5条数据
     SELECT * FROM gjp_ledger LIMIT 10,5;

     规律总结:

      查询前n条数据(包含第n条)

        select * from 表名 limit n;

      查询第m页,每页n条数据(不包含第(m-1)*n 条数据)

        select * from 表名 m,n;

      ##多表联查

        一对多关系:

         ###添加外键约束

    #添加外键约束
    #语法:alter table 从表名 add (constraint 给外键起个别名)foreign key(从表中要做外键的字段) references 主表(主键); ALTER TABLE product ADD CONSTRAINT products_fk FOREIGN KEY (category_id) REFERENCES products(psid);

        ###删除外键约束

    #删除外键约束
    #语法:alter table 从表名 drop foreign key 外键别名;   ALTER TABLE product DROP FOREIGN KEY products_fk;  // 删除的外键名要使用别名,写外键的字段名删除不掉

         多对多关系:

        创建一个中间表,使用两个表的主键作为中间表的外键

    CREATE TABLE middle(
    products_id INT,
    orders_id INT,
    FOREIGN KEY(products_id) REFERENCES products(pid),
    FOREIGN KEY(orders_id) REFERENCES orders(oid)
    );

     

      ##多表查询---内连接、外链接查询

      1. select * from 表1,表2;  会产生笛卡尔积

        笛卡尔积:表1数据数量 * 表2数据数量

      2. 内连接查询  //只能查看到有关联的数据

        select * from 表1 inner join 表2 on 表1.主键 = 表2.外键;  //显式内连接

        select * from 表1,表2 where 表1.主键 = 表2.外键;  //隐式内连接

      3. 外连接查询 -->左外连接、右外连接

        select * from 左表 left  outer join 右表 on  ...;  /左做连接,查询结果会列出所有匹配的数据,以及没有匹配项的会用null来显示

      

    #外连接 --> 左外连接  以左表作为匹配项展示数据
    SELECT * FROM products ps LEFT OUTER JOIN product p ON ps.psid=p.category_id;
    

      

    #外连接 --> 右外连接  以右表作为匹配项展示数据
    SELECT * FROM products ps RIGHT OUTER JOIN product p ON p.category_id = ps.psid;
    

      

  • 相关阅读:
    Qt之重启应用程序
    Qt之密码框不可选中、复制、粘贴、无右键菜单等
    Qt之国际化(系统文本-QMessageBox按钮、QLineEdit右键菜单等)
    HTTP全部报文首部字段
    工厂模式
    《Qt 实战一二三》
    Qt之国际化
    Java如何读取XML文件 具体实现
    href脱离iframe显示
    iframe并排横着显示
  • 原文地址:https://www.cnblogs.com/myBlog-ahao/p/10978996.html
Copyright © 2011-2022 走看看