`

MySQL登陆方式、数据类型、数据引擎及SQL查询语句,注意的问题.

阅读更多

1.  连接到服务器上面有三种方式:

   1.1  通过mysql自己的客户端:
          在开始  -----所有程序--mysql--mysql Command Line Client 让你输入密码 那么该密码是root用户的密码
   1.2  在dos命令行中使用mysql.exe客户端连接上
        mysql.exe -hlocalhost -uroot -padmin
       -h 连接的主机
       -u 数据库服务器的用户名
       -p 用户名对应的密码

        注意: 如果通过dos 来执行select 或者是 insert into  的语句 ,如果出现了乱码,可以设置编码为GBK来解决,在mysql环境中设置: SET NAMES 'GBK';


   1.3 通过Navicat客户端连接到数据库服务器上面

2. 常用的sql命令
    2.1 创建数据库
         create database  数据库的名字
     
      如:  create database  myjdbc
    2.2 删除数据库
          drop  database 数据库的名字

       如: drop database myjdbc

  2.3 查看数据库
      show databases
 
  3.4 使用数据库
      use database 数据库的名字
   如: use database myjdbc

 3. 表
 
  数据库中的数据类型:

char(size)   
定长字符,0 - 255字节    如: char(2)        aaaaa -> aa          a -> a
size: 不管放什么,都是两个字符,如果放入的字符数超出了指定的长度,那么就截取, 如果小于指定的字符数,那么就用空字符填充

varchar(size)     变长字符,0 - 255字节  如: varchar(2)    aaaaa -> aa        a -> a
size:表示的是最大的字节数,   如果放入的字符数超出了指定的长度,那么就截取, 如果小于指定的字符数, 那么就放这些字符

注:JAVA中的一个英文字母站一个字节,而一个汉字在GBK编码站两个字节,在UTF-8编码中占三个字节.

如:'a'  1节
"中"  在GBK的编码中占 2个字节
"中" 在UTF-8的编码中占3个字节

date    日期数据,MySQL用'yyyy-MM-dd'格式检索和显示DATE值      'yyyy-MM-dd'

DATETIME     日期数据,要比date数据更确切,包含时分秒。MySQL以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值

Int(size)     整型数据(size是显示的宽度)     和int类型存储一个数据库的空间是没有任何关系的

double[(s,p )]     数字型,可存放实型和整型 ,精度(p )和范围(s)

s:  指的是数据的总位数
p: 指的是小数点后面的位数

例如: double(2,2 )  最大值为:0.99  最小值为:-0.99
          double(3,2)   最大值为:9.99    最小值为 -9.99

blob     存放图形、声音和影像,二进制对象,0-4GB
通常不用把二进制文件存储在数据库中的, 而是存储在硬盘上面,而是数据中存入该文件的地址,   程序可以通过该地址找到这个文件读取..
 
text      存放大文本文件, 0-4GB

建表语法:
   create table table_name
   (
        column_name1 column_properties constraint_definition,
      column_name2 column_properties constraint_definition,
      #列名 类型 约束 (最后一行没有逗号)
    )
   


create  table student(
      name  char(8),
      sex  char(2),
      age int,
      birthday date
)

4.Select查询语句
    SELECT

 最简单的select语句

SELECT    {*, column [alias],...}
FROM        table;


如果为 * 和创建表时的顺序一致。
可以自己调整顺序,在select后边加上要查询的列名。

货品表的DDL
CREATE TABLE `product` (
  `id` bigint(11) NOT NULL auto_increment,     货品的id
  `productName` varchar(50) default NULL,    货品的名字
  `dir_id` bigint(11) default NULL,                    货品分类的编码
  `salePrice` double(10,2) default NULL,         零售价     100
  `supplier` varchar(50) default NULL,            供应商
  `brand` varchar(50) default NULL,               品牌
  `cutoff` double(2,2) default NULL,               折扣        主要是给零售商的批发价=== 零售价*折扣
  `costPrice` double(10,2) default NULL,        成本价
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


 4.1  查询出货品表中的所有的货品信息
  select  *    from  product
 4.2  查询出货品表中所有 供应商, id, 零售价,货品名称
    select supplier,id,salePrice,productName  from product

 4.3 查询货品的id,货品名字,零售价,折扣,批发价
  select id,productName,salePrice,cutoff, salePrice*cutoff     from product

 
 别名:

(1)、改变列的标题头
(2)、用于表示计算结果的含义
(3)、作为列的别名
(4)、如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都需加双引号

4.4  使用别名    查询货品的id,货品名字,零售价,折扣,批发价

 select id as 编号 ,productName as  货品名字,salePrice as 零售价,cutoff  as  折扣 , salePrice*cutoff  as 批发价     from product

或者   as 可以省略
  select id  编号 ,productName   货品名字,salePrice  零售价,cutoff    折扣 , salePrice*cutoff   批发价     from product

  如果别名中有特殊的符号,需要用引号"" 或者  ''  引起来
  select id  "编   号" ,productName   "货品名字",salePrice " 零   售价",cutoff   "折  扣" , salePrice*cutoff   "批发价"     from product

4.5  使用别名    查询货品的id,货品名字,零售价,成本 并且各进50个的总成本
     select id  "编   号" ,productName   "货品名字",salePrice " 零   售价",costPrice  "单个成本", costPrice*50 "50各成本"    from product
4.6  使用别名    查询货品的id,货品名字,零售价,成本 并且各进50个,每个的运费为1元的总成本

  select id  "编   号" ,productName   "货品名字",salePrice " 零   售价",costPrice  "单个成本", (costPrice+1)*50  "50各成本"    from product

5.使用WHERE子句限定返回的记录
      SELECT    [DISTINCT] {*, column [alias], ...}     FROM     table
[WHERE    condition(s)];


WHERE子句在 FROM 子句后.

 5.1  查询货品零售价为119的所有货品信息
       select *   from product  where salePrice=119


 5.2  查询货品的分类编号为2  货品信息的id,货品名字,分类编号,品牌
       select id,productName,dir_id,brand from product where dir_id=2

5.3. 查询出货品名字为  罗技M905  货品信息的id,货品名字,分类编号,品牌

     select id,productname,dir_id,brand from product where productName='罗技M905'

 

     select id,productname,dir_id,brand from product where   binary  productName='罗技m905'

 

    如果需要大小敏感的话, 有两种方法:

第一种方法:

要让mysql查询区分大小写,可以:

select * from some_table where binary str='abc'

select * from some_table where binary str='ABC'

第二方法:

在建表时时候加以标识

create table some_table(

     str char(20) binary 

)


5.4 查询分类编号不等于2的货品信息
   select * from product  where dir_id <> 2


5.5查询货品名称,零售价小于等于200的货品
   select productName,salePrice from product where salePrice<=200

 5.6查询id,货品名称,批发价大于350的货品 

   select id, productName, salePrice*cutoff as 批发价  from product  where   salePrice*cutoff >350
  
   select id, productName, salePrice*cutoff as 批发价  from product  where   批发价 >350    是错误的..

  总结:  where语句先执行,   select后执行..  先过滤出满足条件的数据, 然后再查询出来

使用BETWEEN 运算符
使用BETWEEN运算符显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用   ,包含边界值

  5.7. 选择id,货品名称,批发价在300-400之间的货品
    select id,productName,salePrice*cutoff from product where salePrice*cutoff  BETWEEN   300    and   400

使用IN 运算符:
使用IN运算符获得匹配列表值的记录,在IN操作符后跟着一个值的列表,可以应用日期,字符串数据类型

  5.8. 选择id,货品名称,分类编号为2,3,4的所有货品
   select id,productName,dir_id from product where dir_id in(2,3)

使用LIKE 运算符

使用LIKE运算符执行通配查询
查询条件可包含文字字符或数字
(%) 可表示零或多个字符
( _ ) 可表示一个任意字符

  5.8. 选择id,货品名称,品牌  , 那么货品名字中有    罗技M  的货品
      select id,productName,brand from product  where productName like  '%罗技M%'

  5.8. 选择id,货品名称,品牌  , 那么货品名字中有    罗技M__    的货品
      select id,productName,brand from product  where productName like  '罗技M%'

注意:
A:罗技%
B:罗技_%      

  这两个的区别为:   B 不能够查询出来 罗技   这两个字   


6 .  逻辑运算符

  6.1    选择id,货品名称,分类编号,零售价大于等于200并且货品名称匹配'%罗技M1_'
     select id,productName,dir_id,salePrice from product where  salePrice>=200  and   productName like "%罗技M1__"

 6.2  选择id,货品名称,批发价在300-400之间的货品
     select id,productName,salePrice*cutoff from product where salePrice*cutoff>=300 and salePrice*cutoff<=400
 
6.3  选择id,货品名称,分类编号的货品零售价大于等于250或者是成本大于等于200
     select id,productName,dir_id,salePrice,costPrice from product where salePrice>=250  or costPrice>=200
6.4  选择id,货品名称,分类编号为2,3,4的所有货品
      select id,productName,dir_id from product where dir_id=2 or dir_id=3 or dir_id=4


优先级的事例:   

SELECT id,productName FROM product WHERE NOT productName LIKE '%M%' OR dir_id = 2 AND salePrice > 100

SELECT id,productName FROM product WHERE NOT (productName LIKE '%M%' OR dir_id = 2) AND salePrice > 100

SELECT id,productName FROM product WHERE NOT (productName LIKE '%M%' OR dir_id = 2 AND salePrice > 100)

优先级顺序:NOT>AND>OR


7. 排序:

   7.1  选择id,货品名称,分类编号,零售价并且按零售价排序升序
   select id,productName,dir_id,salePrice from product  order by salePrice asc     默认 升序
 
   select id,productName,dir_id,salePrice from product  order by salePrice  desc



   7.2  选择id,货品名称,分类编号,零售价先按分类编号排序,再按零售价排序
 
           select id,productName,dir_id,salePrice from product order by dir_id  ,salePrice   默认升序
 
       select id,productName,dir_id,salePrice from product order by dir_id desc ,salePrice desc   升序


7.3   查询M系列并按照批发价排序(加上别名)
        select id,productName,salePrice*cutoff as pfprice from product    where   productName like '%M%'   order by pfprice   

           where先执行, 后执行select 再执行 order by


7.4 查询分类为2并按照批发价降序排序(加上别名)

   select id,productName,dir_id,salePrice*cutoff as pfprice from product    where   dir_id=2   order by pfprice   desc


8. 多表查询:
   8.1.    查询所有的货品信息+货品分类信息

    select * from product,productdir


   8.2.    查询所有的货品信息 并且 对应的每个货品的货品分类信息

    select * from product,productdir where product.dir_id=productdir.id


 使用表连接从多个表中查询数据
SELECT    table1.column, table2.column
FROM        table1, table2
WHERE    table1.column1 = table2.column2;

在 WHERE 子句中写入连接条件

当多个表中有重名列时,必须在列的名字前加上表名作为前缀

    select   product.id,productdir.id from product,productdir where product.dir_id=productdir.id

     如果不是使用表名的话, 可以给表另外起一个别名,通过别名来区分

    select   p.id,pd.id from product as p,productdir as pd  where p.dir_id=pd.id


 主键:  如果一个列上面设置了主键,那么该列中的值不能够重复

 外键:  如果设置一个列为外键的话, 那么该列中的值是从参照表中来的..


对于mysql来说有两种存储引擎 :
 1. InnoDB(第三方公司)       支持数据一致性的
      a.  支持事务
      b.  支持外键
 
2. MyISAM (mysql公司自己开发)    支持不数据一致性的
   a. 不支持事务
   b. 不外键

注意:在设置外键的时候可能出错,那么可能是存储引擎没有设置为InnoDB.

  要是用外键必须使用InnoDB这种存储引擎:
alter table product ENGINE = 'InnoDB'
alter table productdir ENGINE = 'InnoDB'


8.3  查询零售价大于200的无线鼠标

  select * from product as p ,productdir as pd where p.dir_id=pd.id  and p.salePrice>200 and pd.dirName='无线鼠标'


1,查询货品名称,零售价,批发价,货品分类,货品库存,库存成本总价

 select   p.productName,p.salePrice,p.cutoff*p.salePrice as  pfprice, pd.dirName,ps.storeNum, ps.storeNum*p.costPrice as totalPrice   from   product  p ,productdir pd ,productstock ps  where p.dir_id=pd.id  and  p.id= ps.product_id
  

2,查询货品名称,零售价,货品分类,库存不足的无线鼠标

  select   p.productName,p.salePrice,pd.dirName  from   product  p ,productdir pd ,productstock ps  where p.dir_id=pd.id  and  p.id= ps.product_id and ps.storeNum<ps.warningNum and dirName='无线鼠标'

3,按照库存数量排序查询货品名称,成本价,数量,库存成本总价

   select  p.productName,p.costPrice, ps.storeNum,  ps.storeNum*p.costPrice  as totalPrice     from product p, productstock   ps where p.id=ps.product_id  order by  ps.storeNum

4,如果库存货品都销售完成,按照利润从高到低查询货品名称,零售价,货品分类      站零售商的角度
 
  select     p.productName,p.salePrice,pd.dirName,    (p.salePrice -  p.cutoff*p.salePrice)*ps.storeNum as lirun     from   product  p ,productdir pd ,productstock ps  where p.dir_id=pd.id  and  p.id= ps.product_id   order by lirun  desc

分享到:
评论

相关推荐

    Oracle Sql语句转换成Mysql Sql语句

    1. **数据类型**:Oracle支持的数据类型如NUMBER、LONG、RAW等在MySQL中可能需要转换为DECIMAL、TEXT或BLOB。例如,Oracle的NUMBER可以转换为MySQL的DECIMAL或FLOAT,LONG可以转换为TEXT。 2. **分页查询**:Oracle...

    Effective MySQL之SQL语句最优化.pdf

    例如,使用合适的字段类型、避免使用过大的数据类型、将经常一起查询的字段放在同一张表中等。 8. 数据存储方式优化:数据的存储方式也会影响查询性能,例如,通过分区可以将数据分散到不同的存储区域,根据业务...

    提升MYSQL查询效率的10个SQL语句优化技巧.doc

    以下是十个 SQL 语句优化技巧来提升 MYSQL 查询效率: 1. 优化 MySQL 查询缓存 MySQL 查询缓存可以启用高速查询缓存,让数据库引擎在后台悄悄的处理是提高性能的最有效方法之一。当同一个查询被执行多次时,如果...

    基础常用SQL语句.pdf

    本文档总结了基础常用的SQL语句,涵盖了MYSQL基础语句、数据库创建、数据表创建、数据插入、查询、更新、删除、子句、连接、NULL值处理、正则表达式、ALTER命令、服务器元数据、MYSQL及SQL注入、MYSQL导出数据等多个...

    经典的SQL查询语句,将内容作为字段查询

    4. 图片和SQL语句:虽然SQL主要用于处理文本数据,但在实际应用中,我们可能需要与图像数据交互。这通常涉及到BLOB(Binary Large Object)类型的字段,用于存储非文本数据。查询这类数据时,可能需要用到`SELECT ...

    MySQL SQL查询语句大全集锦(经典珍藏)

    本知识点集锦将全面介绍MySQL中的SQL查询语句,包括基础操作、数据管理和安全性设置等方面。 基础操作是数据库管理的基础,包括创建和选择数据库、表的操作。创建数据库的语句是`CREATE DATABASE 数据库名;`。例如...

    MySql常用sql语句

    MySQL 常用 SQL 语句 MySQL 是一种关系型数据库管理系统,提供了丰富的 SQL 语句来操作数据库。下面是 MySQL 中常用的 SQL 语句。 创建表 创建表是数据库的基本操作之一,用于存储数据。创建表的基本语法为: ``...

    Oracle数据库sql转换mysql数据库工具

    "Oracle数据库sql转换mysql数据库工具" 提供了解决这一问题的解决方案,允许用户将Oracle数据库中的SQL语句或数据结构转换为MySQL兼容的格式。 在数据库迁移过程中,这样的工具至关重要,因为它可以简化工作流程,...

    sql语句电子书 . .

    以上只是“SQL语句电子书”可能涉及的一些关键知识点,实际内容可能还包括具体的SQL标准(如SQL-92、SQL-99、SQL:2003等)、不同数据库系统(如MySQL、Oracle、SQL Server、PostgreSQL等)的语法差异、实际案例分析...

    MySql.Data.dll8.0类库

    8. **数据类型映射**:MySQL.Data.dll将MySQL的数据类型映射为.NET数据类型,如MySQL类型INT对应.NET的Int32,VARCHAR对应String等。 9. **元数据访问**:使用MySqlConnection的GetSchema方法,可以获取关于MySQL...

    MySQL SQL基础语句最佳实践

    DQL还包括WHERE、ORDER BY、GROUP BY和HAVING等保留字,这些通常与其他类型的SQL语句结合使用,以实现更加精确和复杂的数据查询。 数据操作语言(DML)包含用于对数据进行增加、修改、删除操作的命令,主要有INSERT...

    数据库表数据转为insert sql语句

    1、对ms sql server及其他数据库库中类似int identity的数据库类型没有处理,转出来的sql语句直接执行时,还需要做一下处理. 2、不支持长字符集类型.比如ms sql server中的image,oracle中的blob,clob,long以及db2中...

    MySQL常用sql语句生成器

    SQL语句生成器则是帮助用户快速、准确地构建SQL查询的实用工具,尤其适合初学者和那些不熟悉复杂SQL语法的用户。下面将详细介绍MySQL中的SQL语句及其生成器的相关知识。 1. SQL基础概念 SQL,全称为结构化查询语言...

    使用LabVIEW操作ACCESS、MySQL、SQL server数据库实现按照时间段查询数据

    需要注意的是,针对不同的数据库系统(如MySQL和SQL Server),SQL语句的语法可能会有所不同,特别是对于日期时间的处理和特定功能的使用。在实际应用中,需要根据目标数据库的特点调整SQL语句。 通过学习和实践...

    恢复数据库_把后缀.frm,.myd,myi转换为.sql导入mysql数据库

    具体操作步骤为将.frm、.myd 和 .myi 文件直接复制到MySQL数据目录下的相应数据库文件夹中。这种方法简单快速,但对于大多数使用虚拟主机的用户来说并不适用,因为通常情况下空间提供商并不会提供足够的权限让用户...

    sqlserver自动生成sql语句工具sqlserver转oracle

    在压缩包子文件的文件名"ms转sql语句.exe"中,我们可以推测这可能是一个用于将SQL Server语句转换为Oracle兼容格式的可执行程序。这样的工具通常会提供用户友好的界面,让用户导入SQL Server的数据库元数据,然后...

    MySQL存储引擎配置与SQL查询

    ### MySQL存储引擎配置与SQL查询 #### 一、MySQL存储引擎的配置 在MySQL数据库管理系统中,存储引擎是用于组织和管理数据的方式。不同的存储引擎提供了不同的特性,例如事务处理能力、索引类型等。因此,了解如何...

    MySQL官网测试数据上百万条数据sql文件

    MySQL是一种广泛使用的开源关系型数据库管理系统,其性能高效、稳定性强,被众多企业和开发者用于存储和处理各种类型的数据。在本资源中,我们有一个名为"MySQL官网测试数据上百万条数据sql文件"的压缩包,它包含了...

    MySQL 5.1参考手册

    13.6.2. 用于控制从服务器的SQL语句 13.7. 用于预处理语句的SQL语法 14. 插件式存储引擎体系结构 14.1. 前言 14.2. 概述 14.3. 公共MySQL数据库服务器层 14.4. 选择存储引擎 14.5. 将存储引擎指定给表 14.6. 存储...

    MySQL数据库:表的创建SQL语句.pptx

    表的创建-SQL语句 课程目标 掌握 —— 显示数据表文件和表结构的语法格式。 掌握 —— 创建数据表的语法格式; 表的创建 show tables; 说明:用于显示已经建立的数据库表文件 显示数据库表语法格式 表的创建 创建...

Global site tag (gtag.js) - Google Analytics