MySql入门基础

1、SQL概述

1.1 字面解释

structured--结构化的

query--查询

language--语言

1.2 一些概念常识

关系型数据库--RDBMS

精度—整体长度 标度—小数长度

char—定长,性能好 varchar—变长,性能较差

编写顺序:

select—from—where—group by—having—order by—limit

运行顺序:

from—where—group by—having—select—order by—lmit

注意:null值不参与聚合函数运算

2、SQL分类

2.1 DDL(数据定义语言)

Definition--定义 用于定义数据库对象(增删改查)

2.1.1 数据库操作

1、创建数据库:create database (if not exits) 数据库名;<!--数据库名可由字母、数字、下划线组成-->

2、查看数据库:show databases;

3、查看指定数据库的创建信息:show create database 数据库名;

4、选择数据库:use 数据库名;

5、查看当前处于的数据库:select database();

6、删除数据库:drop database (if exits) 数据库名;

2.1.2 表操作

1、创建数据表:create table (if not exits) 表名 (字段 字段类型,字段 字段类型......);

2、查看数据表:show tables;

3、 查看表结构字段信息:desc/describe 表名;<!--所有字段-->

desc/describe 表名 字段名;<!--指定字段-->

4、查看数据表的创建语句:show create table 表名;

5、修改数据表名:alter table 旧名 rename to/as 新名;

rename table 旧名 to 新名, 旧名2 to 新名2;

6、修改字段名:alter table 表名 change 旧字段名 新字段名 字段类型;<!--包括修改字段类型-->

7、修改字段类型:alter table 表名 modify 旧字段名 新字段类型;

8、新增字段:alter table 表名 add 新字段名 字段类型;

9、删除字段:alter table 表名 drop 字段名;

10、查看表结构:show colums from 表名 from库名 / 库名.表名;

11、删除数据表:drop table (if exits) 表名1,表名2;

2.2 DML(数据操作语言)

Manipulation--操作 对数据库的中的数据进行增删改

1、添加数据:insert into 表名 (字段1,字段2....) values (值1,值2.....) [,(值1,值2,....)...];

2、修改数据:update 表名 set 字段1 = 值1,字段2=值2,......[where 条件表达式];

3、删除数据:delete from 表名 [where 条件表达式];

2.3 DQL(数据查询语言)

Query--查询 用于查询数据库表中的记录

格式:

select

(distinct-去重)字段列表 字段名 [as] 别名

from

表名

where

条件列表 >、 >=、 <、 <=、 <>、 like、between...and、in、and、or

分组前过滤

group by

分组字段列表

having

分组后条件列表 分组后过滤

order by

排序字段列表 升序ASC,降序DESC

limit

分页参数; 起始索引(从0开始),每页展示记录数

limit m,n ==从第m条记录展示n条记录

2.4 DCL(数据控制语言)

Control--控制 用于创建数据库用户、控制数据库的访问权限

2.4.1 用户管理

1、创建用户:create user ‘用户名’@‘主机名’ identified by ‘密码’;

2、修改用户密码:alter user ‘用户名’@‘主机名’ identified with mysql_native_password by '密码'; <!--%表示任意主机-->

3、删除用户:drop user '用户名'@'主机名';

2.4.2 权限控制

1、查询权限:show grants for '用户名'@'主机名';

2、授予权限:grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';

3、撤销权限:revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';

2.4.3 权限列表

all,all privileges:所有权限

select:查询数据

insert:插入数据

update:修改数据

delete:删除数据

alter:修改表

drop:删除数据库/表/视图

create:创建数据库/表

3、函数

3.1 字符串函数

concat(s1,s2.....sn):字符串拼接,s1,s2...sn拼接成一个字符串

lower(str):将字符串str全部转为小写

upper(str):将字符串str全部转为大写

LPAD(str,n,pad):左填充,用字符串pad对str的左边进行填充,达到n个字符串长度

RPAD(str,n,pad):右填充,用字符串pad对str的右边进行填充,达到n个字符串长度

TRIM(str):去掉字符串头部和尾部的空格

SUBSTRING(str,start,len):放回从字符串str从start位置起的len个长度的字符串

3.2 数值函数

CELL(x):向上取整

FLOOR(x):向下取整

MOD(x,y):返回x/y的模

RAND():返回0~1内的随机数

ROUND(x,y):求参数x四舍五入的值,保留y位小数

3.3 日期函数

CURDATE():返回当前日期

CURTIME():返回当前时间

NOW():返回当前日期和时间

YEAR(date):获取指定date的年份

MONTH(date):获取指定date的月份

DAY(date):获取指定date的日期

DATE_ADD(date,INTERVAL expr type) :返回一个时期/时间值加上一个时间间隔expr后的时间值

DATEDIFF(date1,date2):返回起始时间date1到结束时间date2之间的天数

3.4 流程函数

IF(value,t,f):如果value为true,返回t,否则返回f

IFNULL(value1,value2):如果value1不为空,返回value1,否则返回value2

CASE WHEN [val1] THEN [res1] ....ELSE [default] END:如果val1为true,返回res1,...否则返回default默认值

CASE [expr] WHEN [val1] THEN [res1] ...ELSE [default] END:如果expr值为cal1,返回res1,否则返回default默认值

4、约束

1、非空约束:NOT NULL

2、唯一约束:UNIQUE

列级:字段名 字段类型 unique

表级:unique(字段1,字段2.......)

3、默认约束:DEFAULT 默认值

4、检查约束:CHECK

5、主键约束:PRIMARY KET(自增:AUTO_INCREMENT)

列级:字段名 字段类型 primary key

表级:primary key(字段1,字段2......)

6、外键约束:FOREIGN KEY

列级:字段名 字段类型 references 主码所在表名(字段名)

表级:foreign key (字段1,字段2,....)

删除外码约束:alter table 表名 drop foreign key 外码名;

5、复制

复制表结构:create table (if not exits) 表名 like 旧表名;

复制表数据:insert into 表名 [(字段列表)] select [(字段列表)] from 旧表名;

一次性复制:create table 表名 as select * from 旧表名;

6、多表查询

1、联合查询:select......

union(all) 不加all则去除完全重复的记录

select.......;

2、交叉连接(笛卡尔积):select 字段 from 表1

cross join 表2

(where 表1.字段 = 表2.字

3、内连接

隐式:select 字段 from 表1,表2

(where 表1.字段 = 表2.字段);

显式:select 字段 from 表1

(inner) join 表2 on 匹配条件;

4、外连接

左外:select 字段 from 表1

left join 表2

on 匹配条件; 表1为主表,表2为从表

右外:select 字段 from 表1

right join 表2

on 匹配条件;

5、自连接:select .......from 表1 别名1,表1 别名2 where .....;

6、子查询 = 嵌套查询 <!--先执行子查询,即圆括号( )里面的内容-->

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值