首页 > 数据库 >mysql基础知识

mysql基础知识

时间:2024-08-10 21:58:59浏览次数:15  
标签:name 基础知识 dept emp mysql where id select

MySql基础知识#

1.创建数据库:

create database mydata;(你所要建的数据库名)

2.使用数据库

use mydata;(说明:在使用数据库的前一定要加这个use语句,否则会出现没有数据库被选择)

3.查看所有数据库

show databases;

4.查看该数据库的所有的表名

show tables;

5.删除数据库

 drop database mydata;(直接删除数据库,不检查是否存在)
 drop database if exists mydata;(删除数据库,如果存在的话,可以避免报错)

6.创建数据库的表

create table users(
id int auto_increment primary key,
username varchar(50) not null,
email  varchar(100) not null,
dldate  date
);

说明:id: 用户 id,整数类型,自增长,作为主键。dldate:用户登录时间,日期类型。

7.插入数据

insert into users values(1001,'kiki','[email protected]','2003-1-6');

8.查询数据

查询用户的所有的信息

 select * from  users;

从用户的表中查询特定列的所有行

 select username,email from users;

添加 ORDER BY 子句,按照某列的升序排序

select * from users order by dldate;

添加 ORDER BY 子句,按照某列的降序排序

select * from users order by dldate desc;

9.where子语句

选择月收入大于5000的职员

select * from  employee where salary>=5000;

模糊查询用like。__:匹配任意一个字符,% :用于匹配0个或者多个字符
该语句的意思是:选择所有姓氏以k开头的顾客:

select * from customers where xing like 'k%';

In关键字
可以在查询中测试某个列的值是否等于列表中的任何一个值。
该语句的意思是查找所有来自美团的订单,其中有一个订单表 Orders 和一个公司信息表 Companies。

select * from orders where company_id in(select id from companies where company_name='美团';

between条件

select * from  orders where order_date between '2023-1-1'and '2024-5-9'

10.update语句

update 语句可用来修改表中的数据,
update 表名称 set 列名称=新值 where 更新条件;

将邮箱为[email protected]的姓名改成“小王”,职位改为主管

update employee set name="小王", status="主管" where email="[email protected]"

将所有人的工资加一千元:

update employee set salary=salary+1000;

11.delete语句

delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除。
delete from 表名称 where 删除条件;
删除 id 为 007 的员工信息:

 delete from employee where id=007;

删除所有年龄小于 21 岁的数据:

delete from employee  where age<20;

删除表中的所有数据:

delete from employee;

12.union语句

UNION 语句:用于将不同表中相同列中查询的数据展示出来;(不包括重复数据):
SELECT 列名称 FROM 表名称 UNION SELECT 列名称 FROM 表名称 ORDER BY 列名称;

select country from website union select country  from  apps order by country;
SELECT country FROM website:这个查询从 website 表中选择 country 列的所有值。

UNION:将上述查询的结果与下一个查询的结果合并。

 SELECT country FROM apps:这个查询从 apps 表中选择 country 列的所有值。

ORDER BY country:对最终合并后的结果集按照 country 列的值进行升序排序。
UNION ALL 语句:用于将不同表中相同列中查询的数据展示出来;(包括重复数据):

SELECT 列名称 FROM 表名称 UNION ALL SELECT 列名称 FROM 表名称 ORDER BY 列名称;

13.Group语句

1.GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。它能够提供有用的汇总信息。
2.使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录:

 select name,count(*) from employee group by name;

14.创建用户itcast,只能在当前主机localhost访问,密码123456

create user 'itcast'@'localhost' identified by '123456';

创建用户haha,可以在任意主机访问该数据库,密码123456

create user 'haha'@'%' identified by '123456';

修改用户haha的密码为0123;

alter user 'haha'@'%' identified with mysql_native_password by '0123'

删除用户

drop user 'haha' @'主机名';

15.权限控制
查询权限:

show grants for 'itcast'@'localhost';

授予权限:

grant all on itcast.* to 'itcast'@'localhost';

撤销权限:

revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';     

16.字符串
concat:字符串拼接

select concat ('hello','mysql');

lower,upper转小写,和大写:

select lower('HELLO');

lpad,rpad左填充,右填充

select lpad('01',5,'-');(输出结果是---01)

trim的作用去掉首尾的空格

select trim ('hello word');

17.数值
ceil向上取整:

select ceil(2.2);输出结果3

floor向下取整:

select floor(2.2);

round四舍五入:

 select round(2.345,2);输出结果2.35

通过数据库的函数,生成一个六位数的随机验证码

select lpad(round(rand()*1000000,0),6,'0');

18.日期时间函数

 select curdate();(当前日期)

 select curtime();(当前时间,不包括日期)

 select now();(既有当前时间,又有日期)

 select date_add(now(),INTERVAL 70 YEAR);往后推迟七十年。

 select dateiff('2020-10-4','2020-10-5');(两个指定日期相差的天数,说明:第一个时间减去第二个时间)

查询所有员工入职天数,并根据员工入职天数倒序排序:

select name,dateiff('curdate',entrydate) as 'entrydays' from emp order by entrydays desc;

as的用法:

select name as '手机支架'~;用法旧列名as新列名

select * ,(price* discount) as '实际价格' from cellphone;(列名1运算符列名2as新列名)

19.流程函数

isfull函数(如果第一个是null值,则返回default,如果是’',则返回空值:

select isfull(null,'default')//返回default

case(当)when(是)then(返回) else end
查询emp表的员工姓名和工作地址(北京,上海一线,其他二线)

select
  name,
  (case workadress when '北京' then '一线城市' 
  when '上海' then '一线城市' else '二线城市' end) 
  as '工作地址' from emp;

20.约束
如何根据规定或者约束创建表,详细解答:
在这里插入图片描述

create table user{
id int primary key auto_increment comment'主键',
name varchar(10) not null unique comment'姓名',
age int check( age>0 &&age<=120 coment'年龄',
status char(1) default '1' comment'状态',
 gender char(1) comment '性别'
 )comment '员工信息表';

如何给表添加外键:
alter table 表名 add constraint 外键名称 foreign key (外键字段名) reference 主表(主表列名);
如何删除外键:
alter table 表名 drop foreign key 外键名称;
21.内连接外连接
隐式内连接演示:

select emp.name,dept.name from emp,dept where emp.dept_id=dept.id;
==
select e.name,d.name from emp e,dept d where e.dept_id=d.id;

显示内连接演示:
select 字段列表 from 表1(inner)join 表2 on 连接条件…;

select e.name,d.name from emp e inner join dept dept d
on  e.dept_id=d.id;  

外连接:
左外连接:
select 字段列表 from 表1 left[outer] join 表2 on 条件…;
1.查询emp表的所有数据,和对应的部门信息

select e.*,d.name from emp e left outer join dept d on e.dept_id=d.id;

右连接:
2.查询dept表的所有数据,和相对应的员工信息:

select d.*,e.* from emp e right outer join dept d on e.dept_id=d.id;

自连接:
select 字段列表 from 表A 别名A join 表A 别名B on 条件
1.查询员工及其所属领导的名字:

 select a.name ,b.name from emp a, emp b where a.id=b.manage_id;

2.查询所有员工emp及其领导的名字emp,如果员工没有领导,也需要查询出来。

 select a.name '员工',b.name '领导' from emp a left join emp b on a.manage=b.id;

22.子查询
列查询:查询比财务部所有人工资都高的员工信息
1.查询所有财务部人员工资

select id  from dept where name='财务部';
select salary from  emp  where dept_id=( select id  from dept where name='财务部')

2.比财务部所有人工资都高的员工信息

select * from emp where salary >all(select salary from  emp  where dept_id=( select id  from dept where name='财务部');

表子查询:

1.查询与"lili","haha"的职位和薪资相等的员工信息;
首先是查询叫这两个名的职位和薪资,其次查询与之相等的员工信息。

select * from emp where (job,salary)in (select job,salary from emp where name='lili' or name='haha');

2.查询入职日期是“2026-01-01”之后的员工信息,及其部门信息
首先是查员工信息,再查询部门信息:

select e.*,d.* from (select * from emp where entrydate>'2006-01-01') e left join dept d on  e.dept_id=d.id;

练习
1.查询低于本部门平均工资的员工信息
*首先是先查询指定部门的平均薪资的员工信息

select avg(e1.salary) from emp e1 where e1.dept_id=1;

*其次是查询低于本部门的员工信息。

select *,(select avg(e1.salary) from emp e1 where e1.dept_id=1) as '平均' from emp e2 where e2.salary<select avg(e1.salary) from emp e1 where e1.dept_id=1;

2.查询所有的部门信息,并统计部门的员工人数

select count(*) from emp where dept_id=1
select d.id,d.name,(select count(*) from emp  e where e.dept_id=d.id)    as '人数'from dept d;

23.事务

select @@autocommit;–自动提交

set @@autocommit = 0; – 设置为手动提交

commit;—提交事务
rollback;—回滚事务//程序执行出错则利用回滚事务。
– 方式二
– 转账操作 (张三给李四转账1000)
start transaction ;

– 1. 查询张三账户余额
select * from account where name = ‘张三’;

– 2. 将张三账户余额-1000
update account set money = money - 1000 where name = ‘张三’;

– 3. 将李四账户余额+1000
update account set money = money + 1000 where name = ‘李四’;

– 提交事务
commit;
在这里插入图片描述

标签:name,基础知识,dept,emp,mysql,where,id,select
From: https://blog.csdn.net/weixin_73585495/article/details/140929370

相关文章

  • mysql load data file 批量导入数据
    mysql大量数据导入记录工作需要将大量数据导入到mysql中,但是数据量很大且几十个文本数据,每次导入的数据量有限制,所以需要分批导入。为了快速导入记录下使用loaddatainfile方式。1.SQL入数据语句先将数据传入/var/lib/mysql/test/路径mysql>loaddatainfile"/var/li......
  • MYSQL导出数据和导入数据命令
    MYSQL导出数据和导入数据命令网上也很多,我还是记录一下在我的博客里面,自己好查看MYSQL导出数据命令1.导出整个数据库mysqldump-u用户名-h数据库IP地址-p密码数据库名>备份的名称.sql测试账号如下:数据库名:web_user数据库IP:192.168.8.110用户名:root密码:root导出整......
  • mysql优化-索引失效场景
    1.索引字段不独立索引字段进行了表达式计算事先计算好表达式的值,再传过来,避免在SQLwhere条件=的左侧做计算select*fromemployeeswhereemp_no+1=10003;select*fromemployeeswhereemp_no=10002;索引字段是函数的参数预先计算好结果,再传过来,在where条件的......
  • MySQL基础详解(2)
    文章目录多表查询MySQL函数数字函数字符串函数日期函数高级函数使用Python操作MySQL1、安装第三方模块pymysql2、操作MySQLMySQL中的多表查询是数据库操作中非常常见且重要的一个环节,多表查询是数据库查询中非常强大的功能,能够让你根据需要从多个表中提取和组合数......
  • MySQL基础详解(1)
    文章目录Sql1.什么是Sql2、SQL通用语法3、SQL分类DDL:操作数据库、表3.1操作数据库:CRUD3.2操作表CRUDDML:增删改表中数据1.添加数据:2.删除数据:3.修改数据:DQL:查询表中的记录1.语法:2.基础查询3.条件查询4.排序查询其他函数5.聚合函数6.分组查询7.分页查询:DCL:管理用户......
  • MySQL的安装
    文章目录在线安装方式离线安装方式1、卸载已有的MySQL文件2、安装mysql3、后续命令修改字符集MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,后来被SunMicrosystems收购,并最终归属于Oracle公司。MySQL因其高性能、可靠性、扩展性和安全性而广......
  • MySQL高级知识-----Explain
    Explainexplain(执行计划),使用explain关键字可以模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。explain主要用于分析查询语句或表结构的性能瓶颈。1.explain的作用通过explain+sql语句可以知道如下内容:1.表的读取顺序。(对应id)......
  • 【书生大模型实战营(暑假场)闯关材料】入门岛:第1关 Linux 基础知识
    【书生大模型实战营(暑假场)闯关材料】入门岛:第1关Linux基础知识1.使用VScode进行SSH远程连接服务器2.端口映射及实例参考文献这一博客主要介绍使用VScode进行服务器远程连接及端口映射。1.使用VScode进行SSH远程连接服务器安装VScode,添加extensionRemote-SSH。......
  • MySQL实战攻略
    1.数据库概述1.1聊聊数据库数据库是一门独立的学科,只要是做软件开发的,数据库都要学。数据库(电子化的文件柜)是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。它的存储空间很大,可以存放百万条......
  • Ubuntu24.04安装 Mysql 并修改root密码 + 配置
    参考文章:Ubuntu安装MySQL一、下载并安装MySQL1、安装mysql服务端yammie@my-pc>/opt$sudoapt-getinstallmysql-server2、安装mysql客户端yammie@my-pc>/opt$sudoapt-getinstallmysql-client3、安装程序编译时连接的库yammie@my-pc>/opt$sudoapt-......