Mysql的一些笔记 纪要~老杜视频笔记~

Mysql入门

  1. 什么是数据库?什么是数据库操作系统?什么是SQL?他们之间的关系是什么?

数据库:

    英文单词DataBase, 简称DB, 按照一定的格式存储数据的一些文件的组合.

     顾名思义: 存储数据的仓库,实际上就是一堆文件.这些文件中存储了具有特定格式的数据

数据库管理系统:

     DataBaseManagement,简称DBMS。

     数据库管理系统是专门用来管理数据库中的数据,数据库管理系统可以对数据库当中的数据进行增删改查

     常见的数据库操作系统有: Mysql、Oracle、Ms SqlServer、DB2、sybase等。。。

SQL: 结构化查询语言

     程序员需要学习SQL语句,通过编写SQL语句,然后DBMS负责执行SQL语句,最终来完成数据库中数据的增删改查操作

    

     SQL是一套标准,程序员煮药学习的就是SQL语句,这个SQL在Mysql中可以使用的同时也可在Oracle中也可以使用,在DB2中也可以使用

三者之间的关系?

     DBMS—执行—>SQL—操作àDB

安装数据库操作系统,然后学习sql,通过编写Sql语句对数据库中的数据进行增删改查的处理

  1. 启动停止Mysql

启动: net stop 服务名

停止: net start 服务名

其他启停服务同理

  1. Mysql常用命令:

Exit =>>>> 退出

mysql –u用户名 –p密码 显示密码形式

mysql –u用户名 –p 回车 隐藏密码形式

show databases;(注意以分号结尾,mysql默认自带4个数据库) 查看所有数据库

use 数据库名  表示进入使用当前数据库

create database 表名 创建数据库

show tables  显示数据库所以表名

select * from 表名 查询表名所有数据

desc 表名 只看表结构

select version(); 查看数据库版本

select database(); 查看当前使用哪个数据库

不慎回车 可\C 终止执行sql语句

Select 字段名 from 表名 单独查询一个字段数据

Select 字段名,字段名,字段名 from 表名  查询多个字段数据

  1. 数据库当中最基础的单元是表:table

任何一张表都有行和列

行(row):被称为数据/记录

列(column):被称为字段

每一个字段都有字段名、数据类型、约束等属性。

数据类型:字符串、数字、日期。。。。。

约束其中一个:唯一性、限制数字、格式、字符串

  1. 关于SQL语句的分类

SQL语句有很多,最好进行分门别类,这样更容易记忆

分为

DQL:

    数据查询语句(凡是带有select关键字的都是查询语句)

    Select …

DML:

数据操作语言(凡是对表当中的数据进行增删改查的都是DML)

Insert delete update

Insert 增

Delete 删

Update 改

    DDL:

        数据定义语言

        凡是带有create、drop/alter的都是DDL

        DDL主要操作的是表的结构。不是表中的数据

        Create 新建

Drop 删除

Alter 修改

这个增删改和DML不同,这个主要是针对表结构进行操作

    TCL:

        事务控制语言

        包括:

            事务提交: commit

            事务回滚: rollback

    DCL:

        数据控制语言

        例如: 授权grant、撤销权限revoke

  1. 数据库命令优缺点

Select * from 表名 查询表数据效率低下 因*需转换为字段名称

  1. 给查询的列起别名:

Select 字段名 as 别名 from 表名

利用as关键字起别名

As关键字也可省略 select 字段名 别名 from 表名 同上

注意:

    Select语句是只起暂时作用无法用于修改

  1. Select 字段名*12(可以使用数学表达式) from 表名
  2. Select 条件查询:

Select

    字段1,字段2

From

    表名

Where

    条件

<> 不等于

!= 不等于

两个值之间

Select

    字段1,字段2

From

    表名

Where

    条件 and 条件

    或

    字段(需要比对的字段)between 比对值 and 比对值

数据库当中不能用=去查询null 要用is null不等于是is not null

And比Or优先级更高 想要有限执行or只需加()先让()里的条件执行即可

In(‘字段名’, ‘字段名’)如果存在即返回(不是区间值,是括号内指定值)

Not in(‘字段名’, ‘字段名’)即in取反

Like 模糊查询 %需要模糊查询的字符%

    Like ‘%a%’ 找出字符中带有a的数据

    Like ‘k%’找出字符k开头的数据

    Like ‘_A%’ 找出第二个字母为A的数据

    Like ‘__R%’ 找出第三个字母为R的数据

    注意: 特殊字符需要转义 \如(‘%\_%’)模糊查询带有_字符需反斜杠转义

Select 字段 from 表 order by 字段(按照这个字段进行排序) 默认是升序

Select 字段 from 表 order by 字段 desc 降序

Select 字段 from 表 order by 字段 asc 升序

语句执行顺序

    Select

        …

    From

        …

    Where

        …

    Oder by

        …

  1. Mysql函数处理公式:

Ifnull 可以将null转换为一个具体值

Case 字段 when 需匹配的条件 then 做什么事 when 需匹配的条件 then 做什么事 else 其他情况 end(结束)
例子如下:

Select

ename, job, sal, (case job when ‘MANAGER’then sal*1.1 when ‘SALESMAN’ then sal*1.5 else end) as ‘newsal’ from emp;

    组合函数:(只有分组之后才能使用)

        max(字段) 最大值

        min(字段) 最小值

        avg(字段) 平均值

        sum(字段) 总和

        count(字段) 总计数

        group by 条件 条件求和    

select

    。。。

From

    。。。

Where

    。。。

Group by

    。。。

Order by

    。。。

Sql语句的执行顺序:

From =>> where =>> group by =>> having =>> select =>> order by =>> limit

作业:

找出每个部门最高薪资, 要求显示最高薪资大于3000

(having可在分组后重新进行筛选)

Select deptno, max(sal), ename from emp group by deptno having sal > 3000

Select deptno, max(sal), ename from emp where sal > 3000 group by deptno

Select distinct job from emp;  

Distinct 字段 去重

  1. 连接查询

根据表连接的方式分类:

    内连接:

        等值连接

        非等值连接

        自连接

    外连接:

        左外连接

        右外连接

From子句中的子查询

    注意:from后面的子查询,可以将子查询的查询结果当做一张临时表(技巧)

子查询的数据要匹配的上,不然会报错

  1. Union合并查询结果集

Select ename, job from emp where job = ‘MANAGER’

Union

Select ename, job from emp where job = ‘SAKESNAN’

注意:union的效率高,对于表连接来说,每次连接一次新表,则匹配的次数满足笛卡尔积,成倍翻的遍历条件

但union可以减少匹配次数,还可以完成两个数据集合拼接

  1. Limit是将查询结果集的一部分取出来,通常使用在分页查询当中

完整用法(起始下标为0)

Limit startIndex,length

StartIndex是起始下标, length是取多少条

缺省用法

Limit 5 取前5条数据

Mysql当中在limit在oder by 之后执行

Select ename, sal from emp oderby sal desc limit 2,3;

动态数据limit (pageNo -1) * pageSize, pageSize

  1. 删除表

Drop table 表名

Drop table if exists 表名; 如果存在就删除

  1. 建表

无指定默认值

create table t_student(

no int,

name varchar(32),

sex char(1),

age int(3),

email varchar(255)

)

指定默认值

Create table t_student(no int, name varchar(32), sex char(1) default ‘m’, age int(3), email varchar(255))

  1. insert语句

insert into 表名(字段名1, 字段名2,字段名3。。。。) values(值1, 值2, 值3.。。。);

insert into t_student(no, name, sex, age, email) values(1, “zhangsan”, “m”,20, “lisi@11.com”);

注意: 如果省略字段,values需按顺序写上插入值

Inset into t_student values(值1, 值2.。。。)

将字符串类型转换为日期类型

%Y 年

%m 月

%d 日

%h 时

%i 分

%s 秒

Str_to_date(‘字符串日期’, ‘日期格式’)

Insert into u_student(id, name, birth) values(1, ‘张三’, str_to_date(’01-09-1995’, ‘%d-%m-%Y’))

如何格式为%Y-%m-%d 则不需要使用str_to_date进行转换

Date_format函数使用:

Date_format(日期类型数据,‘日期格式’)

获取当前系统时间now()函数是datetime的类型

  1. 修改update()DML类型语句

语法格式:

    Update 表名set 字段名=‘某值’, 字段名1=‘某值’where 条件

注意:没有条件限制会把表中所有数据全部更新

  1. Delete删除数据(dml)

语法格式:

    Delete from 表名 where 条件

注意:没有调教限制会把表中所有数据删除,效率低下、可恢复

Delete from t_user where id = 1

  1. Truncate table 表名删除数据

优点:删除干净,彻底删除不占资源,效率高

缺点:不可回滚

  1. 约束包括有哪些

非空约束: not null

没有表级约束

Create table t_student(id int, id varchar(32)not null)

唯一性约束: unique

联合唯一性,需完全相同才不允许插入条件是(id,name)这两个值完全相同

约束如果没有添加在列后面,这种约束称为表级约束

Create table t_vip (id int, name varchar(32) unique(id, name));

Insert into t_vip(id, name) values(1, ‘zs’)

主键约束: primary key (简称PK)

外健约束: foreign key (简称fk)

检查约束: check (mysql不支持,oracle支持)

  1. 存储引擎

存储引擎是Mysql中特有的一个术语, 其他数据库没有

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值