mysql基础

个人blog,欢迎关注加收藏

一、数据库的介绍

  1. 数据库:存储数据的永久空间,就是通过一种特殊的方式存储到硬盘中。
    计算机中永久空间:硬盘,临时空间:内存
  2. 数据库分类:关系型数据库和非关系型数据库:关系型是所有的数据基础上都是有关联的,通过一个数据和其他的一个数据进行有效关联。
  3. 数据库:sql server、oracle、mysql、…
  4. mysql查看数据的方式:结构化查询语言(SQL语句)
    开发方式分b/s 、 c/s 。mysql的基本结构:c/s。
    mysql客户端:终端,浏览器(打开浏览器网址,确保wamp打开运行)
    –sql语句–>访问数据库管理系统
    ->管理:数据库》数据表》数据;数据库2》数据表》数据;数据库3》数据表》数据;…

二、mysql的基本语法

  1. 注释:
  • 单行注释:#注释内容
  • 单行注释:-- 注释内容(注意:两个 – 之后有一个空格)
  • 多行注释:/*注释内容*/
  1. 语句行:
  • 一条语句称为一条命令,通常用一个分号;结束
  • 也可通过 delimiter 新结束符命令来设定新的结束符(少用)
  • 语句的执行是以一条语句为单位进行,一次执行一条语句
  1. 大小写:
  • windows不区分大小写,linux区分大小写
  1. 命名(标识符)规则:
  • 命名只用字母和下划线,不用数字开头
  • 不使用关键字
  • 用下划线分割法
  • 建议全部小写

三、库操作

  1. 库:存储数据的仓库–起名称
  2. 表:存储数据的表,一个库可以创建多个表–起名称
  3. 字段:给表中的数据起名称
  4. 记录:具体一条数据

四、数据库操作

  1. 创建数据库:create database 数据库名 库选项;,库选项:字符集,校对集,字符集:charset utf8,校对集由字符集确定,eg:create database test charset utf8
  2. 查询所有数据库:show databases;
  3. 查询数据库创建语句:show create database 数据库名;
  4. 修改数据库(不能修改数据库名称,只能修改字符集和校对集):
    alter database 数据库名 charset=新字符集 collate=新的校对集;
  5. 显示所有校对集:show collation;
  6. 显示所有字符集:show charset;
  7. 删除数据库:drop database 数据库名;
  8. 选择数据库:use 数据库名;

五、数据表操作

  1. 创建表:
create table 表名(
  字段名称1 字段属性(类型) 字段选项,
  字段名称2 字段属性(类型) 字段选项,
  )表选项;
  • 表选项:表字符集charset和数据引擎engine
  • 字符集:charset = utf8;
  • 数据引擎:engine默认 innodb、常用有Myisam,没有事务处理就选Myisam,处理速度快
  • 字段名称:当前表中的数据名称,自定义
  • 字段类型:当前字段中存储的数据类型必须一开始就指定好
  整数:tinyint、smallint、int
  小数:float、decimal,decimal(10,2)--长度10位,其中小数2位
  字符串:char(255字符)、varchar(65532字符)、text(文本,无限制),char是定长型,char(30)最大存储30的长度,缺少的部分用空格补齐,varchar变长型,可以变化长度,varchar(30),最大储存30的长度,可以小于30,两种超过会被切割存入
  日期时间:date、datetime,date范围1000-01-01 00:00:00 到9999-12-31,datetime范围1000-01-01 00:00:00到9999-12-31 23:59:59
  • 字段选项:设置当前字段的一些选项:数据类型是否有符号、是否为空、是否为主键、是否是唯一键,是否加备注等;

  unsigned:数值数据类型无符号,不写代表有符号(取值范围可以为负)
  null | not null:是否可以为空
  default 值:是否有默认值
  Auto_Increment:是否可以自动增长,必须是数字,如需要给每条数据一个编号,原因是数据内容可以重复,编号不能重复。
  primary key:设置主键,数据内容不能重复,在查询数据时的主查询条件,一个表中一个主键,一般都是id。
  unique[key]:设定唯一键,即表中所有行的数据在该字段中的值不能有重复。(少用)
  comment:设置备注,给当前字段设置说明

  • eg:`create table student(
    id int not null auto_increment primary key comment ‘id号’,
    name varchar(10) not null default ‘’ comment ‘姓名’,
    age int not null default 0 comment ‘年龄’,
    sex varchar(5) not null default ‘男’ comment ‘性别’

    )charset=utf8 engine=Myisam;`

  1. 删除表:
  • drop table 表名;:表不存在了
  • truncate table 表名;:表还存在
  1. 查看表:
  • 查看所有表:show tables;
  • 查看表结构:desc 表名;
  • 查看创建表的语句:show create table 表名;
  1. 修改表:
  • 修改表名:alter table 旧表名 rename 新表名;
  • 添加字段:alter table 表名 add 新字段 字段数据类型 字段选项 after 字段名;,用after指定添加在哪个字段之后
  • 修改字段:alter table 表名 change 旧字段名 新字段名 字段类型 字段选项;
  • 只修改字段属性: alter table 表名 modify 字段名 新字段类型 新字段选项;
  • 删除字段:alter table 表名 drop 字段名;

数据操作

  1. 增:
  • insert into 表名(字段1,字段2,字段3,...) values(值1,值2,值3,...);,自动增长的数据,可以不填,可以写default、null
  • 插入多条数据:
insert into 表名(字段1,字段2,字段3,...) values
(值1,值2,值3,...),
(值1,值2,值3,...),
(值1,值2,值3,...),
...;
  • 表名后的(字段名,字段名,字段名,…)可以省略,values(值,值,值,…)要与建表时的字段一一对应
  • 字段列表可以选择性的写,字段名称与值要一一对应,注意:如果有字段不允许为空,又没有默认值时,必须插入数据。
  1. 删:
  • delete from 表名 [where条件][order排序][limit限定];,必须带where条件 ,否则删除所有数据
  • eg:delete from idol where id=1;
  • delete 删除后被删除的id不会复用
  1. 改:
  • update 表名 set 字段名1=值1,字段名2=值2,字段名3=值3,... [where条件][order排序][limit限定];
  1. 查:
  • select 字段列表 [from语句] 表名 [where语句][group by 语句][having 语句][order by 语句][limit语句];
  • 查询所有:select * from idol;
  • 查询某些字段:select name,age from idol;
  • 其他查询:
    • 查询数据数量:select count(id) from idol;
    • 给字段起别名:字段名 as 别名select count(id) as total from idol;
  1. 条件:
  • where条件,且建议id作为条件,id具有唯一性
    • 算数运算符:+ / - / * / / / % -->select * from idol where id = 5+3;
    • 比较运算符: > / < / >= / <= / != -->select * from idol where id < 4;
    • 逻辑运算符:and / or / not -->select * from idol where id < 4 and name = '蓝湛';
    • in查询:select * from idol where id in (1,5);
    • between min and max取值范围:select * from idol where id between 2 and 5;,包含最大值和最小值
    • 字段名 like '%字符%'模糊查询:select * from idol where name like '%蓝%';,如果like后直接写字符,name like '蓝湛'就相当于name = '蓝湛'的查询,
  • order:当前表倒序还是正序,不用添加,默认即可,正序:asc,倒序:desc,order by 字段名 desc/asc
  • limit:限定范围,不用添加,limit 开始位置,长度,开始位置可以从0开始。
  • group by:select 字段或聚合数据(函数) from 表名 group by 字段名;,eg:select age,count(age) as '个数' from idol group by age;
  • 常用的聚合函数:avg()取平均值,count()取个数,sum()取总和,max()取最大值,min()取最小值
  • having:having 条件;,where 与 having的区别:where只能查去数据表中已有的字段,having只能查已经在select后筛选出来的字段。
1. 只可以用where,不可以用having的情况

1) select addtime,name from dw_users where addtime> 1500000000

2) select phone,name from dw_users having addtime> 1500000000 //报错!!!因为前面并没有筛选出addtime字段

2. 只可以用having,不可以用where情况

查询每种category_id商品的价格平均值,获取平均价格大于100元的商品信息

1)select category_id , avg(price) as ag from dw_goods group by goods_category having ag > 100

2)select category_id , avg(price) as ag from dw_goods where ag>100 group by goods_category //报错!!因为from dw_goods 这张数据表里面没有ag这个字段

注意:where 后面要跟的是数据表里的字段,如果我把ag换成avg(price)也是错误的!因为表里没有该字段。而having只是根据前面查询出来的是什么就可以后面接什么。

数据库的三大范式

  • 第一范式:原子性,数据不可再分
  • 第二范式:唯一性,消除部分依赖
  • 第三范式:独立性,取消传递依赖

复制一张表的小技巧

  1. create table copy_table like old_table
  2. insert into copy_table select * from old_table
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值