MySql自学基础

MySql

一.数据库简介

1.1 常见的数据库

MySQL(两个版本,收费版和免费版,已被Oracle收购)
SQL Server(属于微软)
Oracle (大公司,安全级别高数据库)

1.2 MySql安装(略)

cmd 打开MySql
mysql -u root -p
输入密码

二.SQL语言

2.1 概述

SQL(Structured Query Language)结构化查询语言 ,使用92SQL标准
支持增删改查

2.2 语句分类

DDL(Data Definition Language)数据定义语言
DML(Data mainpulation Language)数据操作语言
DCL(Data Control Language)数据控制语言
DQL(Data Query Language)数据查询语言(重点)
MySql注释:# - -

2.3 DDL

数据库操作

创建数据库:create database db1(set character utf8);
查看数据库:show databases;
修改:alter database db1 character set gb2312;
删除:drop database db1;
其他操作:use db1; 选中数据库
select database(); 查看选中的数据库
show create database db1;查看创建数据库创建细节

表操作

创建表:create table student(id int,name varchar(10) ,age int not null,primary key(name));
常用约束:primary key;unique [key];not null;default;foreign key;auto_increment;
删除表:drop table student;
查看表:show tables;
查看表详细信息:desc student;
修改表:alter table student add image blob;添加字段
alter table student modify name varchar(20);更改字段属性
alter table student drop image;删除字段
alter table student to user;更改表名
alter table student character set gbk;修改字符集
查看表创建细节:show create table user;

2.3 DML

插入数据:insert into 表名(列名,列名)value(数据,‘数据’),(数据,‘数据’),(数据,‘数据’)
修改数据:update 表名 set 列名=列值,列名=列支 where 列名=值(指定列更改)
update 表名 set 列名=列名+1000 where 列名=值(加1000)
删除数据:delete from 表名 where 列名=列值
delete from 表名(删除所有数据,表结构还在)
truncate table 表名(直接删表,再创建空表)

三.DQL查询

简单查询:select * from 表名;(* 表示所有列,可指定列)
条件查询:select * from 表名 where 列名=列值 and 列名=列值;
select * from 表名 where 列名=列值 or 列名=列值;
select * from 表名 where 列名 in (列值,列值,列值);
select * from 表名 where 列名 not in (列值,列值,列值);
select * from 表名 where 列名 is null;
select * from 表名 where age>=20 and age<=40;
select * from 表名 where age between 20 and 40;
select * from 表名 where 列名 !=列值;
模糊查询:通配符:_(表示一个字符) %(表示多个未知字符)
select * from 表名 where 列名 like 带通配符的列值(必须使用like关键字

去重:select distinct 列名 from 表名;
查看字段和:select * ,数字字段+数字字段 from 表名;
select * ,concat(字符串字段,’ 分隔符’,字符串字段)from 表名;
常见问题:数字+NULL为空。解决方案:替换NULL为0
select *,数字字段+ifnull(字段,0) from 表名;
更改列名(取别名):select 旧列名 as 新列名,旧列名 as 新列名 from 表名
排序:select * from 表名 order by 列名 asc(从小到大);desc(从大到小)
内连接查询
select * from 表名 e(e为别名,可有可无,简化名称)
inner join 表名 d (同上)
on e.‘关键字’=d.‘关键字’;
外连接查询
select * from 表名 e
left(左表是主表 right同) outer join 表名 d
on e.‘关键字’=d.‘关键字’;
分组查询
select count( *) ,列名 from 表名 group by 列名;
having子句:select 列名,sum(列名)from 表名 group by 列名 having sum(列名)>9000;对分组后的数据筛选,where是筛选分组前的数据
limit限制:select * from 表名 limit 0,5;(从0开始 ,查询5条)
查询语句书写顺序:select-from-where-group by-having-order by-limit
引用外键:create table score(
id int,
score,
sid int reference student(id)
);
聚合函数:count() ;max(); min() ;sum() ;avg();
子查询:select里嵌套select
例:查询员工中工资大于Jones的人
select * from emp where sal>(select sal from emp where ename=‘jones’);
例:查询与Scott一个部门的员工
select * from emp where deptno=
(select deptno from emp where ename=‘scott’);
例:工资高于30号部门所有人的员工信息
select * emp where sal>(select max(sal) from emp where deptno=30);

四.数据库操作工具

SQLyog

Navicat

五.数据完整性

组件约束

primary key:数据唯一,不能为null

唯一约束

unique:数据不能重复,可以为null

自动增长

auto_increment

五.导出导入数据库

导出数据库

命令行执行:mysqldump -u root - p school(要导出的数据库名)>d:\school.sql(要导出的地址和库名)

导入数据库

命令行执行:mysql -u root -p
use 数据库
source d:/dbname.sql

使用SQLyog导入导出

六.创建用户和授权

创建

create user ‘zhangsan’@‘localhost’ identified by ‘123456’;(使用工具创建)
create user ‘zhangsan’ identified by ‘123456’;(命令行创建)

授权

grant select,update,insert on school.* to zhangsan;
grant all on school.* to zhangsan;

撤销权限

revoke all on school.* from zhangsan

删除用户

drop user zhangsan

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值