数据库

本文详细介绍了MySQL数据库的管理,包括启动和关闭服务器、数据类型以及表的操作。重点讲解了SQL语言的四大类别:DDL、DML、DCL和DQL,如创建、修改和删除数据库对象,以及数据的增删改查。还涵盖了权限管理和用户授权,以及查询操作如排序和模糊查询。此外,讨论了数据类型的使用和浮点数的范围。
摘要由CSDN通过智能技术生成

常见数据库

oracle,mysql,sql server,DB2

RDBMS:Relational database management system关系型数据库管理系统 管理员+仓库

在这里插入图片描述

  • RDBMS: 管理员(manager) + 仓库(database)
  • database = N*table
  • table = 表结构 + 表记录

MySQL

  • 使用管理员打开cmd
    • net start mysql :启动服务器
    • net stop mysql :关闭服务器
  • 在bin目录的mysqld.exe是服务器程序,mysql.exe是客服端程序
  • my.ini是mysql配置文件
  • 启动mysql客户端:mysql -uroot -p123456 -hlocalhost
  • 推出mysql客户端:exit/quit

SQL语言(Structured Query Language)分类

  • 不同RDMS都有相同的SQL,但也有各自特有的语言
  • DDL(Data Definition Language):数据大一语言,用来定义数据库对象:库,表,列等;
  • DML(Date Manipulation Language):数据库操作语言,用来定义数据库记录:增删改查
  • DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别,创建用户之类的;
  • DQL(Data Qurey Language):数据查询语言,用来定义查询记录

具体语法

  • show databases; 展示所有数据库名称
  • use 数据库名; 进入数据库
  • CREATE DATABASE 数据库的名称; 创建数据
  • CREATE DATABASE if not exists mybd3; 创建数据库
  • DROP DATABASE if exists mybd3; 删除数据库

数据类型

类型大小范围(有符号)范围(无符号)用途
TINYINT1 byte(-128,127)(0,255)小整数值
SMALLINT2 bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度 浮点数值
DOUBLE8 bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度 浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

DDL表的操作:

  • create table tb_stu(number char(11), name varchar(50),age int, gender varchar(10));
  • show tables; 展示所有的表;
  • desc 表示; 展示表的具体名称
  • 修改表:
    添加列:
    mysql> alter table tb_stu
      -> add(
      -> education varchar(50)
      -> );
    
    修改表:
    mysql> alter table tb_stu
      -> modify 列 列类型;
    
    删除列:
    mysql> alter table tb_stu
      -> drop;
    
    修改表名称:
    mysql> alter table tb_stu
      -> rename to 表名;
    

DML:对表增删改

  • 插入数据:
mysql> insert into stu(
    -> number,name,age,gender #对应的列名相同,可以减少(没有指定的列,默认值为NULL)
    -> )
    -> values(
    -> '202018','金科','18','男'
    -> );
  • 修改数据
    修改一整列数据
update stu set age=18; #update stu set 列=18

加条件:

mysql> update stu set age=40
    -> where name='林俊杰'; # 条件where name='林俊杰'

between and

update stu set age=age+1 where age between 10 and 1000;

in

update stu set age=18 where name in('金科','JJ Lin');

is null

update stu set name='佚名' where name is null; # in not null

删除行

 delete from stu where name='佚名'; #不加where全部删除

DCL

  • 一个项目创建一个用户,一个项目队员的数据库只有一个;

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

  • 创建用户:

    • CREATE USER 用户名@IP地址 IDENTIFIED BY ‘密码’;
    create user jinzong53@localhost identified by '123456';
    
  • 用户授权

    • GRANT 权限1,… 权限n ON 数据库.* TO 用户名@IP地址;
      • 权限包括GRANT CREATE DROP INSERT UPDATE DELETE …
    • GRANT ALL ON 数据库.* TO 用户名@IP地址
    grant all on mybd3.* to jinzong53@localhost;
    
  • 撤销权限

    • revoke 权限1,…,权限n ON数据库.* FROM 用户名@IP地址
  • 查看权限

    • SHOW GRANTS FOR 用户名@IP地址
    • 查看指定用户的权限
  • 删除用户

    • DROP USER 用户名@IP地址

DQL查询操作

  • 对某一列去重复查询
select distinct deptno from emp;
  • 运算查询
select empno,ename,job,ifnull(mgr,'BOSS'),hiredate,sal,comm,deptno from emp;
  • 字符串拼接查询
    SELECT CONCAT(ROW_NAME,ROW_NAME,…) FROM TABLE_NAME;
select concat("我叫",ename,"我的工作是",job) from emp;
  • 列取别名
    SELECT ROW_NAME (AS) OTHER_NAME, ROW_NAME (AS) OTHER_NAME …FROM TABLE_NAME;
select concat("我叫",ename,"我的工作是",job) as 自我 from emp;
  • 模糊查询
    SELECT ROW_NAME FROM TABLE_NAME WHERE ROW_NAME LIKE ‘msg_’;# msg加任意一个字符。
    SELECT ROW_NAME FROM TABLE_NAME WHERE ROW_NAME LIKE ‘msg_’; # msg加任意数量的字符
mysql> select ename from emp where ename like 'a_';
Empty set (0.02 sec)
mysql> select ename from emp where ename like 'A_';
Empty set (0.00 sec)
mysql> select ename from emp where ename like 'A%';

-排序查询
SELECT * FROM TABLE_NAME ORDER BY ROW_NAME ASC/DESC;(asc是升序,desc是降序)

 select * from emp ORDER BY sal ASC,comm DESC;
 如果sal相同,则按comm降序排列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值