MySQL语法基础一

数据库概括

数据库:面向关系 使用 二维表格来存储数据。

Oracle数据库:甲骨文

MySQL :甲骨文

DB2:IBM

SQL Server:微软

数据库管理

关系型数据库管理系统:RDBMS

数据库服务器

仓库 + 管理员

数据库表就是一个多行多列的表格

  • 表结构,对列名称列类型进行定义

  • 表记录,数据

注意:MySQL 中编码UTF8 没有-

要点:

  • SQL,结构化查询语言

  • SQL,客户端使用SQL来操作服务器

  • SQL标准(国际化标准组织ISO),对DBMS的统一操作方式

  • SQL方言,有一些自己独特的语法,只能本身数据库才能使用

SQL语法

  • SQL语句可以在单行或多行书写,以分号结尾

  • 可使用空格和缩进来增强语句的可读性

  • MySQL不区分大小写,建议使用大写

SQL语句分类

  • DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库,表,列等,创建,删除,修改:库,表结构

  • DML(Data Manipulation Language):数据操作语言,用来定义数据库的数据(记录):增,删,改:表记录

  • DCL(Data Control Language):数据库控制语言,用来定义访问权限和安全级别

  • DQL(Data Qurery Language):数据库查询语言,用来查询记录(数据)

DDL 语法

这里的数据库就是MySQL的某仓库

查看所有数据库:SHOW DATABASES

切换数据库:USE 数据库名(查询表,得先切换到有这个表的数据库中)

创建数据库:CREATE DATABASE 【IF NOT EXISTS (这句可加可不加,加了如果已经有这个数据库了,就不会创建,但是语句执行了不会报错)】 mydb1 【CHARSET=UTF8(默认就是utf8)】

删除数据库:DROP DATABASE【IF EXISTS】 + 数据库名称

修改数据库编码:ALTER DATABASES mydb1 CHARACTER SET UTF8

数据类型

每一个表中的列,需要一个数据类型

  • int 整型

  • double 浮点型 例如double(5,2)表示最多5位数,小数必须俩位,这样这个最大值为999.99

  • decimal 浮点型 (金钱方面)在表单钱方面使用该类型,因为不会出现精度缺失问题

  • char 固定长度字符串类型:

  • 最大 char(255),长度不能变。不到长度的会补足到指定长度

  • varchar:可变长度字符串类型 ,最大 varchar(65535),需要用额外字节空间记录长度

MySQL特有类型,字符串类型,范围比较大分为四种

  • tinytext 2^8 - 1

  • text 2 16 -1

  • mediumtext 2 24-1

  • longtext 2 32-1

字节类型:
也有四种
还有 不可变的
和上面类似 自己查
日期类型

  • 日期类型 data 格式:xxxx-xx-xx
  • 时间类型 time 格式:xx:xx:xx
  • 时间戳类型 timestamp 日期时间都有
表的操作

创建表:CREATE TABLE 表名()

括号里面需要有表结构:
列名 列类型,
列名 列类型

查看当前数据库中所有的表名称:SHOW TABLES

查看指定表的创建语句:SHOW CREATE TABLE 表名

查看表结构:DESC 表名

删除表:DROP TABLE 表名

修改表: ALTER TABLE 表名 后面加这些

– 添加列 :ADD (列名 列类型,列名 列类型)

– 修改列类型:MODIFY 列名 列类型

– 删除列:DROP 列名

– 修改表名称:RENAME TO 新表名

DQL:查询表记录

查询表记录:SELECT*FROM 表名

DML (数据操作语言,对表记录的操作)

插入数据:INSERT INTO 表名 (列名,列名,列名) VALUES(列值,列值,列值) 列值列名是对应的

注意:若有部分没有指定插入的列名,默认为null。
若都没有指定列名,默认插入所有列,且与表列的顺序一致

注意:在数据库中所有的字符串类型,必须使用单引号。日期类型也要使用单引号。JAVA中是双引号

修改数据:

UPDATA 表名 SET 列名 = 列值 (这里=是赋值)(条件)WHERE 列名 = 列值 (这里=是是否相等)

条件必须是一个boolean型的值或者表达式

条件中 = 与JAVA 中 == 相同

  • BETWEEB ...AND 区间
  • IN('','')类似集合里面满足一个就行

在条件中不能使用 = null,一直是为false,只能用 is null (is not null)

删除记录:

DELETE FROM 表名 WHERE xxx

DCL

一个项目创建一个用户,一个项目对应的数据库只有一个

这个用户只能对这个数据库有权限,其他的操作不了

创建用户 :CREATE USER 用户名@IP地址 INENTIFIED BY '密码'

用户名@‘%’,在任意IP地址

给用户授权:GRANT 权限1,权限2 ON 数据库.* TO 用户名@IP地址

权限:CREATE,ALTER, DROP, INSERT, UPDATA等前面关键词

撤销权限:

REVOKE 权限 ON 数据库.* FROM 用户名@IP地址

查看权限:

SHOW GRANT FOR 用户名@IP地址

删除用户:

DROP USER 用户名@IP地址

现在 DQL,对数据库查询

基本查询
查询表中所有列:SELECT * FROM 表名
其中 * 是表示所有列

指定列查询
SELECT 列名1,列名2 FROM 表名

完全重复的记录只显示一次
SELECT DISTINCT FROM 表名

列运算

  • 数量类型的列可以做加,减,乘,除 ,不是数量类型默认会变成0

显示出来计算结果:

SELECT 列名*1.5 FROM 表名

注意,不会修改数据库数据

数据和null进行运算,结果为null,这么解决:
使用一个函数:IFNULL(列名,0) 意思: 如果列名中有为null的,则替换为0

  • 连接字符串:加号不能作为连接字符串,MySQL中使用函数:CONCAT(列名,列名,‘xxx’)

  • 给列起别名

显示:SELECT 和FROM中间 加 AS xxx, AS还能省略

条件控制:

条件查询,和前面UPDATA,DELETE一样,用WHERE来控制条件,WHRER在FROM 表名 后面加上

模糊查询:列名 中包含部分的也算,不使用 =使用 LIKE ‘xxx’
注意,字符串中加下划线,意思是任意匹配一个字符,一个下划线匹配一个字符
%一个百分号,匹配0到N个字符

排序:
ORDER BY 列名 ASC/DESC
ASC 升序,默认升序``DESC 降序`
后面继续加,意思是当前面那列相等时,使用后面加的进行排序

聚合函数
COUNT() 计算有效的数据个数,为null这不计入,* 代表全部列
求和:SUM
取最大值:MXA
取最小值:MIN
取平均值:AVG

分组查询

查询组的信息,对于个人信息不太行

查询信息中使用聚合函数

前面select 什么列名,后面 group by 靠什么分组

SELECT JOB, COUNT(*) FROM EMP GROUP BY JOB;

分组可以加条件

  • 在分组前的条件

    在group by 前 加 where

  • 分组后才有的信息,分组后的条件

    最后加 HAVING 条件

limit 方言
LIMIT 用来限定查询结果的的起始行 以及总行数
例如 查询起始行为第五行,一次查询三行记录
SLECT * FROM emp LIMIT 4,3
4表示第4行开始注意 第一个行为第0行,查询3行。就是查询5,6,7行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值