MySQL数据库的基本操作

一、创建数据库

1、认识数据库

1.概念:长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据仓库
2.作用:保存、管理数据。
3.关系型数据库(SQL):
MySQL、Oracle、SQL Server、SQLite、DB2
4.非关系型数据库(NOSQL):
Redis、MongoDB

2、MySQL数据库

1.概念:是现流行的开源、免费的关系型数据库。
2.特点:
1、免费、开源数据库。
2、小巧、功能齐全。
3、使用便捷。
4、可运行于Windows或Linux操作系统。
5、可适用于中小型甚至大型网站应用。

3、数据库管理软件

可手动操作、管理MySQL数据库的软件工具;特点:易用,简洁,图形化,常用的有以下两个:
1、SQLyog;
2、Navicat;

4、命令行操作数据库

1、连接数据库
MySQL -h 服务器主机地址 -u 用户名 -p
输入密码
2、创建数据库
CREATE DATABASE 数据库名
3、删除数据库
DROP DATABASE 数据库名
4、查看数据库
SHOW DATABASES
5、使用数据库
USE 数据库名
6、创建数据表

 CREATE   TABLE [ IF NOT EXISTS ]    `表名`   (
    
        `字段名1`    列类型 [ 属性 ]  [ 索引 ] [注释] ,
        `字段名2`   列类型 [ 属性 ]  [ 索引 ] [注释] , 
         … …    
         `字段名n`   列类型 [ 属性 ]  [ 索引 ] [注释] 

)  [  表类型 ] [ 表字符集 ] [注释] ;

1字段名表名上的反引号 (可选、区别于单引号):用于区别MySQL保留字与普通字符而引入的。
2列类型:规定数据库中该列存放的数据类型,分为:数值类型,字符串类型,日期和时间型数值类型,NULL值
数值类型常见的数值类型
字符串类型字符串类型
日期和时间型数值类型
日期
表类型:MySQL的数据表的类型:
MyISAM、InnoDB 、HEAP、BOB、CSV等;
最常见的MyISAMInnoDB类型
对比
7、删除数据表

DROP  TABLE  [ IF  EXISTS ]   表名

IF EXISTS 为可选,判断是否存在该数据表。
如删除不存在的数据表会抛出错误。

二、管理数据库

1、数据管理

1、数据库意义:数据存储,数据管理。
2、管理数据库数据方法:通过SQLyog等管理工具管理数据库数据,通过DML语句管理数据库数据
(INSERT ( 添加数据语句 )
UPDATE ( 更新数据语句 )
DELETE ( 删除数据语句 ))。

2、添加数据

INSERT INTO  表名  [ ( 字段1, 字段2, 字段3, … ) ]  
VALUES  (  '值1', '值2', '值3', …)

1、字段或值之间用英文逗号隔开。
2、“字段1, 字段2…”该部分可省略,但添加的值务必与表结构数据列顺序相对应,且数量一致。
3、可同时插入多条数据,values 后用英文逗号隔开。

3、更新数据

 UPDATE   表名   SET   column_name = value 
  [ ,  column_name2 = value2, …. ]
   [ WHERE   condition ];

1、column_name 为要更改的数据列。
2、value 为修改后的数据,可以为变量、具体值、表达式或者嵌套的SELECT结果。
3、condition为筛选条件,如不指定则修改该表的所有列数据。
where运算符where运算符

4、删除数据

DELETE     FROM   表名  [ WHERE  condition ]; 

1、condition为筛选条件,如不指定则删除该表的所有列数据。

 TRUNCATE     [TABLE]    table_name;

1、TRUNCATE命令用于完全清空表数据,但表结构、索引、约束等不变。
区别于DELETE命令
相同
1、都能删除数据、不删除表结构,但TRUNCATE 速度更快。
不同
1、使用TRUNCATE TABLE重新设置AUTO_INCREMENT计数器。
2、使用TRUNCATE TABLE不会对事务有影响。

三、查询数据库

SELECT   [ALL | DISTINCT] 
{  * |  table.* | [ table.field1 [ as  alias1] [, table.field2 [as  alias2]][, …]] }
FROM  table_name  [ as  table_ alias  ]
    [ left|out|inner  join  table_name2 ]    #联合查询
	[ WHERE  … ]   	#指定结果需满足的条件
	[ GROUP BY …]	#指定结果按照哪几个字段来分组
	[ HAVING …]	#过滤分组的记录必须满足的次要条件
	[ ORDER BY… ]	#指定查询记录按一个或者多个条件排序
	[ LIMIT  {   [ offset,] row_count    |   row_count OFFSET offset   }] ; 
	 #指定查询的记录从哪条至哪条

1、单表查询

1、select * from 表名 ; 查询整张表。

2、select 列名,列名,列名 from 表名 ; 查询某些列。

3、select 列名,列名,列名 from 表名1,表名2 ;查询多个表多个列。(如果两张表里面有列名一样,那么需要在前面列
名前加<表名.>,就是<表名.列名>)。

2、多表联查

1、内连接 ( inner join)

SELECT   字段1,字段2,…  FROM  table_1 
INNER  JOIN   table_2    
ON  table_1.字段x   =  table_2.字段y;

1、INNER JOIN 与 JOIN 是相同的;
2 、如table_1中的行在table_2中没有匹配,则不返回;
2、左外连接(LEFT JOIN)

SELECT   字段1,字段2,… FROM table_1 
LEFT  [ OUTER ]   JOIN   table_2   
 ON  table_1.字段x   =  table_2.字段y;

从左表(table_1)中返回所有的记录,即便在右(table_2)中没有匹配的行。
3、右外连接(RIGHT JOIN)

SELECT   字段1,字段2,… FROM table_1 
RIGHT   [ OUTER ]   JOIN   table_2    
ON  table_1.字段x   =  table_2.字段y;

从右表(table_2)中返回所有的记录,即便在左(table_1)中没有匹配的行。
4、JOIN对比
JOIN对比

3、查询条件

1、AS子句作用:可给数据列取一个新别名,可给表取一个新别名,可把经计算或总结的结果用另外一个新名称来代替。
AS用法:

SELECT   列名   AS “学号”   FROM   表名;
SELECT   表名.列名   FROM   表名 AS  a;
SELECT   列名+1  AS  Tel    FROM   表名;

2、DISTINCT关键字作用:去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条。

SELECT     DISTINCT   字段名1, 字段名2...     FROM   表名

3、where条件语句:用于检索数据表中符合条件的记录,搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假,搜索条件的组成:
1、逻辑操作符。
逻辑操作符
2、比较操作符。
比较操作符
数值数据类型的记录之间才能进行算术运算
相同数据类型的数据之间才能进行比较

4、BETWEEN AND范围查询

SELECT  字段列1,字段2 ,…FROM 表名 
WHERE   字段x  BETWEEN  值1 AND  值2  

等同于 >= 和 <= 联合使用

5、LIKE模糊查询
在WHERE子句中,使用LIKE关键字进行模糊查询:
1、与“%”一起使用,表示匹配0或任意多个字符。
2、与“_”一起使用,表示匹配单个字符。

6、IN进行范围查询

SELECT  字段列1,字段2 ,…FROM 表名 
WHERE   字段x  IN  ( 值1,值2,值3…)  

查询的字段x的值,至少与括号中的一个值相同,多个值之间用英文逗号隔开。

7、ORDER BY排序
对SELECT语句查询得到的结果,按某些字段进行排序,与DESC(降序)或ASC(升序)搭配使用,默认为ASC(升序)。

Order  by   字段1  ; 按字段1升序(默认asc升序)
Order  by   字段1   desc ; 按字段1降序
Order  by   字段1   desc , 字段2   asc ;    
按字段1降序,如果字段1中有重复值,在按字段2进行升序或降序排列。

8、LIMIT

LIMIT [m,]n  或  LIMIT  n  OFFSET  m
限制SELECT返回结果的行数
m 制定第一个返回记录行的偏移量
n 制定返回记录行的最大数目

m不指定则偏移量为0,从第一条开始返回前n条记录,LIMIT 常用于分页显示。

例如
SELECT * FROM `result` LIMIT 5       #返回前5条记录
SELECT * FROM `result` LIMIT 5,10   #返回6-15条记录 

9、GROUP BY分组
1、对所有的数据进行分组统计;
2、分组的依据字段可以有多个,并依次分组;
3、与HAVING结合使用,进行分组后的数据筛选。

10、上下连接
用union ; union all
Union:连接并去重
Union all:连接全部,将多张列数相同的表连接起来。

(SELECT sc.cid,sc.score
FROM sc
WHERE sc.cid=01
ORDER BY sc.score DESC LIMIT 1000)
UNION ALL
(SELECT sc.cid,sc.score
FROM sc
WHERE sc.cid=02
ORDER BY sc.score DESC LIMIT 1000)

如果需要整体排序,只需要在最后进行排序就行,
如果每张表需要单独排序再连接,则需要在排序关键词后加LIMIT,limit 其后的数字要大于多张表放一起后的行数。

四、设计数据库

设计数据库的步骤
• 收集信息
• 标识实体 (Entity)
• 标识每个实体的属性(Attribute)
• 标识实体之间的关系(Relationship)
• 转化E-R图为数据库模型图
• 使用三大范式规范数据库表的设计

1、第一范式的目标是确保每列的原子性:
• 如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)。
2、 第二范式 (2nd NF)
• 第二范式要求每个表只描述一件事情。
3、第三范式 (3nd NF)
• 如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF) :与主键列有直接关系而没有间接关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值