Mysql入门学习(一)

Mysql数据库学习(一)

数据库的基本的概述

  • 理解数据库:
    RDBMS= 管理员(manager) +仓库( database )
    database = N个table
    table:
    表结构:定义表的列名和列类型.
    表记录: 一行一行的记录.

安装mysql的基本的路径对应的操作

  1. MySQL安装成功后会在两个目录中存储文件:
    D:\Program Files\MySQL\MySQL Server 8.0.17: DBMS管理程序
    C:\ProgramData\MySQL\MySQL Server 8.0.17\data: DBMS数据库文件(卸载MySQL时不会删除这个目录,需要自己手动删除)
  2. MySQL重要文件
    D:\Program Files\MySQL\MySQL server 8.0.17\bin\myaql.exe: 客户端程序,用来操作服务器。但必须保证服务器已开启才能连接上!
    D:\Program Files\MySQL\MySQL Server 8.0.17\bin\mysqld.exe: 服务器程序,必须先启动它,客户端才能连接上服务器。
    D:\Program Files\MySQL\MySQL Server 8.0.17\bin\my.ini: 服务器配置文件
  3. C:\ProgramData\MySQL\MySQL server 8.0.17\data
    该目录下的每个目录表示一个数据库,例如该目录下有-个mysq1目录,那么说明你的DBMS中有一个名为mysql的database.
    在某个数据库目录下会有0~n个扩展名为frm的文件,每个frm文件表示一个table. 你不要用文本编辑器打开它,它是由DBMS来读写的!
  4. my.ini, MysQL最为重要的配置文件
    配置MySQL的端口:默认为3306,没有必要去修改它:
    配置字符编码:
    [client]下配置客户端编码: default-character-set=gbk
    [mysqld] 下配置服务器编码: character-set-server-utf8
    配置二进制数据大小上限:
    在[mysqld]下配置: max_ allowed. packet=8M

服务器基本操作

1.开启服务器(必须保证mysql为windows服务): net start mysql
查看进程表中是否存在: mysqld.exe进程 (存在)
2.关闭服务器(必须保证mysql为windows服务): net stop mysql
查看进程表中是否存在: mysqld.exe进程(不存在)

客户端的操作
cmd
1.登录服务器:mysql -u用户名 -p密码 -hlocalhost
u:用户名
p:密码
h:Ip地址
2退出服务器 exit或者quit

mysql的基本分类

  1. DDL (Data pefinition Language) :数据定义语言,用来定义数据库对象:库、表、列等,创建、删除、修改:库、表结构.
  2. DML (Data Manipulation Language) :数据操作语言,用来定义数据库记录(数据) ;增、删、改:表记录.
  3. DCL (Data Control Language) :数据控制语言,用来定义访问权限和安全级别;
  4. DQL(Data Query Language) :数据查询语言,用来查询记录(数据) .

DDL数据库操作(对表达结构的操作)

  1. 数据库
  • 查看所有数据库: SHOW DATABASES
  • 切换(选择要操作的)数据库: USE 数据库名
  • 创建数据库: CREATE DATABASE [IF NOT EXISTS] mydb [CHARSET utf8]
  • 删除数据库: DROP DATABASE [IF EXISTS] mydb
  • 修改数据库编码: ALTER DATABASE mydb1 CHARACTER SET utf8
  1. mysql数据类型
    int:
    整型
    double: 浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
    decimal: 浮点型,在表单钱方面使用该类型,因为不会出现精度缺失问题:
    char:
    固定长度字符串类型: char(255), 数据的长度不足指定长度,补足到指定长度!
    varchar:
    可变长度字符串类型:
    varchar (65535),zhangSan
    text (clob): 字符串类型:
    很小



    blob: 字节类型;
    很小



    date: 日期类型,格式为: yyy-MM-dd;
    time: 时间类型,格式为:hh :mm:33
    timestamp: 时间戳类型;

  2. 表操作

  • 添加列的操作
    ALTER TABLE 表名
    ADD(
    列名 列的类型
    );

  • 修改列的类型
    ALTER TABLE 表名
    MODIFY 列名 新的列类型;

  • 修改列的名称
    ALTER TABLE 表名
    CHANGE 原列名 新列名 列的类型;

  • 删除列
    ALTER TABLE 表名
    DROP 列名;

  • 修改表的名称
    ALTER TABLE 原表名
    RENAME TO 新的表名;

DQL数据库(对记录的操作)

  1. 插入数据
  • INTERT INTO 表名(列名1,列名2, … VALUES(列值1, 列值2, …);
    在表名后给出要插入的列名,其他没有指定的列等间与播入null值。所以插入记录总是播入一行,不可能是半行。在VALUES后给出列值,值的顺序和个数必须与前面指定的列对应
  • INTERT INTO表名VALUES(列值1, 列值2)
    没有给出要插入的列,那么表示插入所有列。
    值的个数必须是该表列的个数。
    值的顺序,必须与表创建时给出的列的顺序相同。.
  1. 修改数据
    UPDATE 表名 SET 列名1=列值1,列名2=列值2, … WHERE (条件)
    条件(条件可选的);
    条件必须是一个boolean类型的值或表达式;
    UPDATE t_ person SET gender=‘男’,age=age+1 WHERE sid=‘1’;
    运算符: =、!=、<>. >、< >=、BETWEEN…AND、 IN(…) 、IS NULL、NOT、 OR、AND;

  2. 删除数据
    DELETE FROM 表名 [WHERE条件];
    TRUNCATE TABLE表名: TRUNCATE是DDL语句, 它是先删除drop该表,再create该表。 而且无法回滚! ! !

注意点:
=,!=,<>,>,<,=>,<=,BETWEEN …AND,IS NULL,OR ,AND,NOT
其中需要注意几个预算符的操作是BETWEEN …AND是指的在什么的区间之间
IS NULl表示的是为空的意思,判断的语句,不能写成 =NULL ,这个表示的就是false的意思
NOT 就是否的意思
IN (,)这个里面表示就是指的是是一个条件的集合的操作

DCL数据库的操作

一个项目创建一个用户!一个项目对应的数据库只有一个
这个用户只能对这个数据库有权限,其他数据库你就操作不了

  1. 创建用户
  • 用户只能在指定的IP地址上登录
    由CREATE USER 用户名@IP地址 IDENTIFIED BY ‘密码’;
  • 用户可以在任意IP地址上登录
    中CREATE USER 用户名 @’%’ IDENIIFIED BY ‘密码’:
  1. 给用户授权
  • GRANT权限1, …,权限n ON数据库.* To 用户名@IP地址
    权限、用户、数据库
    给用户分派在指定的数据库上的指定的权隈
  • 给user1用户分派在mydb数据库上的create. alter. drop. insert. update. delete. select权限
    例如: GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE,SELECT ON mydb.* TO user1@localhost;
  • 给用户分派指定数据库上的所有权限
    GRANT ALL ON 数据库. * TO 用户名@IP地址;
  1. 撒销授权
  • REVOKE 权限1, …,权限n ON数据库.* FROM 用户名@IP地址:
    撤消指定用户在指定数据库上的指定权限
  • 撤消user1用户在mydb1数据库上的create. alter. drop权限
    例如: REVOKE CREATE, ALTER, DROP ON mydb1.* FROM u3er101ocalhost;
  1. 查看权限
  • 查看指定用户的权限
    SHOW GRANTS FOR 用户名@IP地址

5.删除用户

  • DROP USER 用户名@IP地址

基本操作:创建一个新的用户,并且对用户进行一系列的操作,授权和撤销权限,以及查看权限,删除用户之类的。

DQL数据库操作

  1. 字段(列)控制
    1)查询所有列
    SELECT * EROM 表名;
    –>其中" * "表示查询所有列
    2)查询指定列
    SELECT 列1 [, 列2,… 列N] FROM 表名;
    SELECI empno, ename, sal, comm FROM表名;

3)完全重复的记录只一次.
当查询结果中的多行记录-一模一样时,只显示一行。一般查询所有列时很少会有这种情况,但只查询一列(或几列)时,这总可能就大了!
SELECT DISTINCT .* 列1 [, 列2,…列N] FROM 表名;
SELECT DISTINCT sal EROM emp;
–>保查询员工表的工资,如果存在相同的工资只显示一次:
4)列运算

  • 数量类型的列可以做加、减、乘、除运算
    SELECT sal*1.5 FROM emp;
    SELECT sal+corm FROM erp;

  • 字符串类型可以做连续运算
    SELECT CONCAT(‘S’, sal) FROM emp;

  • 转换NULL值
    有时需要把NULL转换成其它值,例如com+1000时, 如果com列存 在NULL值,那么NULL+1000还是NULL,而我们这时希望把NULL当前o来运算.
    SELECT IENULL (comm, 0)+1000 FROM enp;
    IFNULL(comm, 0): 如果comm中存 在NULL值,那么当成0来运算。

  • 给列起别名
    你也许已经注意到了,当使用列运算后,查询出的结果集中的列名称很不好看,这时我们需要给列名起个别名,这样在结果集中列名就显示别名了
    SELECT IFNULL(comm, 0)+1000 AS 奖金 FROM enp;
    注意:其中AS可以省略

注意:如果操作的字段值字符串的类型,做运算会出现问题 任何的的数据和NULL 相加的话都会出现为空的情况,所以这个时候有一个操作 IFNULL(字段,0)进行运算的操作

  • 显示出无重复的操作
    SELECT DISTINCT* FROM 表名 全部
    SELECT DISTINCT age FROM 表名 指定的

  • 模糊查询
    SELECT *FROM 表名 WHERE 字段 LIKE ‘__’;
    SELECT *FROM 表名 WHERE 字段 LIKE ‘%’;
    需要注意的是_在这里是指的是查询的数据是存在比如:‘小_’第一个字为小,后面字为随意的 如果是2个下划线表示是指的是3个字小某某,百分号字指所做的为表示0-n未知的数字,%小%,表示的是模糊查询里面含有小字的数据

  • 排序查询:
    使用关键字: ORDER BY
    ASC 升序排序
    DESC降序排序
    还可以使用多列作为查询条件 :SELECT *FROM 表名 ORDER BY 字段 ASC ,字段DESC
    其中ASC升序是可以省略的

  • 聚合函数
    需要主要的在cunnt()这个表示一个行上面只要存在一个不是空的都算出来
    可以去查询某一列得的数据操作
    需要注意的是在count(1)表示第一行,无语法错误的,还有的就是大于总的列数,表示就是count(
    )的
    还可以进行联合的查询操作

1.COUNT( * ) 总的行数
[Count( * )表示取得所有记录,忽略null,为null值也会取得。]
COUNT(age) 获取age不为null的所有行数
采用count(字段名称),不会取得为null的纪录。
2.MAX(sal) 最大值
3.MIN(sal) 最小值
4.SUM(sal) 总和
5.AVG(sal) 平均值

  • 分组查询操作:GROUP BY
    查询的语句字段的类型,必须要和分组保持一致,并且这个后面的都跟的是聚合函数,因为其实聚合函数表示就组条件所计算出来的。
    需要注意的是一分组前判断条件和分组后的条件
    分组前的条件就是使用的WHERE 分组后的条件使用就是HAVING (组条件)
    例1:组条件
    以部门分组,查询每组记录数。条件为记录数大于3
    SELECT deptno, COUNT( * ) FROM emp GROUP BY deptno HAVING COUNT( * ) > 3; .

  • 语句执行的顺序
    select
    from
    where
    group by
    having
    order by

  • 方言查询
    主要分页查询的操作这个limt的操作,
    而且在这里的话,limt的操作中(查询的开始位置,查询的数目)
    *开始查询的位置=(当前页-1)每页的记录数

练习题

数据库
在这里插入图片描述
题目:
在这里插入图片描述

  1. SELECT *FROM tb_demo WHERE empno=30;
  2. SELECT enama,empno,deptno FROM tb_demo job=’销售员’;
  3. SELECT *FROM tb_demo WHERE comm>sal;
  4. SELECT FROM tb_demo WHERE comm>sal0.6;
  5. SELECT *FROM tb_demo WHERE (empno=10 AND job=’经理’) OR (empno=20 AND job=‘销售员’);
  6. SELECT *FROM tb_demo WHERE (empno=10 AND job=’经理’) OR (empno=20 AND job=’销售员’) OR ( job NOT IN(销售员,经理) AND sal=>20000)
  7. SELECT *FROM tb_demo WHERE comm is null AND comm<1000;
  8. SELECT *FROM tb_demo WHERE LIKE ‘___’;
  9. SELECT *FROM tb_demo WHERE LIKE ‘2000-%’;
  10. SELECT *FROM tb_demo ORDER BY empno ASC;
  11. SELECT *FROM tb_demo ORDER BY sal DESC ,hiredate ASC;
  12. SELECT deptno ,AVG(sal) FROM tb_demo GROUP BY deptno;
  13. SELECT deptno,count(*) FROM tb_demo GROUP BY deptno;
  14. SELECT job ,MAX(sal),MIN(sal),COUNT(*) FROM tb_demo GROUP BY job;

参考声明:黑马程序员学习资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值