A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 哥.兜裡有煙 中级黑马   /  2017-12-3 17:37  /  1055 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

MySQLDE 的概述
  • 什么是数据库:
    • 数据库:就是一个文件系统,这个文件必须通过标准的SQL访问.
  • 什么是关系型数据库:
    • 关系型的数据库存放的都是实体之间的关系.
  • 常用的关系型数据库:
    • MySQL        :免费的小型的数据库,现在被Oracle收购.
    • Oracle        :Oracle公司收费的大型的数据库.
    • SQLServer        :微软公司收费中型的数据库.
    • DB2        :IBM公司收费的大型的数据库.
    • SyBase        :SyBase公司收费的数据库.已经被淘汰.PowerDesigner数据建模的工具.
    • SQLite        :小型的嵌入式的数据库.
    • ***** Java程序中经常使用的数据库
      • MySQL
      • Oracle


SQL的概述:
  • 什么是SQL:
    • SQL:结构化的查询语言.
  • SQL分类:
    • DDL:数据定义语言
      • create,alter,drop...
    • DML:数据操纵语言
      • update,insert,delete
    • DCL:数据控制语言
      • grant,if..
    • DQL:数据查询语言
      • select

  • SQL的特点:
    • 非过程性语言:一条语句就会有一个运行的结果.

使用SQL操作数据库(对数据库增删改查操作)
  • 【创建数据库】
语法:    * create database 数据库名称 [character set 字符集 collate 字符集校对];
  • 【查看数据库】
语法:    * 查看数据库服务器中所有的数据库:        * show databases;    * 查看某个数据库的定义信息.        * show create database 数据库名;    * 查看当前正在使用的数据库信息.        * select database();
  • 【删除数据库】
语法:    * 删除数据库:    * drop database 数据库名;
  • 【修改数据库】
语法:    * 修改数据库修改的是的数据库的字符集和校对规则.        * alter database 数据库名 character set 新字符集 collate 校对规则;
  • 【使用数据库】
语法:* use 数据库名称;使用SQL操作数据库中的表(对数据库的表增删改查的操作)
  • 【创建表】
语法:    * create table 表名 (        字段名 类型(长度) 约束,        字段名 类型(长度) 约束,        字段名 类型(长度) 约束    ); 数据类型:    * Java类型:                                MySQL:      byte/short/int/long        tinyint/smallint/int/bigint      String                                        char/varchar                                * 区别?char是固定长度的字符串,varchar可变长度的字符串.                                * char(8) 和 varchar(8)                                    * 如果插入一个字符串hello 插入到char 那么 插入hello   .插入到varchar中 插入hello     float                                        float     double                                        double     BigDemal                                decimal     boolean                                bit     Date                                        date/time/datetime/timestamp                                                     * datetime和timestamp都是既有日期又有时间的日期类型                                * 区别? datetime需要使用外部传入的日期.如果没传这个值就是Null. timestamp会使用系统当前的时间作为这个值的默认值.     文本文件                                        text     二级制文件                                BLOB    ***** Oralce使用CLOB/BLOB    ***** MYSQL中除了字符串类型需要设置长度其他的类型都有默认长度. 约束:    单表约束:        * 主键约束:primary key (默认就是唯一非空的)        * 唯一约束:unique        * 非空约束:not null
  • 【表的查看】
查看数据库中有哪些表:      * show tables;   查看表结构:      * desc 表名;
  • 【表的删除】
表的删除:      * drop table 表名;
  • 【表的修改】
修改表添加列:    * alter table 表名 add 列名 类型(长度) 约束;    * alter table employee add image varchar(50);  修改表删除列:    * alter table 表名 drop 列名;    * alter table employee drop job;  修改表的列的类型长度及约束:    * alter table 表名 modify 列名 类型(长度) 约束;    * alter table employee modify image varchar(80) not null;  修改表的列名    * alter table 表名 change 旧列名 新列名 类型(长度) 约束;    * alter table employee change image eimage varchar(60);  修改表名    * rename table 旧表名 to 新表名;    * rename table employee to user;  修改表的字符集:    * alter table 表名character set 字符集;    * alter table user character set gbk;使用SQL操作数据库中的表的记录(对表的记录的增删改查的操作)
  • 【插入记录】
语法    * insert into 表名 (列名,列名,...) values (值1,值2,...);                ---插入指定列的值    * insert into 表名 values (值1,值2,...);                                        ---插入所有列的值   注意事项:    * 列名的个数与值的个数对应.    * 列的类型与值的类型对应.位置也要对应.    * 列的类型如果是字符串或者日期,写值的时候使用单引号将值引起来.    * 插入的值的最大长度不能超过列的最大长度.  插入记录:    * 插入某几列的值:        * insert into employee (eid,ename,email) values (null,'aaa','aaa@itcast.cn');    * 插入所有列的值:        * insert into employee values (null,'bbb','bbb@itcast.cn','1990-09-01','HR','I am HR');
  • 【修改记录】
语法:    * update 表 set 列名=值,列名=值 [where 条件];  注意事项:    * 列名和值类型也要一致.    * 值不能超过列的最大长度.    * 值是字符串或日期,需要使用单引号.  举例:    * 修改employee表中所有记录的job为WORKER        * update employee set job='WORKER';    * 修改employee表将name为aaa的邮箱改为aaa@163.com        * update employee set email = 'aaa@163.com' where ename = 'aaa';    * 修改employee表将name为bbb的邮箱改为bbb@163.com同时修改job为HR        * update employee set email = 'bbb@163.com' , job='HR' where ename='bbb';
  • 【删除记录】
语法:    * delete from 表 [where 条件];  注意事项:    * 删除表中的一行记录,不能删除某列值    * 如果没有条件删除表中的所有列.  举例:    * 删除id为8的记录:        * delete from employee where eid = 8;    * 删除所有记录:        * delete from employee;  删除表中的所有记录truncate table 表名  和 delete from 表  区别?    * 区别:        * truncate table 删除表的记录:将整个表删除掉,重新创建一个新的表.truncate属于DDL.        * delete from 删除表的记录:一条一条进行删除. delete属于DML。            * 事务管理 只能作用在DML语句上.如果再一个事务中使用delete删除所有记录,可以找回.
  • 【基本查询】
查询语句:    * select [distinct] *|列名 from 表 [where 条件];
  • 【条件查询】
where语句后面可以加:    条件的关键字:        = , > , >= , <, <= , <>        like中可以使用占位符: _ 和 %  :下划线匹配一个字符, %:可以匹配任意多个字符.        * like ‘张%’;  like ‘张_’; like ‘%明’; like ‘%明%’;         in 后跟着一组值.         * id in (1,2,3)and or not
  • 【排序查询】
order by 对数据进行排序.默认升序. (asc升序,desc降序)  举例:    * 查询所有学生的信息,并且按语文成绩进行排序.        * select * from exam order by chinese;    * 查询所有学生的信息,并且按语文成绩进行降序排序.        * select * from exam order by chinese desc;    * 查询学生的信息,按照英语成绩降序排序,如果英语成绩相同,按照语文降序.        * select * from exam order by english desc, chinese desc;    * 查询姓李的学生的信息,同时按照英语升序排序.        * select * from exam where name like '李%' order by english asc;
  • 【聚合函数】
sum()count()max()min()avg()    举例:        * 查询每个学生总成绩:            * select name,(english+chinese+math) from exam;        * 统计所有学生的总分:            * select sum(english+chinese+math) from exam;   -- ifnull(english,0)            * select sum(english)+sum(chinese)+sum(math) from exam;        * 统计学生的个数:            * select count(*) from exam;        * 统计英语成绩的最高分:            * select max(english) from exam;        * 统计语文成绩的最低分:            * select min(chinese) from exam;        * 统计英语成绩平均分:            * select avg(english) from exam;
  • 【分组】
group by 举例:    创建一个订单详情的表:    * 统计订单中的每类商品所购买的个数:        * SELECT product,COUNT(*) FROM orderitem GROUP BY product;    * 统计订单中的每类商品所花的金额:        * SELECT product,SUM(price) FROM orderitem GROUP BY product;    * 统计订单中的每类商品所花总金额大于2000信息.        * SELECT product,SUM(price) FROM orderitem GROUP BY product HAVING SUM(price) > 2000;        * 统计订单中名称有电子的商品并且所花金额大于1500同时按照价格降序排序:        * SELECT product,SUM(price) FROM orderitem WHERE product LIKE '电%' GROUP BY product HAVING SUM(price) > 1500 ORDER BY SUM(price) DESC;
  • 【SQL的查询语句的总结】
顺序:        s...f...w...g...h...o...;

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马