MySQL基础

MySQL基础

1.数据库的介绍

数据库(DataBase,DB):指长期保存在计算机的存储设备(硬盘)上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合. 还是以文件的方式存在服务器的电脑上的。
说白了就是存储数据的仓库, 可以持久化保存数据,并通过sql语句快速的对数据进行增删改查操作。

2.常见的关系型数据库

  • MySql :开源免费的数据库,中小型的数据库,已经被Oracle收购了。MySql6.x版本也开始收费。后来Sun公司收购了MySql,而Sun公司又被Oracle收购
  • Oracle:收费的大型数据库.Oracle公司的产品.Oracle收购SUN公司,收购MySql.
  • DB2:IBM公司的数据库产品,收费的.银行系统中.
  • SQLServer:MS公司.收费的中型的数据库.
  • SyBase:已经淡出历史舞台.提供了一个非常专业数据建模的工具PowerDesigner.
  • SQLite: 嵌入式的小型数据库,应用在手机端.

3.数据库结构

数据库管理程序(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。

数据库管理系统、数据库和表的关系如图所示:在这里插入图片描述
4.SQL概述

  • SQL:Structure Query Language。(结构化查询语言),通过sql操作数据库(操作数据库,操作表,操作数据)
  • SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来被国际化标准组织(ISO)采纳为关系数据库语言的国际标准
  • 各数据库厂商(MySql,oracle,sql server)都支持ISO的SQL标准。
  • 各数据库厂商在标准的基础上做了自己的扩展。 各个数据库自己特定的语法

5.sql的语法

  • 每条语句以分号结尾(命令行里面需要),如果在navicat,java代码中不是必须加的。
  • SQL在window中不区分大小写,关键字中认为大写和小写是一样的

6.sql的分类

  • Data Definition Language (DDL数据定义语言) 如:操作数据库,操作表
  • Data Manipulation Language(DML数据操纵语言),如:对表中的记录操作增删改
  • Data Query Language(DQL 数据查询语言),如:对表中的记录查询操作
  • Data Control Language(DCL 数据控制语言),如:对用户权限的设置

7.DDL操作数据库

1).创建数据库
语法:create database 数据库名 (character set 字符集) (collate 校对规则)
字符集(charset):是一套符号和编码。
校对规则(collation): 是在字符集内用于字符比较和排序的一套规则,比如有的规则区分大小写,有的则无视。

2).查看所有的数据库
语法:show create database 数据库名;

3).删除数据库
语法:drop database 数据库名;

4).修改数据库
语法:alter database 数据库名 character set 字符集;

5).其他操作
切换数据库, 选定哪一个数据库:
use 数据库名; //注意: 在创建表之前一定要指定数据库. use 数据库名

查看正在使用的数据库
select database();

8.DDL操作表

1).创建表
语法:
create table 表名(
字段名 字段类型 [约束],
字段名 字段类型 [约束],

字段名 字段类型 [约束]
);
字段类型 :
在这里插入图片描述
约束 :- 即规则,规矩 限制;

  • 作用:保证用户插入的数据保存到数据库中是符合规范的

约束种类:

  • not null: 非空 ; eg: username varchar(40) not null username这个字段不能为空,必须要有数据

  • unique:唯一约束, 后面的数据不能和前面重复; eg: cardNo char(18) unique; cardNo字段不能出现重复的数据

  • primary key;主键约束(非空+唯一); 一般用在表的id列上面. 一张表基本上都有id列的, id列作为记录的唯一标识的

  • auto_increment: ==自动增长,必须是设置了primary key之后,才可以使用auto_increment==

  • id int primary key auto_increment id不需要我们自己维护了, 插入数据的时候直接插入null, 自动的增长进行填充进去, 避免重复了.

注意:

  1. 先设置了primary key 再能设置auto_increment
  2. 只有当设置了auto_increment 才可以插入null 自己维护 否则插入null会报错
    id列:
  3. 给id设置为int类型, 添加主键约束, 自动增长
  4. 或者给id设置为字符串类型,添加主键约束, 不能设置自动增长

2).查看表
查看所有的表
语法:show tables;
查看表的定义结构
语法:desc 表名;

3).修改表
语法:
增加一列; alter table 表 add 字段 类型 约束;
修改列的类型约束; alter table 表 modify 字段 类型 约束 ;
修改列的名称,类型,约束; alter table 表 change 旧列 新列 类型 约束;
删除一列; alter table 表名 drop 列名;
修改表名; rename table 旧表名 to 新表名;

4).删除表
语法:
drop table 表名;

9.DML操作表记录-增删改

1).插入记录(添加数据)
语法:

  • insert into 表(列,列…) values(值,值…);//如果一个设置了非空的列没有插入数据会报错
  • insert into 表 values(值,值…); //如果一个设置了非空的列没有插入数据会报错
    2).更新记录
    语法:
    update 表 set 列 =值, 列 =值,… [where 条件];//如果没有加where 会对所有行全进行更新,所以必须要有条件
    3).删除记录
    语法:delete from 表 [where 条件] 注意: 删除数据用delete,不用truncate
    (truncate)语法:
    truncate table 表;
    当你不再需要该表时, 用 drop;当你仍要保留该表,但要删除所有记录时, 用 truncate;当你要删除部分记录时(always with a WHERE clause), 用 delete.
    Truncate是一个能够快速清空资料表内所有资料的SQL语法。并且能针对具有自动递增值的字段,做计数重置归零重新计算的作用。(与其他表有关系时无法使用)

10.DQL操作表记录-查询

1).单表查询
基本查询语法:
select [*][列名 ,列名][列名 as 别名 …] [distinct 列名] from 表名 [where 条件]
查询所有的列的记录语法:

  • select * form 表
    查询某张表特定列的记录语法:
  • select 列名,列名,列名… from 表
    去重查询 语法:
  • select distinct 字段名 from 表名; //要数据一模一样才能去重
    别名查询 语法:
  • select 列名 as 别名 ,列名 from 表 //列别名 as可以不写
  • select 别名.* from 表 as 别名 //表别名(用于多表查询)
    运算查询(+,-,*,/等)语法
  • select 列名,列名+10 from 表名;
    在这里插入图片描述

条件查询语法:
select … from 表 [where 条件]//取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回
条件:
1.between…and… 区间查询
语法:
where 列名 between 1000 and 3000//表示1000<=price<=3000
2.in(值,值…)
语法:
where 列名 = in(值,值…) //只查询括号内的值
3.like 模糊查询 一般和_或者%一起使用
语法:
列名 like ‘张%’ //查询姓张的用户, 名字的字数没有限制
列名 like ‘张_’ //查询姓张的用户, 并且名字是两个的字的
4.and 多条件同时满足
语法:
where 条件1 and 条件2 and 条件3
5.or 任意条件满足
语法:
where 条件1 or 条件2 or 条件3
排序查询
1.单列排序:
语法:
select … from 表名 [where 条件] order by 字段名 [asc|desc]; asc:升序,desc:降序,不指定默认是升序// 只按某一个字段进行排序,单列排序
2.组合排序:
语法:
select … from 表名 [where 条件] order by 字段名 [asc|desc], 字段名 [asc|desc],…; //同时对多个字段进行排序,如果第1个字段相等,则按第2个字段排序,依次类推
聚合函数 查询
语法:
SELECT 聚合函数(列名) FROM 表名 [where 条件];

聚合函数作用
max(列名)求这一列的最大值
min(列名)求这一列的最小值
avg(列名)求这一列的平均值
count(列名)统计这一列有多少条记录
sum(列名)对这一列求总和

分组查询
语法:
select … from 表名 [where 条件] group by 列 [having 条件];
分组后筛选 having

分页查询
语法:
select … from 表名 limit 起始行数,查询的记录条数; – 注意: 起始行数是从0开始
分页查询的公式:
limit (页码-1)*每页显示的条数,每页显示的条数;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值