`

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

分享到:
评论

相关推荐

    mysql sql语句示例1

    数据库、数据表、数据类型、运算符、函数、查询

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

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

    MySQLDBA运维笔记.pdf

    1.2.6 创建存放两个 mysql 实例的数据目录...............................................................11 1.2.7 创建两个 mysql 多实例的配置文件.............................................................

    MySQL 教程 开发文档 从基础到精通

    一.My SQL数据库简介 二.MySQL 安装 三.MySQL 管理 四.MySQL 连接 五.MySQL 创建数据库 六.MySQL 删除数据库 七.MySQL 选择数据库 八.MySQL 数据类型 .MySQL 创建数据表 十.MySQL 删除数据表 十一.MySQL ...

    mysql 查询表结构的2种 sql 语句.docx

    mysql查询语句汇总 要查询 MySQL 数据库中表的结构,可以使用 DESCRIBE 语句或 SHOW COLUMNS 语句。这些语句可以向用户提供有关表的详细信息, 如列名、 数据类型、键信息等。 1. DESCRIBE 语句: 使用 ...

    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; 说明:用于显示已经建立的数据库表文件 显示数据库表语法格式 表的创建 创建...

    mysql 查询表结构的2种 sql 语句.7z

    mysql查询语句汇总 要查询 MySQL 数据库中表的结构,可以使用 DESCRIBE 语句或 SHOW COLUMNS 语句。这些语句可以向用户提供有关表的详细信息, 如列名、 数据类型、键信息等。 1. DESCRIBE 语句: 使用 ...

    MySQL 5.1参考手册中文版

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. ...

    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语句大全.rar

    该笔记记录了详细的mysql各个知识点,包括数据的类型,表的创建及操作,数据库的创建和操作,数据引擎。以及平时需要使用到的各种数据库语句,可以说该笔记集合了学习及提供mysql语句于一体的功能,让你免去自己写...

    MYSQL中文手册

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. ...

    MySql 5.1 参考手册.chm

    8.3.3. 怎样从文本文件执行SQL语句 8.3.4. mysql技巧 8.4. mysqlaccess:用于检查访问权限的客户端 8.5. mysqladmin:用于管理MySQL服务器的客户端 8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysql...

    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官方中文参考手册

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

    MySQL 5.1官方简体中文参考手册

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串...

    mysql数据库sql优化

    1. SQL优化 1 1.1. 优化实战 1 1.1.1. 策略1.尽量全值匹配 1 1.1.2. 策略2.最佳左前缀法则 2 1.1.3. 策略3.不在索引列上做任何操作 2 1.1.4. 策略4.范围条件放最后 3 1.1.5. 策略5.覆盖索引尽量用 3 1.1.6. 策略6.不...

    MySQL5.1参考手册官方简体中文版

    11.7. 使用来自其他数据库引擎的列类型 12. 函数和操作符 12.1. 操作符 12.1.1. 操作符优先级 12.1.2. 圆括号 12.1.3. 比较函数和操作符 12.1.4. 逻辑操作符 12.2. 控制流程函数 12.3. 字符串函数 12.3.1. 字符串...

    MYsql 数据库0基础SQL语句实战精讲.docx

    2、编写事务需要的sql语句(1条或多条) 56 3、结束事务 56 14. 如何删除索引 57 1 查出该表有哪些索引,索引名--&gt;集合 57 2 如何循环集合 57 3 如何让mysql执行一个字符串 57 15. SQL优化讲解 58 16. 流程结构控制...

Global site tag (gtag.js) - Google Analytics