重温MySQL

来源:互联网 发布:猪八戒考试软件下载 编辑:程序博客网 时间:2024/06/03 20:55

这是一段漫长的文字,如果有阅读的将就一下吧,没有时间排版大哭

Ø  什么是数据库:

数据库就是一个文件系统,需要通过标准SQL语句才能访问.

Ø  常见的数据库:

MYSQL   :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费.

Oracle  :收费的大型数据库.Oracle公司的产品.Oracle收购SUN公司,收购MYSQL.

 

DB2     :IBM公司的数据库产品,收费的.银行系统中.

 

SQLServer:MS公司.收费的中型的数据库.

 

SyBase  :已经淡出历史舞台.提供了一个非常专业数据建模的工具PowerDesigner.

 

SQLite  : 嵌入式的小型数据库,应用在手机端.

 

Java相关的数据库:MYSQL,Oracle.

【MYSQL的SQL语句】

Ø  什么是SQL

SQL:结构化查询语言.

Ø  SQL的分类:

DDL:数据定义语言.

   create,alter,drop...

DML:数据操纵语言

   insert,delete,update

DCL:数据控制语言

    if,grant

DQL:数据查询语言.

    Select

【创建数据库】

语法:

    * createdatabase 数据库名;

    * createdatabase 数据库名 character set字符集;

    * createdatabase 数据库名 character set字符集 collate 校对规则;

【查看数据库】

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

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

【删除数据库】

* drop database 数据库名称;

【修改数据库】

* alter database 数据库名 character set 字符集collate 校对规则;

【其他的数据库操作命令】

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

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

【创建表】

create table 表名(

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

   字段名 类型(长度) 约束

);

 

Java                MYSQL

int                 int

float                float

double              double

char/String       char/varchar(char固定长度字符串,varchar可变长度的字符串)

Date                date,time,datetime,timestamp

文件类型             BLOB、TEXT  TEXT指的是文本文件  BLOB二进制文件

     * Oracle的文件类型:BLOB  CLOB

 

约束:

单表约束:

    * 主键约束:primary key

    * 唯一约束:unique

    * 非空约束:not null

 

***** 注意:建表之前一定先选择数据库.

【查看表】

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

查看表结构:desc 表名;

【删除表】

drop table 表名;

【修改表】

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

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

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

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

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

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

使用SQL完成对表中记录的CRUD的操作:

【插入记录】

语法:

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

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

 

注意:

* 1.列名数与values后面的值的个数相等

* 2.列的顺序与插入的值得顺序一致

* 3.列名的类型与插入的值要一致.

* 4.插入值得时候不能超过最大长度.

* 5.值如果是字符串或者日期需要加’’.

 

cmd下插入中文的乱码的解决:

* 修改mysql.ini文件.

    * 将[mysql]下面的字符集改为gbk

    * 重启mysql服务.services.msc

【修改记录】

语法:

* update 表名 set 字段名=值,字段名=值 [where 条件];

 

注意:

* 1.列名的类型与修改的值要一致.

* 2.修改值得时候不能超过最大长度.

* 3.值如果是字符串或者日期需要加’’.

 

【删除记录】

语法:

* delete from 表名 [where 条件];

 

面试:

删除表中所有记录使用delete from 表名; 还是用truncatetable表名;

* 删除方式:delete一条一条删除. truncate直接将表删除,重新建表.

* 事务控制DML,delete属于DML.如果在一个事务中,delete数据,这些数据可以找回.truncate删除的数据找不回来.

where后的条件写法:

    * >,<,=,>=,<=,<>

    * like 使用占位符 _ 和 %  _代表一个字符 %代表任意个字符.

        *select * from product where pname like '%新%';

    * in在某个范围中获得值.

        *select * from product where pid in (2,5,8);

 

排序查询:

1.查询所有的商品,按价格进行排序.(asc-升序,desc-降序)

2.查询名称有新的商品的信息并且按价格降序排序.

 

 

聚合函数:

* sum(),avg(),max(),min(),count();

1.获得所有商品的价格的总和:

2.获得商品表中价格的平均数:

3.获得商品表中有多少条记录:

 

分组:使用group by

1.根据cno字段分组,分组后统计商品的个数.

2.根据cno分组,分组统计每组商品的总数量,并且总数量> 200;

【多表的关系】

Ø  一对多关系:

客户和订单,分类和商品,部门和员工.

一对多建表原则:在多的一方创建一个字段,字段作为外键指向一的一方的主键.

Ø  多对多关系:

学生和课程:

多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键.

Ø  一对一关系:

在实际的开发中应用不多.因为一对一可以创建成一张表.

两种建表原则:

唯一外键对应:假设一对一是一个一对多的关系,在多的一方创建一个外键指向一的一方的主键,将外键设置为unique.

主键对应:让一对一的双方的主键进行建立关系.

【多表查询】

Ø  交叉连接查询(基本不会使用-得到的是两个表的乘积)

语法:

* select * from A,B;

Ø  内连接查询(使用的关键字 inner join  -- inner可以省略)

* 隐式内连接:

    * select* from A,B where 条件;

* 显示内连接:

    * select* from A inner join B on条件;

Ø  外连接查询(使用的关键字 outer join --outer可以省略)

* 左外连接:left outer join

    * select* from A left outer join B on 条件;

* 右外连接:right outer join

    * select* from A right outer join B on 条件;

【子查询】

在sql语言中,当一个查询是另一个查询的条件时,称之为子查询

【分页查询】

分页查询每个数据库的语句是不通用的.

MYSQL:使用limit的关键字.

* select * from product limita,b;  --a:从哪开始,b:查询多少条.

Oracle:使用SQL语句嵌套.

SQLServer:使用top的关键字.
原创粉丝点击