1、数据库的概念

数据库是保存数据的仓库,可以方便的把数据放进去,并且把数据根据各种需求取出来。

数据库管理系统(Database Management System,DBMS)是对数据库进行管理(增删改查)的软件,常用的有DBMS有MYSQL、Oracle、DB2、MSSQLServer等。MYSQL是免费、开源的,因此应用最广泛。

不同的DBMS的用法大同小异,掌握一个也就基本等于掌握了其它的DBMS。

2、数据库、表、列

Table(表):书都放到书架上,碗放到橱柜中,不同类型的资料放到不同的“格子”中,将这种区域叫做“表”(Table)。不同的表根据放的数据不同进行空间的优化,找起来也方便。

两种叫法:列(Colum)/字段(Field)

3、主键

主键有两种选用策略:业务主键和逻辑主键。业务主键是使用有意义的字段做主键,比如身份证号、银行账号等;逻辑主键是使用没有任何意义的字段做主键,完全给程序看的,业务人员不会看的数据。

表间关联、外键(ForeignKey)

4、MYSQL常用数据类型
文本:

CHAR(*):最多255个字节的定长字符串,它的长度必须在创建时指定

VARCHAR(*):最多255个字节的可变长度字符串,它的长度必须在创建时指定

TEXT:最大长度为64K字符的变长文本

TINYTEXT:最大长度为255字符的变长文本

MEDUIMTEXT:最大长度为16K字符串的变长文本

LONGTXT:最大长度为4GB字符的变长文本

整数(考虑数据取值后选择尽可能小的类型)

tinyint:1字节。有符号值:-128 到127;无符号值:0到255

smallint:2字节。有符号值:-32768 到32767;无符号值:0到65535

mediumint:3字节。

int:4字节

bigint:8字节

小数(需要指定长度和小数点,也就是显示宽度和小数位数):

decimal:精确存储的小数,在内部用字符串存储,适合金额等要求精确的类型。别名:NUMERIC

float:4字节,单精度。会近似存储(*),效率比decimal高。

double:8字节,双精度。会近似存储(*),效率比decimal高。

日期时间:

DATE:4字节。范围:1000-01-01——9999-12-31

TIME:3字节。范围:-838:59:59——838:59:59

DATETIME:8字节。范围:1000-01-01 00:00:00——9999-12-31 23:59:59

二进制数据:

TITYBLOB:最大长度为255字节

BLOB:最大长度为64KB

MEDIUMBLOB:最大长度为16MB

LONGBLOB:最大长度为4GB

5、SQL语句入门

(1)SQL语句中字符串一般用单引号;

(2)SQL语句是大小写不敏感的

(3)最简单的SQL语句:查看一个表的全部数据:select * from T_Students

(4)简单的插入数据库的SQL语句:Insert Into T_Students(Id,Name,Age,Gender) Values(1,'汪峰',18,1)

补充:如果只想执行NavCat中编写的一部分代码,而不是执行全部代码,只要选中要执行的代码,点击鼠标右键,选择“运行已经选择的”即可。Insert语句可以省略表名后的列名,但是强烈不推荐

(5)如果插入的行中有些字段的值不确定,那么 Insert 的时候不指定那些列即可。不“允许为空”的列在插入时不能省略

(6)自动递增/自增(Auto Increment):字段自增可以避免并发等问题,不要程序员代码控制自增。用自增字段在Insert的时候不用指定值。

Update语句

1、更新一个列Update T_Students Set Age=30,Name='tom'

2、更新多个列: UPDATE T_Students Set Age=30,Name='tom'

3、还可以使用表达式:UPDATE T_Students Set Age=Age+1

4、更新一部分数据:UPDATE T_Students Set Age=10 Where Name='tom'

5、Where中还可以使用复杂的逻辑判断:Update T_Students Set Age=30 Where Name='tom' or Age<25      还有where (Age>20 and Age<30) or(Age=80)等

6、Where中可以使用的其他逻辑运算符:or、and、not、<、>、>=、<=、!=(或<>)等

Delete数据删除

删除表中全部数据:Delete From T_Students

Delete也可以where子句来删除一部分数据:Delete From T_Students Where Age>20

Delete只是删除数据,表还在。

Select语法

1、简单的数据检索 :SELECT * FROM T_Employees

2、只检索需要的列 :SELECT Number FROM T_Employees 、SELECT Name,Age FROM T_Employees

3、列别名:SELECT Number AS 编号,Name AS 姓名,Age AS Age111 FROM T_Employees  写不写AS都行

5、使用where检索符合条件的数据:SELECT Name FROM T_Employees WHERE Salary<5000。

6、还可以检索不与任何表关联的数据:select 1+1;select now();

聚合函数

1、SQL聚合函数:MAX(最大值)、MIN(最小值)、AVG (平均值)、SUM (和)、COUNT(数量)

2、大于25岁的员工的最高工资 :SELECT MAX(Salary) FROM T_Employees WHERE Age>25

3、最低工资和最高工资:SELECT MIN(Salary),MAX(Salary) FROM  T_Employees

4、大于25岁的员工人数:SELECT COUNT(*) FROM  T_Employees  WHERE Age>25

5、全体员工的工资总和平均工资:SELECT SUM(Salary),AVG (Salary) FROM  T_Employees

Order By排序

1、ORDER BY子句位于SELECT语句的末尾,它允许指定按照一个列或者多个列进行排序,还可以指定排序方式是升序(从小到大排列,ASC)还是降序(从大到小排列,DESC)

2、按照年龄升序排序所有员工信息的列表:SELECT * FROM  T_Employees ORDER BY Age ASC

3、按照年龄从大到小排序,如果年龄相同则按照工资从大到小排序 :SELECT * FROM  T_Employees ORDER BY Age DESC,Salary DESC

4、ORDER BY子句要放到WHERE子句之后 :SELECT * FROM T_Employees WHERE Age>23 ORDER BY Age DESC,Salary DESC

通配符过滤使用LIKE

1、单字匹配的通配符为半角下划线"_" ,它匹配单个出现的字符。以任意字符开头,剩余部分为"erry" :Select * From T_Employees Where Name Like '_erry'

2、多字符匹配的通配符为半角百分号"%" :它匹配任意次数(零或多个)出现的任意字符。"k%" 匹配以 "k" 开头、任意长度的字符串。检索姓名中包含字母 'n' 的员工信息:Select * From T_Employees Where Name Like 'n%n'

3、Like性能较差,很容易造成全表扫描,谨慎使用。

null不知道

1、数据库中,一个列如果没有指定值,那么值就为null,数据库中的null表示“不知道”,而不是表示没有。因此select null+1结果是null,因为“不知道”加1的结果还是“不知道”。

2、SELECT * FROM T_Employees WHERE NAME=null ; SELECT * FROM T_Employees WHERE NAME!=null ;

都没有任何返回结果,因为数据库也“不知道”。

3、Select Name+"a" FROM T_Employees

4、SQL中使用is null、is not null来进行空值判断:

(1)    SELECT * FROM T_Employees WHERE NAME is null ;

(2)    SELECT * FROM T_Employees WHERE NAME is not null ;

LIMIT获取部分结果集

1、LIMIT关键字用来限制返回的结果集, LIMIT放在SELECT语句的最后位置,语法为“LIMIT 首行行号,要返回的结果集的最大数目” 。

比如下面的SQL语句将返回Name不为空的、按照工资降序排列的从第二行开始(行号从0开始)的最多五条记录:
SELECT * FROM T_Employees where Name is not null ORDER BY Salary DESC LIMIT 2,5

2、limit一定要放到所有的语句的最后。

GROUP BY 分组查询

1、数据分组用来将数据分为多个逻辑组,从而可以对每个组进行聚合运算。SQL语句中使用GROUP BY子句进行分组,使用方式为“GROUP BY  分组字段”。分组语句一般和聚合函数一起使用,GROUP BY子句负责将数据分成逻辑组,而聚合函数则对每一个组进行统计计算。

2、查看公司员工有哪些年龄段的:SELECT Age FROM T_Employees GROUP BY Age

将Age相同的数据行放到一组,分组后的数据可以看作一个临时的结果集,而SELECT  Age语句则取出每组的Age字段的值,这样我们就得到上表的员工年龄段表了。

3、如果SELECT语句有WHERE子句,则GROUP BY子句必须放到WHERE语句的之后。

4、GROUP BY子句将检索结果划分为多个组,每个组是所有记录的一个子集。上面的SQL例子在执行的时候数据库系统将数据分成了下面的分组:

5、分组后就可以对组内的数据采用聚合函数进行统计了:

1)计算每个分组中的员工平均工资
SELECT Age,AVG(Salary) FROM T_Employees GROUP BY Age

2)查看每个年龄段的员工的人数:
SELECT Age,COUNT(*)  FROM T_Employees GROUP BY Age

Left Join联合查询

1、查询每张订单的订单号、价格、对应的客户姓名以及客户年龄

SELECT o.Number,o.Price,c.Name,c.Age FROM T_Orders o LEFT JOIN T_Customers c ON o.CustomerId=c.Id

2、添加where语句(显示价格>=150元的订单)

SELECT o.Number,o.Price,o.CustomerId,c.Name,c.Age  FROM T_Orders o LEFT JOIN T_Customers c ON o.CustomerId WHERE o.Price>=150

3、可以join多张表:

SELECT o.Number 订单号,o.Price 价格, c.Name 客户姓名,c.Age 客户年龄,t.Name 订单类型  FROM T_Orders o

LEFT JOIN T_Customers c  ON o.CustomerId

LEFT JOIN T_OrderTypes t ON o.TypeId

外键约束

1、如果删除/更新T_Customers一行记录,那么就可能会导致T_Orders中存在CustomerId为非法值的数据,使得程序逻辑错误。一般不会更新主键Id的值,所以谈外键约束的时候只谈“删除T_Customers时”。

2、外键约束:当删除T_Customers中一条数据的时候,如何处理T_Orders等存在指向T_Customers外键的行。外键约束建立在外键字段***Id的表上(t_orders)。

3、建外键约束的方法:新建或者修改表的时候“外键”→“添加外键”。名:自动命名即可;栏位名:CustomerId;参考表:t_customers;外栏位名:Id;删除时、更新时:一般默认RESTRICT(CASCADE:删除T_Customers一行时把它的订单也删除了;SET NULL:删除T_Customers一行时把它的订单CustomerId设置为NULL;NO ACTION/RESTRICT:拒绝删除)。

 

06MySQL数据库入门的更多相关文章

  1. SQLite数据库入门教程

    SQLite数据库入门教程 SQLite 是一个开源的嵌入式关系数据库,实现自包容.零配置.支持事务的SQL数据库引擎. 其特点是高度便携.使用方便.结构紧凑.高效.可靠. 与其他数据库管理系统不同, ...

  2. oracle数据库入门

    oracle  数据库入门. 1.数据 2.数据存储的地方:变量 数组 容器 (内存中),文件,数据库(文件) 3.数据库系统:sqlserver 2000   2005  2008  mysql 5 ...

  3. 数据库入门之运行原始 SQL 查找

    数据库入门之运行原始 SQL 查找 一旦你设置好了数据库连接,就可以使用 DB facade 来进行查找.DB facade 提供每个类型的查找方法:select.update.insert.dele ...

  4. MySQL数据库入门笔记

    2 数据库入门 2.1引入 数据保存到内存: 优点: 1)读写非常快 缺点: 1)程序关闭导致数据丢失 数据保存到文件: 优点: 1)数据可以永久保存 缺点: 1)频繁地IO操作,效率不高! 2)数据 ...

  5. MySQL----MySQL数据库入门----第一章 数据库入门

    第一章 数据库入门 1.1 数据库基础知识 1.1.1 数据库概述 数据不仅包括普通意义上的数字,还包括文字.图像.声音等.也就是说,凡是在计算机中用来描述事物的记录都可称作数据. 数据库的基本特点: ...

  6. H2数据库入门使用

    H2数据库入门使用 学习了: https://www.cnblogs.com/xdp-gacl/p/4171024.html http://www.cnblogs.com/xdp-gacl/p/417 ...

  7. 【数据库】数据库入门(三): SQL

    SQL: 结构化查询语言(Structured Query Language) SQL 是由 IBM 公司首先开发产生,它是关系型数据库最早出现的商用语言之一.1974年,IBM 公司 San Jos ...

  8. Oracle数据库入门到高薪培训教程(从Oracle 11g 到 Oracle 19c)

    一.Oracle数据库入门到高薪培训视频教程(从 Oracle11g 到 Oracle19c) 本套Oracle视频教程学习地址: https://edu.51cto.com/course/18034 ...

  9. MySQL数据库入门到高薪培训教程(从MySQL 5.7 到 MySQL 8.0)

    一.MySQL数据库入门到高薪培训视频教程(从MySQL5.7到MySQL8.0) 本套MySQL学习教程地址: https://edu.51cto.com/course/18034.html 为满足 ...

随机推荐

  1. mysql常见字符串处理函数结束

    一.简明总结 ASCII(char) 返回字符的ASCII码值 BIT_LENGTH(str) 返回字符串的比特长度 CONCAT(s1,s2…,sn) 将s1,s2…,sn连接成字符串 CONCAT ...

  2. Microsoft Internet Explorer 内存破坏漏洞(CVE-2013-3193)(MS13-059)

    漏洞版本: Microsoft Internet Explorer 6 - 10 漏洞描述: BUGTRAQ ID: 61678 CVE(CAN) ID: CVE-2013-3193 Windows ...

  3. css3图片墙

    css相关知识: 1. 使用box-shadow设置图片阴影,为照片加上阴影 eg: box-shadow: 0 0 5px 3px #abc 2. 使用tansform-origin定义变形原点 e ...

  4. loadrunner打不开ie&ie默认浏览器设置方法

    loadrunner使用过程中频繁的出现问题,出现次数最多的就是lr打不开ie,或者ie一闪就关闭了,问题出在我默认浏览器的设置上,因为我原先并没有成功设置ie为默认浏览器.这是一个无意识的错误,我以 ...

  5. Selenium 处理模态对话框

    模态对话框的原理 模态窗口 点击下一步的动作为,聚焦到“下一步”,然后直接回车 driver.FindElement(By.CssSelector("div.rg_btn a")) ...

  6. Xcode5最初级的教程

    相信IT男们,总会有那么一天希望自己捣鼓一个小App 让女朋友开心一下.那么就有了本文的开始的动机,话说带着兴趣做事情的时候进度是最快的也是最轻松的,这也是因为为什么有女朋友陪着的时候走多远的路脚都不 ...

  7. senrty 配置Email

    测试页面在这里      右上角头像->管理->邮件 配置如下:(注意一点:465是SSL的 587是TLS的) 其他django email 1.3 文献在这里  现在都1.8了貌似 如 ...

  8. [转载]JQuery.closest(),parent(),parents()寻找父节点

    1.通过item-1查找 level-3(查找直接上级) $('li.item-1').closest('ul') $('li.item-1').parent() $('li.item-1').par ...

  9. Drawing Lines - SGU 135(简单递推)

    求N条直线最多能把一个平面分成几部分. 代码如下: ========================================================================== ...

  10. (配置)CKEditor+CKFinder+php上传配置,根据年月命名创建文件夹来存放

    CKEditor+CKFinder+php上传配置 新版本的CKEditor只提供了基本的文本编辑功能,上传模块由另一个组件CKFinder.这里主要记录CKFinder上传的一些参数配置,能够成功上 ...