目录

MySQL数据库和SQL语句(重点)

1、数据库的简介

2、MySQL数据库的安装和卸载

3、MySQL数据库概念

4、SQL语言(操作数据库)

5、SQL语言分类

1、数据库的操作(CURD)创建数据库(重点)

2、查看数据库(重点)

3、表结构操作(CURD)

<1>创建表

<2>数据库的数据类型(重点)

<3>单表的约束(了解)

<4>查看表和删除表(掌握)

<5>修改表(掌握)

4、数据操作

<1>插入数据(insert添加)(掌握)

<2>如何解决中文乱码(*)

<3>修改数据的语句(update更新)(掌握)

<4>删除数据的语句(delete可以还原/truncate不可还原)(掌握)

<5>查询数据的语句(select)(掌握)

(1)where子句后可以使用的符号

(2)使用order by 对结果进行排序

(3)聚集函数

(4)分组查询概念

1、单表的约束(主键)

2、唯一和非空约束

3、多表约束(外键)

4、多表的设计(3种方式)

5、多表的查询(重要)

<1>多表查询之内连接

<2>多表查询之外连接

<3>总结

<4>内连接和外连接的数据的区别

6、子查询


MySQL数据库和SQL语句(重点)

1、数据库的简介

1、什么是数据库:数据仓库。访问必须只能用SQL语句来访问。数据库也是一个文件的系统。
2、数据库的作用:存储数据的作用。开发任何的应用,都有数据库。
3、关系型的数据库:数据库中保存的都是实体之间的关系。
4、常见的数据库*Java开发,必须的两个数据库Qracle和MySQL*Oracle数据库(甲骨文)   大型的数据库,收费的。*MySQL数据库   小型数据库,免费开源的。被Qracle收购了(在6.x版本下开始收费了)*SQLServer     微软的数据库*DB2           IBM公司产品,大型的数据库,收费的。*SyBASE        退出了历史的舞台。PowerDigener(数据库的设计的工具)

2、MySQL数据库的安装和卸载

1、MySQL数据库的卸载*先找到MySQL的安装路径,找到my.ini配置文件。*[一般安装路径]basedir="C:/Program Files(x86)/MySQL/MySQLServer 5.5/"     --MySQL安装路径(my.ini没有删除)*basedir="C:/ProgramData/MySQL/MySQLServer 5.5/Data/"   --MySQL数据存放位置(手动删除)*直接通过控制面板卸载程序。
2、安装MySQL*安装的路径中不能有中文和空格。
3、进行测试*cmd  --输入mysql -u root -p --回车--输入密码--进入MySQL的服务器。

3、MySQL数据库概念

1、总结:一个数据库的服务器中包含多个数据库,一个数据库中有多张表,一个表中包含多个字段(字段和JavaBean的属性是对应),表中存放是数据,一行数据和一个JavaBean实体对象是对应的。

4、SQL语言(操作数据库)

1、Structured Query Language,结构化查询语言
2、SQL非过程性的语言*过程性的语言:依赖上一条或者几条语句执行。*非过程性的语言:一条语言,就对应一个返回结果。
3、SQL语言是基础*在Oracle使用自己的语言,PL/SQL只能在Oracle来说使用。

5、SQL语言分类

1、DDL    数据定义语言*创建数据库  创建表   创建视图  创建索引  修改数据库  删除数据库  修改表  删除表*create --创建  alter --修改  drop--删除
2、DML    数据操作语言*操作数据  插入数据(insert添加) 修改数据(update更新) 删除数据(delete)
3、DCL    数据控制语言*if else while
4、DQL    数据查询语言*从表中查询数据(select)

1、数据库的操作(CURD)创建数据库(重点)

1、创建数据库的语法*基本的语法:create database 数据库名称;*正宗的语法:create database 数据库名称  character set 编码 collate 校对规则;
2、校对规则(了解):决定当前数据库的属性。创建一个名称为my1的数据库。*create database my1;
创建一个使用utf-8字符集的my2数据库。*create database my2 character set 'utf-8';
创建一个使用utf-8字符集,并带校对规则的my3数据库。*create database my3 character set 'utf-8' collate 'utf8_bin';

2、查看数据库(重点)

1、show database;           --查看所有的数据库
2、use 数据库名称;(*****)    --使用数据库
3、show create database 数据库名称;   --查询数据库的建的信息
4、select database();       --查询当前正在使用的数据库

3、表结构操作(CURD)

<1>创建表

1、语法:create table 表名称(字段1 类型(长度)约束,字段2 类型(长度)约束,字段3 类型(长度)约束);
2、注意:*创建表的时候,后面用小括号,后面分号。*编写字段,字段与字段之间使用逗号,最后一个子段不能使用逗号。*如果声明字符串数据的类型,长度是必须指定的。*如果不指定数据长度,有默认值的。int类型的默认长度是113、创建一张表结构(员工表练习)create table employee(id int,name varchar(30),gender char(5),birthday date,entry_date date,job carchar(50),salary double,resume text);
4、执行SQL语句*查询当前正在使用的数据库  select database();*选择你要使用的数据库     use 数据库名;*执行创建表的SQL语句。5、使用desc employee;查询表的信息

<2>数据库的数据类型(重点)

1、字符串型(重点)VARCHAR(用的比较多):长度是可变的。  例子:name varchar(8),存入数据hello,存入进去之后,name字段长度自动变成了5.CHAR:长度是不可变的。例子:name char(8)存入数据hello,用空格来不全剩余的位置。2、大数据类型(不常用)BLOB:字节(电影 mp3)TEXT:字符(文本的内容)
3、数值型(重点)TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
4、逻辑性BIT在Java中是true或者false在数据库bit类型(1或者0)
5、日期型(重点)DATE     :只包含日期(年月日)TIME     :只包含时间(时分秒)DATETIME :包含日期和时间。如果插入数据的时候,字符值为空,字段的值就是空了。TIMESTAMP:包含日期和时间。如果插入数据的时候,设置字段的值为空,默认获取当前的系统的时候,把时间保存到字段中。

<3>单表的约束(了解)

1、约束的好处:保证数据的完整性。
2、主键约束(重要)代表记录的唯一标识。*关键字:primary key 通过该关键字声明某一列为主键。*唯一               值就不能相同*非空               值也不能为空*被引用             (和外键一起来使用)
3、唯一约束*声明字段值是唯一的。使用关键字  unique
4、非空约束*声明字段的值是不能空的。  not null

<4>查看表和删除表(掌握)

查看表:1、查询所有的表结构,前提条件,先切换到数据库中。*show tables;2、查询表结构的详细的信息*desc 表名称;3、查看表结构定义的信息*show create table 表名称;
删除表:1、删除表结构*drop table 表名称;

<5>修改表(掌握)

1、添加一个新的字段*alter table 表名称 add 字段名称 数据类型(长度)约束;
2、修改字段的数据类型、长度或者约束*alter table 表名称 modify 字段名称 数据类型(长度)约束;
3、删除某一个字段*alter table 表名称 drop 字段名称;
4、修改字段的名称*alter table 表名称 change 旧字段 新字段 数据类型(长度)约束;
5、修改表的名称*rename table 旧表名 to 新表名;
6、练习
*在员工表的基础上增加一个image列。alter table emp add image varchar(30);
*修改job列,使其长度为60。alter table emp modify job varchar(60);
*删除gender列。alter table emp drop gender;
*表名改为user。rename table emp to user;
*列名name修改为username。alter table user change name username varchar(30);

4、数据操作

<1>插入数据(insert添加)(掌握)

1、添加数据,使用insert关键字来添加数据*insert into 表(字段1,字段2,字段3)valuse(值1,值2,值3);---向表中的指定的字段中添加值*insert into 表 values (值1,值2,值3...);              ---向表中的所有的字段添加值
2、注意事项:*插入的数据与字段数据的类型相同*数据的大小应该在规定的范围内*数据中的数据的列的位置和字段位置是相同的*字符串和日期类型的数据,必须要使用单引号括起来

<2>如何解决中文乱码(*)

1、插入中文,会产生乱码的问题。
2、怎么产生?怎么解决?*解决的方案,修改MySQL客服端的编码就可以了。改成GBK3、修改MySQL客户端的编码*先把MySQL服务器停止*找到MySQL安装的路径,找到my.ini的配置文件*修改客户端的编码,改成gbk[client]port=3306[mysql]default-character-set=gbk*重启动MySQL的服务

<3>修改数据的语句(update更新)(掌握)

1、修改数据,使用update关键字来完成修改数据*update 表名称 set 字段1=值1,字段2=值2 where 条件;*修改字段1和字段2的值*如果没有where的关键字,说明修改的默认所有的记录*如果有where的关键字,修改的是符合条件的记录
2、注意*如果要是没有where的条件子句,默认是修改所有的数据。*如果有where的条件子句,修改的符合条件的数据。

<4>删除数据的语句(delete可以还原/truncate不可还原)(掌握)

1、删除语法的语法*delete from 表 where 条件;*如果不加where,默认删除所有的数据*如果添加where条件,删除符合条件的数据2、删除所有的数据*delete from 表;*一行一行的数据*支持事物的操作。事物是数据库中的特性。*truncate 表;*先把整个表删掉(数据也删除了),创建一个与原来一模一样的表(表里没有数据【空表】)3、例如:*删除表中名称为‘tom’的记录。*delete from user where username = ‘tom’;*删除表中所有记录。*添加数据*start transaction;*delete from user where username = ‘tom2’;*rollback;         --恢复所有表中数据*使用truncate删除表中记录。*truncate user;

<5>查询数据的语句(select)(掌握)

查询语句的语法*select * from 表;                    --默认查询所有的字段的数据*select 字段1,字段2,字段3 from 表;     --查询指定的字段的数据*DISTINCT                              --去除重复的关键字*可以对查询的列进行运算*查询语句中可以使用as的关键字,起别名。*别名的真正的用法,采用的多表的查询,为了区分每张表,表起个别名。*as的关键字可以省略不限。中间需要使用空格*一般都是给表来起别名*select s.username,s.math from stu s;*select s.username,u.username from stu s,user u;*使用where的条件语句,进行查询条件的过滤

(1)where子句后可以使用的符号

1、常用的符号* > < <= >=  <>(不等于)*in --代表的范围。* select * from stu where math = 88; ---查询一条数据,条件是数学=88* select *from stu where math in(18,88,90) ---查询的结果可能是多条数据,数学的成绩需要在in值的范围内*like ---模糊查询*like关键字的值的写法* select * from stu where username like '张_';----使用占位符,结果:张飞,张三,张x,张翼德(不符合)* select *from stu where username like '张%'; ----使用%占位符,结果是姓张的都会查询出来* like '%张'; ----结果:以张结尾的,飞张 医德张 * like '%张%'; ----结果:只要包含张的就可以 张 张飞 医德张 *总结like的关键字*条件需要使用单引号*需要使用占位符*_              --代表的一个位置*%              --代表的多个位置*and            --与*or             --或*not            --非*between...and

(2)使用order by 对结果进行排序

1、语法*order by 字段 asc | desc;*asc      --代表升序(默认值)*desc     --代表降序2、注意*order by 自己放在select的语句末尾。*eg:select * from xx where xx order by xx;

(3)聚集函数

1、什么是聚集函数:Excel表格。求数量,求和,平均值,最大值,最小值。
2、聚集函数操作的都是某一列的数据。
3、聚集函数*count()---求数量例如:select count(*)| count(列名)from 表;   --某一列数据行的总数*sum()  ---求某一列数据的和例如:select sum(列名)from 表;   --某一列数据行的和注意:没有sum(*),求的某一列,sum对数值类型起作用。
4、总结*聚集函数、是函数,不要忘记编写()*计算都是某一列的数据*聚集函数*count()           --求数量*sum()             --求和*avg()             --平均值*max()             --最大值*min()             --最小值

(4)分组查询概念

1、分组产生效果?聚集函数与分组效果。
2、select * from stu;        --查询所有数据。默认是一组。
3、可以使用关键字 group by sex 根据字段进行分组。
*注意*使用where的条件,如果有分组,where的条件是分组之前的条件。*新的关键字,having关键字进行分组的条件过滤。
*总结*where关键字后不能使用聚集函数,而是having可以使用聚集函数!!

1、单表的约束(主键)

1、可以把某一列字段声明主键,这一列的数据有如下特点*唯一*非空*被引用         --当前主键的列,作为一条记录的标识。2、声明主键*使用关键字 primary key 声明某一个字段为主键。3、主键的自动增长*主键的值特点,可以把主键的值交给数据库去维护。*自动增长只能使用int和bigint类型*通过关键字 auto_increment*演示自动增长drop table person;create table person(id int primary key auto_increment,username varchar(20));*添加数据的时候*insert into person values (null,‘美美’);*insert into person values (null,‘懒懒’);*insert into person values (2,‘小花’);*如果删除了一条记录*delete from person where id = 2;4、开发中,主键基本上是必须要设置的。

2、唯一和非空约束

1、唯一的约束*可以把某个字段声明成唯一的值。*使用该关键字 unique2、非空*可以把某个字段声明成非空的*值是不能为空值。*使用关键字 not null

3、多表约束(外键)

*外键的约束:目的保证表结构中的数据的完整性!!
1、模拟的过程
2、有一个部门表,还有一个员工表。一个部门下有多个员工。
3、直接删除部门,程序是可以的,但是不合理。通过设置外键的约束来避免这一类的问题的发生。数据要保证完整性!!

4、多表的设计(3种方式)

*一对多*在多方表中,创建一个新的字段,作为当前表的外键,指向一方表的主键。
*多对多*先创建一张中间表,中间表中至少包含2个字段,两个字段作为当前中间表的外键,指向原来多对多表的主键。
*一对一*一对一,一般不处理,放在同一张表中就可以。

5、多表的查询(重要)

<1>多表查询之内连接

*前提条件:两个表有联系,通过外键关联。
1、普通内连接*语法: 关键字 ... inner join ... on 条件;*注意:*在 inner join关键字之前写表1*在 inner join关键字以后写表2*on的后面写条件:(表1是dept,表2是emp)dept.did = emp.dno*语句:    select * from dept inner join emp on dept.did = emp.dno;2、隐式内连接(用的最多)*语法:select...from 表1,表2 where 表1.字段 = 表2.字段;*语句:select * from dept,emp where dept.did = emp.dno;*别名:select * from dept d,emp e where d.did = e.dno;*指定字段:select d.dname,e.ename,e.sal from dept d,emp e where d.did = e.dno;

<2>多表查询之外连接

1、左外连接(左连接)*语法: ...表1  left outer join 表2 on 表1.字段 = 表2.字段*语句:  select * from dept left outer join emp on dept.did = emp.dno;*特点:看左表,默认把左表中全部数据都查询出来,再查询出有关联的数据。2、右外连接(右连接)*语法:...表1  right outer join 表2 on 表1.字段 = 表2.字段*语句:    select * from dept right outer join emp on dept.did = emp.dno;

<3>总结

1、笛卡尔积*两个结果的乘积,数据是重复,目的:去除掉重复的数据2、需要使用多表的查询*内连接*普通内连接*表1 inner join 表2 on 主键和关键关联*隐式内连接*select * from 表1,表2 where 条件;*外连接*左外连接*表1 left outer join 表2 on*右外连接*表1 right outer join 表2 on

<4>内连接和外连接的数据的区别

*如果数据正常的话,不管是内连接和外连接,查询的结果都是一样的。
1、内连接查询的结果都是有关系的数据
2、左连接,先看SQL语句中哪个表是左表,把左表中的数据全部都查询出来,和有关系的数据也会查询出来。
3、右连接,先SQL语句中的那个表是右表,把右表中的数据全部查询出来,和有关系数据查询出来。
*eg:*内连接*select * from dept d,emp e where d.did = e.dno;*查询的结果都是主外键关联的数据*左连接*select * from dept left outer join emp on dept.did = emp.dno;*把左表中所有的数据全部都查询出来和有关联的数据*右连接*select * from dept right outer join emp on dept.did = emp.dno;*把右表中所有的数据全部都查询出来和有关联的数据

6、子查询

1、子查询,嵌套查询,一个select语句不能查询出结果的,可以通过多个select语句来查询结果。
2、例子:查询出英语成绩大于英语平均分的同学?*先计算出英语的平均分(select avg(english)from stu;)*再编写select语句*select username,english from stu where english >(select avg (english)from stu);

MySQL数据库知识点总结(基本篇)相关推荐

  1. 【宋红康 MySQL数据库 】【高级篇】【17】MySQL事务日志:redo、undo

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][17]MySQL事务日志 概述 redo日志 为什么需要redo日志 redo日志的好处.特点 redo的组 ...

  2. 【宋红康 MySQL数据库 】【高级篇】【07】MySQL的存储引擎

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][07]MySQL的存储引擎 存储引擎 查看存储引擎 设置系统默认的存储引擎 设置表的存储引擎 引擎介绍 In ...

  3. 【宋红康 MySQL数据库 】【高级篇】【06】MySQL的逻辑架构

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][06]MySQL的逻辑架构 逻辑架构剖析 服务器处理客户端请求 Connectors 第一层 连接层 第二层 ...

  4. 【宋红康 MySQL数据库 】【高级篇】【12】性能分析工具的使用

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][12]性能分析工具的使用 数据库服务器的优化步骤 查看系统性能参数 统计SQL的查询成本:last_quer ...

  5. 【宋红康 MySQL数据库 】【高级篇】【03】MySQL的数据目录

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][03]MySQL的数据目录 MySQL8的主要目录 数据文件的存放目录 命令存放目录 配置文件目录 数据库和 ...

  6. 【宋红康 MySQL数据库 】【高级篇】【16】事务基础知识

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][16]事务基础知识 数据库事务概述 存储引擎支持情况 基本概念 事务的ACID特性 事务的状态 如何使用事务 ...

  7. 【宋红康 MySQL数据库 】【高级篇】【15】数据库其它调优策略

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][15]数据库其它调优策略 数据库调优的措施 调优的目标 如何定位调优问题 调优的维度和步骤 优化MySQL服 ...

  8. MySQL数据库,分组函数篇

    MySQL数据库,分组函数篇 1.分组函数 极值 求和 平均值 列数和 2.分组查询 3.小练习 4.大BOSS 1.分组函数 极值 示例表内容见此篇文章 找出最高工资: mysql> sele ...

  9. 【宋红康 MySQL数据库 】【高级篇】【02】MySQL字符集、比较规则、大小写规范、sql_mode

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][02]MySQL字符集.比较规则.大小写规范.sql_mode 默认字符集 MySQL8 MySQL5 修改 ...

  10. 【mysql篇】mysql数据库知识点(四种语言)

    mysql数据库语言分为四种DDL,DQL,DML,DCL下面我们一一介绍: 注:(上图取自黑马程序员的课程APP中,这些笔记也是看了黑马程序员的课程之后做的): 一,       DDL(data ...

最新文章

  1. Ansible01-Ansible基础和部署
  2. editor修改样式 vue_vue+element-ui项目搭建实战
  3. 生成JSON数据--官方方法
  4. go基础语法:数组定义
  5. java合并整形_Java:合并InputStreams(Java: merging InputStreams)
  6. 计算机意外关闭原因 安全问题,win7弹出“计算机意外地重新启动或遇到错误”处理方法...
  7. jquery选择器通配符
  8. dojo省份地市级联之省份Dao接口类(三)
  9. 360浏览器调试html5,360浏览器如何打开调试工具
  10. java毕业设计商品货物信息管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
  11. 利用MATLAB 实现证件照换底色教程
  12. DDD原著 -- 第一章 知识消化
  13. 从MWC 2016看手机发展
  14. VUE-CLI不同版本共存
  15. JAVA300集——面向对象编程-类和对象-构造方法及其重载-方法调用
  16. 手把手撸一个小而美的日历组件
  17. 服务器的备份文件在哪里找,云服务器系统如何备份文件在哪里看
  18. Vos如何在外地号码前自动加0,本地号码前不加0
  19. 解析程序化中的机器人的算法写作
  20. Python实现正无穷 负无穷赋值

热门文章

  1. 【Unity_AssetBundle】(四)什么是依赖?怎样加载依赖包?
  2. 访问我的路径C:\Users\14575\Documents\Tencent Files\1457518657\FileRecv\face\face
  3. 安全测试员需知,5大常见的Web安全漏洞及测试方法归纳。
  4. access mysql 同步更新数据_[access 数据库同步]Access数据库到Mysql数据库实时更新
  5. REMOTE 红外遥控模块
  6. 数据结构各大排序整理+动图演示+代码实现(Java)
  7. SDUT 3917 康纳的表情包
  8. 如何用3ds Max和Corona创建羊毛地毯。
  9. 什么蓝牙耳机音质好?发烧友力荐四款好音质蓝牙耳机
  10. 条件概率、边缘概率、联合概率的简单理解