mysql 查缺补漏

下述部分内容来自
ACID
DCL
mysql
我只是做了一个总结、若侵则删。

DB、DBMS、SQL

DB(database)

长期保存在计算机的存储设备上,按照一定规则组织起来,可以被用户或应用共享的数据集合。

DBMD(database management system)

一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。

SQL(Structure Query Language)

构化查询语言。关系型数据库中进行操作标准语言。编程语言。
SQL对大小写不敏感;结尾需要使用分号

SQL的四大组成

名称 作用
DDL(Data Definition Language)数据定义语言 用来定义数据库对象:库、表、列等。包括创建表,修改表,删除表。
DML(Data Manipulation Language)数据操纵语言 用来定义数据库记录:是对表中数据的操作。包括插入,更新,删除数据
DCL(Data Control Language )数据控制语言 用来定义访问权限和安全级别
DQL(Data QueryLanguage)数据查询语言 用来查询记录(数据):只有SELECT语句

DDL(Data Definition Language)数据定义语言

DDL操作数据库

创建数据库
CREATE DATABASE 数据库名称; – 创建数据库

CREATE DATABASE 数据库名 SET GBK; – 创建数据库并设置为gbk编码格式

CREATE DATABASE 数据库名 SET GBK COLLATE gbk_chinede_ci; – 创建一个使用gbk字符集,并带校对规则的数据库

查询数据库

SHOW DATABASES; – 查看当前数据库服务器中的所有数据库

SHOW CREATE DATABASE 数据库名; --查看创建数据库时的定义信息

删除数据库

DROP DATABASE 数据库名; – 删除指定数据库

修改数据库

ALTER DATABASE 数据库名 CHARACTER SET utf8; – 将数据库的字符集改为utf8

数据库编码

character_set_client为客户端编码方式;

character_set_connection为建立连接使用的编码;

character_set_database数据库的编码;

character_set_results结果集的编码;

character_set_server数据库服务器的编码;

如果数据乱码,可以show variables like ‘character%’; 查看编码,如果不为utf8,自行百度如何解决。

DDL操作数据表

在创建表格之前需要先选择表格创建的数据库,所以需要选择数据库:

USE 数据库名; – 使用数据库

SELECT DATABASE(); – 选中数据库

创建数据表
语法: CREATE TABLE 表名(

字段1 字段类型,

字段2 字段类型,

字段n 字段类型

);

常用数据类型:

int:整型

double:浮点型;

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

varchar:可变长度字符串类型;

text:字符串类型;

blob:字节类型;

date:日期类型,格式为:yyyy-MM-dd;

time:时间类型,格式为:hh:mm:ss

timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值

datetime:日期时间类型 yyyy-MM-dd hh:mm:ss

常用操作 (默认表为employee) 代码
显示当前数据库中所有表 SHOW TABLES;
查看表的字段信息 DESC employee;
在表中插入一个image列,此列为字节类型(插入列的时必须指定列的类型) ALTER TABLE employee ADD image BOLB;
修改job列,使其长度为60 ALTER TABLE employee MODIFY job VARCHAR(60);
删除image列,一次只能删一列 ALTER TABLE employee DROP image;
表名改为user RENAME TABLE employee TO user;
查看表格的创建细节 SHOW CREATE TABLE employee;
修改表的字符集为gbk ALTER TABLE employee CHARACTER SET GBK;
列名name修改为username ALTER TABLE employee CHANGE name username VARCHAR(100);
删除表 DROP TABLE emoloyee;

DML(Data Manipulation Language)数据操纵语言

DML是对表中的数据进行增、删、改的操作

INSERT增加操作:
插入一条记录的语法:

INSERT INTO 表名(字段1,字段2,…) VALUES(值1,值2,…);

插入操作中要注意:字段和值要一一对应,字段相当java中的形参,值相当于实参,值数可以少于字段数,但不能多。插入空值使用null。插入字符串和日期需要使用单引号括起来。

UPDATE更新操作:
语法: UPDATE 表名 SET 列名1=列值1,列名2=列值2,… WHERE 列名=列值;
在这里插入图片描述
DELETE删除操作:

语法:DELETE FROM 表名 (WHERE 列名=值);
在这里插入图片描述

DQL(Data QueryLanguage)数据查询语言

数据库执行DQL语句不会对数据进行改变,二十让数据库发送结果集给客户端。查询发挥的结果集是一张虚拟表。

基本语法: SELECT 列名 FROM 表名

语法:

SELECT selection_list /要查询的列名称/

FROM table_list /要查询的表名称/

WHERE condition /行条件/

GROUP BY grouping_columns /对结果分组/

HAVING condition /分组后的行条件/

ORDER BY sorting_columns /对结果分组/

LIMIT offset_start, row_count /结果限定/

条件查询

条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:

=、!=、<>、<、<=、>、>=;
BETWEEN…AND;
IN(set);
IS NULL; IS NOT NULL
AND;
OR;
NOT;
说明:

<>的作用与!=的作用完全相同,只是<>出现的比较早。

BETWEEN…AND 还可以查日期的范围

IN中的参数为查询范围,各值之间用逗号隔开

IS NULL 是进行非空判断,与之相对的是IS NOT NULL

模糊查询(LIKE)
模糊查询使用通配符补充模糊地方。通配符有两个:’_‘表示一个任意字符,’%'表示任意多个字符。使用模糊查询需要用到关键字:LIKE。

举例:(比如我们要找的是s开头后面两位任意,第四位为0后面任意长度的学生姓名~)

SELECT * FROM emp WHERE sname LIKE 's__0%';

字段控制查询(DISTINCT)
比如我们要查emp表中sal,想了解一下员工的薪水档次都有那些,就不想看每个人的薪水,字段控制不要查询重复的薪水:

SELECT DISTINCT sal FROM emp;

排序(ORDER BY)
ASC:升序(默认值)

DESC:降序

分组查询
比如说我们需要按照部门来查询每个部门的工资和,就需要按照部门来分组。

子句:GROUP BY

查询每个部门的编号,人数以及每个部门的工资和:

SELECT deptno,COUNT(*) num,SUM(sal) SUM FROM emp GROUP BY deptno ;

子句:HAVING 作用是分组后对数据进行过滤,区别于WHERE

聚合函数

聚合函数是用来做纵向运算的函数。

COUNT():统计指定列不为NULL的记录行数;

MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;(字典比较)

MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;(字典比较)

SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

MySQL方言——LIMIT

LIMIT 用来限定查询结果的起始行以及总行数。

与编程语言相同,这里的起始行索引也是从0开始的。

从0行开始查询5行记录:

SELECT * FROM emp LIMIT 0,5;

查询代码的书写顺序和执行顺序

查询语句的书写顺序:SELECT-FROM-WHERE-GROUP BY-HAVING-ORDER BY-LIMIT

查询语句的执行顺序:FROM-WHERE-GROUP BY-HAVING-SELECT-ORDER BY-LIMIT

DCL(Data Control Language )数据控制语言

用户管理

查询用户
  
  MySQL把用户的数据存放在 “mysql” 数据库的 “user” 表中。

SELECT * FROM user;
  
创建用户

CREATE USER ‘用户名’@‘主机名’ IDENTIFIED BY ‘密码’; /*
    主机名为 localhost 时仅限本地登陆,填写 % 时任何机器都可以登陆 */

删除用户
  
  DROP USER ‘用户名’@‘主机名’;

修改用户密码
  
  UPDATE USER SET PASSWORD = PASSWORD(‘新密码’) WHERE USER = ‘用户名’; – 普通方式
  
  SET PASSWORD FOR ‘用户名’@‘主机名’ = PASSWORD(‘新密码’); – 特有的简化方式
  
 重置 root 用户密码
 
1) 命令提示符在管理员模式下停止 MySQL 服务: net stop mysql

2) 管理员模式下使用无验证方式启动MySQL服务: mysqld --skip-grant-tables

3) 开启新的命令行窗口进入MySQL: mysql

4) 进入 ‘mysql’ 数据库: USE mysql;

5) 使用修改用户密码语句对root密码进行重置。

6) 启动"运行"窗口,运行命令结束"mysqld"进程: taskkill /im mysqld.exe /f

7) 命令提示符在管理员模式下启动 MySQL 服务: net start mysql

8) 可以用新密码登陆 root 用户。

权限管理

查询用户权限
  
  SHOW GRANTS FOR ‘用户名’@‘主机名’;

授予权限
  
  GRANT 权限列表 ON 数据库名.表名 TO ‘用户名’@‘主机名’;
  
  GRANT ALL ON . TO ‘用户名’@‘主机名’; – 使用通配符给用户授予全部权限

撤销权限
  <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值