MySQL:数据库基础

本文介绍了MySQL数据库的基础知识,包括安装、启动、命令行连接、SQL语言(DDL、DML、DQL、DCL)以及关系型数据库与NoSQL的区别。详细讲解了创建数据库、表、字段、执行增删改查操作和权限管理等内容。
摘要由CSDN通过智能技术生成

黑马程序员:MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括华为开发者学堂icon-default.png?t=N7T8https://developer.huawei.com/consumer/cn/training/course/mooc/C101673420865595872?refresh=1692948615051&

    倍速播放:Console

        document.querySelector("video").playbackRate="3" 

数据库概念

  • DB - Database 数据库
  • DBMS - Database Management System 数据库管理系统
    • 关系型数据库 RDBMS:Oracle(收费)、MySQL
      • 使用表结构存储数据,格式统一 ;使用SQL语句操作;在磁盘中存储数据
    • 非关系型数据库 NoSQL
      • 数据结构灵活,伸缩性强
  • SQL - Structured Query Language 结构化查询语言
  • MySQL (https://www.mysql.com/
    • MySQL community 社区版免费
      • 启动:运行→services.msc→找到MySQL80,选择启动停止(默认开机自启)
        • 命令行:
          •  net stop mysql80
          •  net start mysql80
      • 连接:MySQL x.x Command Line Client
        • 命令行:mysql [-h 127.0.0.1] [-p 3306] -u root -p  (需要配置环境变量
      • 图形化界面:Sqlyog、Navicat、DataGrip

                        

SQL通用语法

分号结尾,不区分大小写,注释: #,多行注释:/*CONTENT*/

  • DDL - Data definition language 定义语句:定义表、字段、数据库

数据库
创建

create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];

utf8(三个字节)/ utf8mb4(默认,四个字节)

查询

查询所有:show databases;

查询当前数据库:select database();

删除drop database [if exists] 数据库名;
使用use 数据库名;
创建表

create table 表名(

        字段1 类型 [comment '字段注释1'],

        字段2 类型 [comment '字段注释2']

) [comment '表注释'];

类型:tinyint unsigned / int / float / double(位数,小数位数) /

           定长字符串 char(1) / 变长 varchar(10)

           二进制数据 blob / 长文本数据 text

           日期 date / time / year / datetime / timestamp

                

查询表

查询所有:show tables;

查询表结构:desc 表名;

                       select * from 表名;

查询注释:show create table 表名;

修改表名alter table 表名 rename to 新表名
删除表

drop table [if exists] 表名;

truncate table 表名; #删除表中数据并重新创建空表

字段
添加字段alter table 表名 add 字段名 类型(长度) [comment '字段注释'] [约束];
修改字段

修改数据类型:alter table 表名 modify 字段名 类型(长度) 

修改字段名&类型:alter table 表名 change 旧字段名 新字段名 类型(长度)  comment

删除字段alter table 表名 drop 字段名
  • DML - Data manipulation language 操作语言:对数据库中表的数据进行增删改

添加

指定字段:insert into 表名 (字段1,字段2,...) values (值1,值2,...);

全部字段:insert into 表名 values (值1,值2,...);

批量添加:insert into 表名 (字段1,字段2,...) values (值1,值2,...) , (值1,值2,...) , ...;

                  insert into 表名 values (值1,值2,...) , (值1,值2,...) , ...;

修改

update 表名 set 字段名1 = 值1, 字段名2 = 值2, ... [where 条件]; --没有where则修改字段的全部内容

update empoly set workid = lpad(workid, 5, '0');

删除delete from 表名 [where 条件];
  • DQL - Data query language 查询语言

查询

select [distinct #去除重复记录]

        字段列表(* #所有字段)

from       

        表名列表

where

        条件列表,eg: where name like '___'

         

        

group by

        分组字段

having

        分组后条件列表

order by

        字段1 排序方式1, 字段2 排序方式2

        # ASC:升序,DESC:降序,按字段顺序排序

limit  #分页查询

        起始索引, 查询记录数

        #起始索引从0开始,=(查询页码-1)*每页记录数

eg:

select workaddress, count(*) from emp
where age between 20 and 50 and gender = '男' and name like '___' group by workaddress 
having count(*)>=3
order by age ASC, entrydate DESC limit 5;
聚合

select 聚合函数 (字段 / *) from 表名

count 计数 / max / min / avg / sum,NULL不参与计算

  • DCL - Data control language 控制语言:控制用户和访问权限(主要由DBA使用 database administrator)

控制用户
查询用户

use mysql;

select * from user;

创建用户

create user  '用户名'@'主机名' identified by '密码';

主机名'%'表示用任意主机访问

修改用户alter user '用户名'@'主机名' identified with mysql_native_password by '新密码';
删除用户drop user '用户名'@'主机名';
控制权限all, all privieges 所有权限;select 查询数据;insert 插入数据;update 修改数据;delete 删除数据;alter 修改表;drop 删除数据库/表;create 创建数据库/表
查询权限show grants for '用户名'@'主机名';
授予权限grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
撤销权限revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
  • 函数:select 函数名(参数)

字符串函数 
concat(str1,str2,...)

字符串拼接

lower(str)

字符串转为小写

upper(str)

字符串转为大写

lpad(str,n,pad)用pad填充str左边,达到n个字符长度
prad(str,n,pad)用pad填充str右边,达到n个字符长度
trim(str)去掉字符串头部和尾部空格(不去除中间
substring(str,start,len)返回str从start开始len个长度的字符串
数值函数
ceil(x)向上取整
floor(x)向下取整
mod(x,y)返回模(取余)
rand返回0~1随机数
round(x,y)x的四舍五入,保留y位小数
日期函数
curdate() / curtime() / now()返回当前日期/时间/日期和时间
year(date) / month(date) / day(date)获取年份/月份/日期
date_add(date,interval expr type)

返回date加上expr后的时间(type:year/month/day

eg: date_add(now(), interval 30 day)

datediff(date1,date2)返回date1和date2之间间隔天数(date1-date2)
流程函数
if(value,t,f)如果value,则t,否则f
ifnull(value1,value2)如果value1不为空,则value1,否则value2

case when [val1] then [res1] ...

else [default] end

如果val1,则res1,...,否则default

eg: select name,

        (case workaddress when 'beijing' then '一线' when '上海' then '一线' else '二线' end)  '工作地址'

from emp;

case [expr] when [val1] then [res1]...else [default] end如果expr=val1,则res1,...,否则default
  • 约束

  • 约束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值