欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql入门使用

程序员文章站 2022-05-30 09:13:06
...

mysql数据库

(1) 基本语法

  1. mysql数据库的定义; 有数据结构组成用于存储,管理数据仓库

    ​ 数据库: database

    ​ 数据表: table

    ​ 数据值: value

  2. 分类:

    1. 关系型数据库

      mysql , sqlserver , oracle,…

    2. 非关系型数据库

      redis,mongodb,…

  3. 配置环境变量

    在window 任何地方都可以直接操作mysql

    • 在右键 “我的电脑”
    • 选择"属性"
    • 左侧选择"高级系统设置"
    • 选项卡"高级"
    • 选择"环境变量"
    • 查看是否由 变量path
      有: 选择"编辑", 粘贴mysql目录地址
      没有选择: 新建,在粘贴mysql目录地址
      win7系统,在有缘path 值的最后面加分号;
      在粘贴mysql 目录地址
  4. 使用mysql

    1. 进入cmd

    2. 输入mysql -u root -p 回车

      -h 主机或者IP地址 -u用户名 -p密码

    3. 输入密码: wampserver

    分析: -h 地址为localhost 既可以省略否则必须填写

    ​ -u 用户名wampserver默认用户名为root

    ​ -p 密码 wapserver 默认密码为空 即可回车

  5. 基本语法

    每一条命令均已 分号 作为结束符

    mysql 命令均大写,不缺分大小写

  6. 数据库表添加的数据注意点

    • 最后一条字段,不要加 逗号
    • 字段名 即为信息
    • 字段类型
    • 字段属性

(2) 数据库-操作

数据库操作 功能 注意点
mysql -u 用户名 -p 回车 进入mysql
password: 回车进入mysql password 在wampserver中默认为空
set password = password ( ‘字符串’ ) 设置密码
show databases; 查询所有的库
create database `库名` 创建新的库
create database if not exists `库名`
default charset=utf8
创建新的库 完整写法 if not exists判断库名是否存在
default允许默认值 charset=编码
dorp database`库名` 删除数据库
use `库名` 使用数据库 在使用任何数据表之前,必须先选择好 数据库

例子:

这是建表语句 
create table if not exists `user`(
	`id`    	int	 	 	auto_increment primary key,
	`nickname`  varchar(20),
	`tel`   	char(11) 	uniqie not null,
	`pwd` 		char(32)	not null comment '加密32为密码',
	`sex`		tinyint(1)  default 1 comment'1-男 2-女',
	`birthday`  date,
	`address`	varchar(50),
	`status`	tinyint(1)  default 1 comment'1-** 2-禁用',
	`regtime`   int
)engine=myisam default charset=utf8;

(3) 数据表-操作

数据表基本操作 功能 注意点
show tables; 查询所有的表
drop table `表名` 删除数据表
desc `表名` 查看表结构
show crete table `表名` 查看建表语句(引擎)
**数据表操作 (增) ** 功能 注意点
INSERT INTO `表名` VALUES(值1,值2,…); 插入一条完整的数据 数据值的个数是 随着字段的个数
只可以使用单双引号
库名,表名,字段名只可以用反引号
INSERT INTO `表名`(字段名1,字段名2…) VALUES(值1,值2,…); 插入一条部分字段的数据 值的个数 要随着前面的字段名的个数, 保持一一对应
具有not null 属性的字段, 必须要添加值
auto_increment 是从记录+1, 而不是从最大字段值+1
INSERT INTO `表名`VALUES(值1,值2,…),(值1,值2,…),…; 插入多条完整数据
INSERT INTO `表名`(字段名1,字段名2,…) VALUES ( 值1,值2,…),( 值1,值2,…),…; 插入多条部分字段的数据
更新表中的数据 (改)
UPDATE 表名 SET 字段名1 =值1 , 字段名2= 值2 ; 更新 整表数据 可以设置整个表的某个字段的值 都设置成某个值
UPDATE 表名 SET 字段名1=值1, 字段名2 = 值2,… WHERE 条件 更新部分数据 设置更新部分数据, 可以根据条件判断
备份删除操作 (删) delete删数据 不影响 auto_increment 的记录
mysqldump -u 用户名 -p 库名 > 目标地址 备份数据表 mysqldump -u root -p s84 > C:/s84.sql
mysql -u 用户名 -p < 来源地址 导入数据库 mysql -u root -p s84 < C:/s84.sql
DELETE FROM `表名` 删除一张表中所有的数据 关键字顺序 不能随意颠倒
DELETE FROM `表名` WHERE 条件 删除一张表中的部分数据 where条件 可写可不写, 根据需求决定
DELETE FROM 表名 [WHERE 条件] ORDER BY 排序依据 LIMIT 行数 删除排序之后的前几条[满足条件]的数据 例: DELETE FROM user ORDER BY birthday DESC LIMIT 5 删除表中年纪最小的五个人
TRUNCATE TABLE `表名` 删除树结构 将表结构删除,相当于做了一次drop,然后重构一个新表与原表一模一样, auto_increment 会被重置
asc / desc 升序(默认) / 降序

(4).聚合函数

聚合函数 功能 注意点
select count( 字段名 ) 统计
select sum ( 字段名 ) 求和
select avg( 字段名 ) 平均值
select max (字段名) 最大值
select min( 字段名 ) 最小值
select concat (字段名或字符串, 字段名和字符串…) 字段字符拼接函数
select now( ) 现在的格式化时间
select unix_timestamp( ) 现在的时间戳
select version( ) 当前数据库版本
select mad(’ 123456 ') 查看加密之后的值

(5) 查询数据

select distinct | * | 字段名 | 表名.字段名 |字段名 as 别名

select 查询 有以下属性可以配合使用

配合select查询的属性
from 表名
where 条件 ( 分组之前的条件筛选)
group by 分组依据
having 筛选条件 (分组之后的条件筛选)
order by 排序依据
limit

注意: select 关键字顺序不能颠倒

以下是查询中的各种案例用法:

  1. 查询所有字段数据 : select * from 表名;

    select * from user;    -- 查询USER表中的所有字段
    

    * : 通配符,一般不推荐使用, 只有在需要查询全部字段时,方可使用,否则会降低效率.

  2. 查询 指定的字段 select 字段名1,字段名2 from 表名;

    select tel, pwd from user; --查询user表中电话与密码两个字段
    

    以下是配合where的一些用法

  3. 带条件查询 字段数据: select 字段名1,字段名2,..form 表名 where条件;

    select nickname, tel, sex, address --查询名字,电话,性别,住址
    from user  --在user表中
    where sex = 2   -- 性别为女的
    
  4. and 逻辑与 ----- or 逻辑或----- ! 取反

    select nickname, tel, sex, address--查询昵称,电话,性别住址
    from user
    where sex = 2 and status = 1 --当性别为2与状态为1时
    
  5. null 空 ---- is null 是否为空 ----- is not null 是否不为空

    select nickname, tel  -- 查询昵称与电话
    from user
    where address is null -- 地址为空
    
    select nickname, tel  --查询昵称电话
    from user
    where address is not null	--地址不为空
    
  6. 区间查询 between A and B [A,B] not between A and B <A或>B

    select nickname, birthday --查询字段名和生日
    from user
    where birthday between '2005-01-01' and '2015-12-31'
    -- 在字段名 birthday 其值在 区间内返回
    --  not between 则不再区间内返回
    
  7. in 操作 --判断是否在其中

    select nickname, address  --查询昵称,地址
    from user
    where address in ('老王隔壁', '召唤师峡谷') 
    --查询 地址为 老王隔壁 召唤师峡谷 在其的昵称和地址
    
  8. 分组 group by 分组依据

    select sex, count(`id`)  --查询性别 和 数量
    from user 				 -- 在user表中
    group by sex  			 -- 按照性别分组
    
  9. having 筛选条件 (在分组后使用) 一般配合group by 配合使用

    select dep, count(`id`) --查询部门 和数量
    from salary 			--在salary表中查询
    group by dep			--按照部门分组
    having count(`id`) > 2  --筛选出数量大于2的组
    
  10. 嵌套查询

    select uid, dep, money  --查询用户唯一ID,部门,工资
    from salary				--在salary表中查询
    where money in (select max(`money`) from salary group by dep)
    -- 判断外层查询的工资是否在里层 (查询最高工资工资 按照部门排序)
    
  11. 多表查询

    select 查询的字段

    from 表名1, 表名2,…

    where 表与表之间的关系( 必须声明)

    注意点------ 当查询时,发生多表字段重名.

    (使用: 表名.字段名 区分重名字段 )

  12. 别名 as

    from salary as s, test as t  --将表名取一个别名 作为多变查询时缩写使用
    
  13. order by 排序 ------- desc降序 / asc升序(默认)

    select nickname, birthday -- 查询昵称 生日
    from user
    order by birthday desc    -- 按生日 降序排序
    
  14. limit 下标,行数 ----经常被利用在 后期 分页 效果

    select id, nickname  --查询id 和 昵称
    from user
    limit 0, 5  --查询从第0个开始 向后5条数据
    
  15. Distinct 取消重复

    select dep 				--查询部门
    from salary    			
    
    select distinct dep 	--查询部门 取消重复
    from salary
    
  16. 支持算数运算符

    select 10 + 20;  -- 会返回30;
    + - * % 等等