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. BZOJ3036: 绿豆蛙的归宿&Wikioi2488:绿豆蛙的归宿

    3036: 绿豆蛙的归宿 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 108  Solved: 73[Submit][Status] Descript ...

  2. inuitcss

    inuitcssa powerful, scalable, Sass-based, BEM, OOCSS framework.

  3. 水题:HDU 5112 A Curious Matt

    Description There is a curious man called Matt. One day, Matt's best friend Ted is wandering on the ...

  4. 【转】MongoDB资料汇总专题

    1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 MongoDB GridFS MongoDB GridFS 介绍 一个NoSQL与MongoD ...

  5. HDU 3480 Division(斜率优化+二维DP)

    Division Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 999999/400000 K (Java/Others) Tota ...

  6. Bzoj 2818: Gcd 莫比乌斯,分块,欧拉函数,线性筛

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 3241  Solved: 1437[Submit][Status][Discuss ...

  7. Linux process state codes

    Here are the different values that the s, stat and state output specifiers (header "STAT" ...

  8. Java 内存泄露的理解与解决过程

    本文详细地介绍了Java内存管理的原理,以及内存泄露产生的原因,同时提供了一些列解决Java内存泄露的方案,希望对各位Java开发者有所帮助. Java内存管理机制 在C++ 语言中,如果需要动态分配 ...

  9. head first-----decorate design pattern

    浅谈设计模式之------装饰者模式     首先给出装饰者模式的定义吧:              动态的将责任附加到对象上,若是要扩展功能,装饰者提供了比继承更加具有弹性的替代方案.     其中 ...

  10. Color Cube – 国产的优秀配色取色工具

    官方下载地址:http://fancynode.dbankcloud.com/ColorCube2.0.1ForWin.rar 比如今天所要介绍的 Color Cube (配色神器) 就属于“功大于过 ...