赞
踩
名称 | 全称 | 简称 |
数据库 | 存储数据的仓库, 数据是有组织的进行存储 | DataBase(DB) |
数据库管理系统 | 操纵和管理数据库的大型软件 | DataBase Management System(DBMS) |
sql | 操作关系型数据库的编程语言, 定义了一套操作关系型数据库统一标准 | Structured Query Langyage(sql) |
概念:建立在关系模型基础上, 由多张相互链接的二维表组成的数据库
特点:
1.使用表存储数据, 格式统一, 便于维护
2.使用sql语言操作, 标准统一, 使用方便
- net start mysql80
- nep stop mysql80
注意: 默认mysql是开机自动启动的
- mysql自带的客户端命令行
- mysql [-h 127.0.0.1][-p 3306] -u root -p
1.sql语句可以单行或多行书写, 以分号结尾.
2.sql语句可以使空格/缩进增强语句的可读性
3.mysql数据库的sql语句不区分大小写, 关键字建议使用大写
4.注释:
(1)单行注释: --注释内容 或 # 注释内容(MYSQL持有)
(2)多行注释: /星号注释内容星号/ 星号-->*
分类 | 全称 | 说明 |
DDL | Data Definition Language | 数据定义语言, 用来定义数据库对象(数据库, 表, 字段) |
DML | Data Manipulation Language | 数据定义语言, 用来定义数据库对象(数据库, 表, 字段) |
DQL | Data Query Language | 数据查询语言, 用来查询数据库中表的记录 |
DCL | Data Control Language | 数据控制语言, 用来创建数据库用户, 控制数据库访问权限 |
查询所有数据库
SHOW DATABASES;
查询当前数据库
SELECT DATABASE();
CREATE DATABASE[IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集][COLLATE 排序规则];
[IF NOT EXISTS] 作用是如果这个数据库名存在, 不执行这个操作
如果这个数据库不存在, 则执行这个操作
[DEFAULT CHARSET 字符集] 指定当前数据库所有的字符集, 可以省略
DROP DATABASE[IF EXISTS]数据库名;
USE 数据库名;
SHOW TABLES;
DESC 表名;
SHOW CREATE TABLE 表名;
- CREATE TABLE 表名(
- 字段1 字段1类型[comment 字段1注释],
- 字段2 字段2类型[comment 字段2注释],
- 字段3 字段3类型[comment 字段3注释],
- ......
- 字段n 字段n类型[comment 字段n注释]
- )[comment 表注释];
注意:[....]为可选参数, 最后一个字段后面没有逗号
DECTMAL eg:123.45
M(精度):指的整个数值的长度5
D(标度):指的小数位数2
举例:
age int 这样的标注是可以, 但是相对于是比较占内存的所以我们
可以采用:
age TINYINT UNSIGNED
其中UNSIGNED是指出无符号(UNSIGNED)范围
小数
score double(4, 1) 其中4代表整体长度, 1代表小数的位数
char(10) 其中10的意思为:即使用一个字符, 也会占用10个字符的空间, 未占用的空间会使用空格进行补位
varchar(10) 其中10就为最多能存储10个字符, varchar是一个字符就会占用一个字符的空间, varchar会根据你所存储的内容去计算当前计算的空间
char---->性能高
varchar ---->性能差
根据需求创建表
1. 编号(纯数字) 1. 员工工号(字符串类型, 长度不超过10位) 1. 员工姓名(字符串类型, 长度不能超过10位) 1. 性别(男/女, 存储一个汉字) 1. 年龄(正常人年龄, 不可能存储负数) 1. 身份证号(二代身份证号均为18位) 1. 入职时间(取年月日即可)
ALTER TABLE 表名 ADD 字段名 类型(长度)[comment 注释] [约束];
案例:
为emp表增加一个新的字段"昵称"为nickname, 类型为varchar(20)
alter table emp add nickname varchar(20) comment '昵称';
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[comment 注释] [约束];
案例:
将emp表的nickname字段修改为username, 类型为varchar(30)
alter table emp change nickname username varchar(30) comment '用户名';
ALTER TABLE 表名 DROP 字段名;
案例:
将emp表的字段username删除
alter table emp drop username;
ALTER TABLE 表名 RENAME TO 新表名;
案例:
将emp表的表名修改为employee
alter table emp rename to employee;
DROP TABLE [IF EXISTS] 表名;
TRUNCATE TABLE 表名;
INSERT INTO 表名(字段1, 字段2,...) VALUES(值1, 值2, ...);
INSERT INTO 表名 VALUES(值1, 值2, ....);
INSERT INTO 表名(字段1, 字段2, ...) VALUES(值1, 值2, ...)(值1, 值2, ...)(值1, 值2, ...);
INSERT INTO values(值1, 值2, ...)(值1, 值2, ...)(值1, 值2, ...);
1.插入数据时, 指定的字段顺序要与值的顺序是一一对应的
2.字符串和日期型数据应该包含在引导中
3.插入的数据大小, 应该在字段的规定范围内.
UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2, ....[WHERE 条件]
修改语句的条件可以有, 也可以没有, 如果没有条件, 则会修改整张表的所有数据
DELETE FROM 表名 [WHERE 条件]
1. DELETE语句条件可以有, 也可以没有, 如果没有条件, 则会删除整张表的所有数据
2. DELETE语句不能删除某一字段的值(可以使用UPDATE)
- SELECT
- 字段列表
- FROM
- 表名列表
- WHERE
- 条件列表
- GROUP BY
- 分组字段列表
- HAVING
- 分组后条件列表
- ORDER BY
- 排序字段列表
- LIMIT
- 分页参数
SELECT 字段1, 字段2, 字段3...FROM 表名;
SELECT * FROM 表名;
SELECT 字段1 [AS 别名1], 字段2[AS 别名2]...FROM 表名;
SELECT DISTINCT 字段列表 FROM 表名;
SELECT 字段列表 FROM 表名 WHERE 条件列表;
常用的比较运算符如下:
常用的逻辑运算符如下:
将一列数据作为一个整体, 进行纵向计算.
SELECT 聚合函数(字段列表) FROM 表名;
注意: null值不参与聚合函数运算
SELECT 字段列表 FROM 表名[WHERE 条件] GROUP BY 分组字段名[HAVING 分组后过滤条件];
执行时机不同: where是分组之前进行过滤, 不满足where条件, 不参与分组; 而having是分组之后对结果进行过滤.
判断条件不同:where不能对聚合函数进行判断, 而having可以.
执行顺序: where > 聚合函数 > having
分组之后, 查询的字段一般为聚合函数和分组字段, 查询其他字段无任何意义
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;
ASC:升序(默认值)
DESC:降序
如果是多字段排序, 当第一个字段值相同时, 才会根据第二个字段
SELECT 字段列表 FROM 表名 LIMT 起始索引, 查询记录数;
起始索引从0开始, 起始索引= (查询页码-1)* 每页显示记录数
分页查询是数据库的方言, 不同的数据库有不同的实现, Mysql中是limt
如果查询的是第一页数据 , 起始索引可以直接省略, 直接简写成limit 10
- SELECT
- 字段列表
- FROM
- 表名列表
- WHERE
- 条件列表
- GROUP BY
- 分组字段列表
- HAVING
- 分组后条件列表
- ORDER BY
- 排序字段列表
- LIMT
- 分页参数
-
- 编写顺序

- 执行顺序
-
- FROM
- 表名列表
- WHERE
- 条件列表
- GROUP BY
- 分组字段列表
- HAVING
- 分组后条件列表
- SELECT
- 字段列表
- ORDER BY
- 排序字段列表
- LIMT
- 分页参数

DCL英文全称是Data Control Language(数据控制语言, 用来管理数据库用户, 控制数据库的访问权限)
- USE mysql;
- SELECT * FROM user;
CREATE USER '用户名'@'主机名' IDENTIFIED '密码';
ALTER USER '用户名'@'主机名' IDECTIFIED WITH mysql_native_password BY '新密码';
DROP USER '用户名'@'主机名';
主机名可以使用%通配
这类sql开发人员操作的比较少, 主要是DBA(Database Administrator)使用
SHOW GRANTS FOR '用户名'@'主机名';
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
多个权限之间, 使用逗号分分隔
授权时, 数据库名和表名可以使用*进行适配, 代表所有
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。