mysql基础与操作语句

mysql库与表的基本概念

  • 什么是库
    顾名思义就是数据仓库的意思,存储着一定数据结构的数据,一个数据库中可能包含着若干个表,我们可以
    通过数据库提供的多种方法来管理数据库里边的数据。本质上mysql数据库是一个关系型数据服务管理系统
  • 什么是表
    我们所说的表就是数据表,每一张表是由行和列组成,每记录一条数据,数据表就增加一行。列是由字段名
    与字段数据属性组成,我们称之列为字段,每一个字段有着多个属性。例如是否允许为空、长度、类型等等

mysql的操作语句

  • 操作语句分为四类
    1.DDL 数据定义语言 (Data Definition Language) 例如:建库,建表
    2.DML 数据操纵语言(Data Manipulation Language) 例如:对表中的数据进行增删改操作
    3.DQL 数据查询语言(Data Query Language) 例如:对数据进行查询
    4.DCL 数据控制语言(Data Control Language) 例如:对用户的权限进行设置
  • 建库建表语句
    select database(); //查看当前在哪一个库中
    create database if not exists db2; // 判断数据库是否存在,不存在则建立,后面可跟default charset指定使用字符集
    show variables like 'character%' 查看当前mysql使用的字符集;
    //建表语句CREATE TABLE 表名 ( 字段名1 字段类型1 约束条件1 说明1, 字段名2 字段类型2 约束条件2 说明2, 字段名3 字段类型3 约束条件3 说明3 );
    例:
点击查看代码
copy
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
CREATE TABLE student ( id tinyint(5) zerofill auto_increment not null comment '学生学号', name varchar(20) default null comment '学生姓名', age tinyint default null comment '学生年龄', class varchar(20) default null comment '学生班级', sex char(5) not null comment '学生性别', unique key (id) )engine=innodb charset=utf8;;
  • 新增数据
    1.蠕虫复制
    insert into 表名1 select * from 表名2; ​ insert into 表名1(字段名1,字段名2) select 字段名1,字段名2 from 表名2;
    2.建表复制
    create table 表名1 as select 字段名1,字段名2 from 表名2; ​ create table emp as select empno ,ename from employee;
    3.一次性插入多个数据
    insert into 表名 (字段名) values (对应值1),(对应值2),(对应值3);
  • 修改与删除数据
    1.修改数据
    update 表名 set 字段名1=值1 where 字段名=值; ​ update 表名 set 字段名1=值1,字段名2=值2 where 字段名=值;
    2.删除数据
    delete from 表名 where 字段名=值; truncate table 表名; delete from 表名; drop table 表名;
    3.注意事项
点击查看代码
copy
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
面试时:面试官问在删改数据之前,你会怎么做? 答案:会对数据进行备份操作,以防万一,可以进行数据回退 面试时:面试官会问,deletetruncatedrop 这三种删除数据的共同点都是删除数据,他们的不同点是什么? delele 会把删除的操作记录给记录起来,以便数据回退,不会释放空间,而且不会删除定义。 truncate不会记录删除操作,会把表占用的空间恢复到最初,不会删除定义 drop会删除整张表,释放表占用的空间。 删除速度:drop > truncate > delete
  • 查询数据
    1.离散查询
    select * from employee where ename in ('猴子','林俊杰','小红','小胡');
    2.统计查询
    select concat(ename,' 是 ',job) as aaaa from employee;//concat函数: 起到连接作用
    3.exists型子查询
    eg:查询出公司有员工的部门的详细信息
copy
  • 1
  • 2
  • 3
select * from dept a where exists (select 1 from employee b where a.deptnu=b.deptnu); select * from dept a where not exists (select 1 from employee b where a.deptnu=b.deptnu); //能查出数据则返回true,反之则返回false

4.union查询
(1)两个select语句的查询结果的“字段数”必须一致;
(2)通常,也应该让两个查询语句的字段类型具有一致性;
(3)也可以联合更多的查询结果;
(4)用到order by排序时,需要加上limit(加上最大条数就行),需要对子句用括号括起来

copy
  • 1
  • 2
eg:对销售员的工资从低到高排序,而文员的工资从高到低排序 (select * from employee a where a.job = '销售员' order by a.sal limit 999999 ) union (select * from employee b where b.job = '文员' order by b.sal desc limit 999999);

数据控制语言

  • mysql之修改用户密码与忘记密码
    第一种修改密码:set password for 用户@ip = password('密码');
    第二种修改密码:mysqladmin -u用户 -p旧密码 password 新密码;
    第三种修改密码: update mysql.user set authentication_string=password('密码') where user='用户' and host='ip';
copy
  • 1
  • 2
  • 3
1.set password for root@localhost = password('root'); 2.mysqladmin -urootmysqladmin -uroot -proot password; 3.update mysql.user set authentication_string=password('root') where user='root' and host='localhost';
  • 忘记密码处理
    第一步:修改配置文件my.cnf (默认在/etc/my.cnf),在[mysqld]下面加上 skip-grant-tables (跳过权限的意思)
    第二步:重启mysql服务
    第三步:mysql -uroot -p 无需密码登录进入
    第四步:修改密码

  • mysql之创建新用户并限制ip登录
    1.创建用户的语法:create user 'username'@'host' identified by 'password';
    2.查看用户权限: select * from mysql.user where user='用户名'\G
    3.删除用户语法:drop user 'username'@'host';

  • mysql之权限授予与回收
    1.授权语法:grant 权限1,权限2..... on 数据库对象 to '用户'@'host' identified by 'password';

copy
  • 1
  • 2
  • 3
  • 4
//对没有的用户进行授权:创建一个新用户dog授予CDTU库的所有权限,登录密码123456,任何一台主机登录 grant all privileges on CDTU.* to 'dog'@'%' identified by '123456'; //对没有的用户进行授权:创建一个新用户cat授予CDTU库的employee表 查与修改权限,登录密码123456,任何一台主机登录 grant select,update on CDTU.employee to 'cat'@'%' identified by '123456'

2.回收语法:revoke 权限1,权限2..... on 数据库对象 from '用户'@'host';

copy
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
//回收pig用户的所有权限(注意:并没有回收它的登录权限) revoke all privileges on *.* from 'pig' @ '%'; flush privileges; //回收pig用户的所有权限(并回收它的登录权限) delete from mysql.user where user='pig'; flush privileges;

本文作者:菜鸟王999

本文链接:https://www.cnblogs.com/bigdata123/p/16317099.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   菜鸟王999  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起