mysql简单语法_MySQL基本语法

一.为什么会像有MySQL这样的DBMS(数据库管理系统)

1.当你写程序需要用到一些数据时,你可能会在本地,找到数据目录,然后使用它;你还可以通过远程连接一台机器,数据就在这台机器上;

2.那如果你要来实现这样的一台机器,你需要做什么呢?

你就需要提供一个服务端,里面有一套规则,然后等着客户端来连接,当然,你还需要有客户端与服务端的用户认证,授权以及一些限制等;

3.因此,DBMS就帮我们做这样的一些事情;

二.DBMS有哪些

SqlServer,Oracle,sqlite,access,MySQL等,本文讲的是MySQL,其实你学会了其中一种,其他的也基本会了;

三.下载安装MySQL

1.windows下载: http://dev.mysql.com/downloads/mysql/

2.开启服务端:在终端进入下载路径的bin目录,然后执行mysqld --initialize-insecur启动服务端并初始化,但是会报错,原因是你的目录下没有data文件夹,此时你就需要新建一个data文件夹,然后再执行一次,就成功了,并且你会发现你的data文件夹下有了许多文件;

3.客户端连接:通过终端输入命令:mysql -u root -p,也就是登陆到root用户(需要输入密码),root用户默认是空,连接上后你就可以输入sql语句了;

4.为了不用每次开启服务时,都要进入到bin目录下,你可以把bin目录添加到环境变量path去,这样就可以在任意目录终端输入mysqld启动服务端;

5.你还可以将mysql服务端制作成一个windows服务,通过在bin目录下的终端输入mysqld --install制作;net start mysql等命令是在终端开启和终止已经制作好的windows服务里的mysql服务;你也可以在任务管理器--》服务--》打开服务 打开和关闭服务器;

四.一些重要的概念

在正式开始学习sql语句之前,我们需要了解几个概念:

数据库:相当于文件夹

数据库表:相当于文件夹里的excel表格文件

数据行:相当于excel表格中的一行一行数据

还有就是数据表的列:相当于excel表格最上面的那个列名

一些重要的sql语法规则:

sql语句用分号‘;’隔开;

sql注释:两个减号和一个空格‘-- ’;

sql不区分大小写;

查询时尽量不要使用*,查询速度会比较慢;

五.sql语句几大组成部分

1.用户管理

2.用户登录

3.授权管理

4.数据库级别操作

5.数据表级别操作

6.数据行级别操作(重点)

7.连表操作(重点)

六.用户管理、登录和授权管理

1.用户管理

-- 创建用户

create user '用户名'@'IP地址' identified by '密码';

-- 删除用户

drop user '用户名'@'IP地址';

-- 修改用户

rename user '用户名'@'IP地址' to '新用户名'@'IP地址';

-- 修改密码

set password for '用户名'@'IP地址' = (‘新密码’);

注意:用户权限相关数据保存在mysql数据库的user表中,所有也可以直接修改user表来达到目的,但是不推荐;

还有就是用户名和ip地址的引号可以省略,但是密码的引号不可以省略;

2.用户登录

-- 用户登录(u指的就是user,h指的是IP地址,p指的是密码)

mysql -u 用户名 -h -p

用户名@IP地址:用户只能在该ip下才能访问

用户名@192.%:用户在192.开头的ip下能访问

-- %表示通配符,也就是什么都可以匹配到

3.授权管理

-- 查看权限

show grants for '用户名'@'IP地址';

-- 授权

grant 权限 on 数据库.表 to '用户名'@'IP地址';

-- 取消权限

revoke 权限 on 数据库.表 from '用户名'@'IP地址';

-- 权限有select,insert等

七.数据库级别操作

-- 查看数据库

show databases;

-- 创建数据库

create database 数据库名称;

create database 数据库名称 default charset utf8 collate utf8_general_ci;

--charset utf8设置默认编码,collate utf8_general_ci是设置校对规则

-- 进入数据库

use 数据库

-- 删除数据库

drop database 数据库名称:

八.数据表级别操作

在讲表操作之前,我们需要了解六个概念;

1.主键:唯一标识,一般设置自增列为主键

不能为null;

不能重复;

一张表只有一个主键(可以多列组成主键);

-- 一般用法:

--添加主键

alter table 表名 add primary key(‘列名’);

--删除主键

alter table 表名 drop primary key;

-- 因为一个表只有一个主键,所有不用指定主键的列名

2.外键

一对多;

两张表建立约束;

-- 一般用法:

-- 添加外键

alter table 表名 add constraint 外键名 foreign key (列名) references 表2(列名);

-- 删除外键

alter table 表名 drop foreign key 外键名;

3.默认值

就是给某一列设置默认值;

-- 一般用法:

-- 修改默认值

alter table 表名 alter 列名 set default 默认值;

-- 删除默认值

alter table 表名 alter 列名 drop default;

4.自增列

自增列在插入一条数据行时,可以不用设值,他自己会增加在上一条的基础上加1;

对于自增列,必须是索引;

自增列还可以设值步长和起始值;

-- 一般用法

-- 设置自增列一般在创建表的时候设置

--查看当前数据库的自增长设置

show variables like 'auto_inc%';

+--------------------------+-------+

| Variable_name | Value |

+--------------------------+-------+

| auto_increment_increment | 1 |

| auto_increment_offset | 1 |

+--------------------------+-------+

-- 设置步长

set auto_increment_offset=10;

-- 设置起始值

set auto_increment_increment=2;

5.基本数据类型

MySQL的数据类型大致分为:数值、时间、字符串;

常用的有:

int:整数;

decimal:小数,比较精准;

char(m):定长,m指长度,查找速度快,不浪费空间

varchar(m):变长,m指的是最大长度,查找速度慢,比较浪费空间;

6.空值

用于设置某一列是否可以为空;

一般用于设置主键不能为空;

not null - 不可空 ;

null - 可空;

有了以上这六个概念后我们就可以开始创建我们的表了;

1.创建表

create table 表名(

列名 类型 是否可以为空,

列名 类型 是否可以为空

)ENGINE=InnoDB DEFAULT CHARSET=utf8

-- 这里的ENGINE是设置数据库引擎的,charset设置编码方式;

例子:

create table table_name(

nid int not null auto_increment PRIMARY key,

name varchar(10),

age int DEFAULT 18

)engine = innodb DEFAULT charset = utf8

2.删除表

drop table 表名;

3.清空表内容

delete from 表名;

truncate table 表名;

-- 注意:truncate速度快,而且清空表后自增列又回到原点,即重新从1开始;

4.修改表

增:alter table 表名 add 列名 数据类型;

删:alter table 表名 drop column 列名;

改:alter table 表名 modify column 列名 数据类型

-- 只可以改类型

alter table 表名 change 原列名 新列名 数据类型

-- 可以修改列名和类型

九.语句操作

增删改查:

增:insert into 表名(列名,列名...)values("值","值"...);

-- 插入一条

insert into 表名(列名,列名...)values("值","值"...),("值","值"...)...;

-- 插入多条

insert into 表名1(列名,列名...) select(列名,列名...) from 表名2;

-- 从表2中获取数据插入到表1中去

删:delete from 表 where 条件;

改:update 表名 set 列名="值" where 条件;

查:select * from 表

-- *表示多有的列

select nid, name, age as a from 表 where 条件;

-- as给age重命名为a

其他:

条件:select * from 表名 where id > 0 and name = 'luyi';

select * from 表 where id between 1 and 5;

-- id值在1到五之间

select * from 表 where id in (1,2,3);

-- id值是(1,2,3)其中一个

select * from 表 where id not in (1,2,3)

select * from 表 where id in (select id from 表);

-- id的值在子表取出来的值中

分页:select * from 表 limit 4,5;

-- 取从第四行开始的五行

-- 另一种写法:

select * from 表 limit 5 offset 4;

排序: select * from 表 order by 列 asc(desc);

-- asc为从小到大根据“列”排列,desc则是从大到小;不写则是asc

分组:select * from 表 group by 列名,...

-- group by必须在where之后,order by之前

select num from 表 group by num having max(id)>10

-- group by一般与聚合函数配合使用,聚合函数有

max,min,sum,count,avg

十.连表操作

连表操作:

无对应关系则不显示

select A.num, A.name, B.name

from A,B

Where A.nid = B.nid;

无对应关系则不显示

select A.num, A.name, B.name

from A inner join B

on A.nid = B.nid;

A表所有显示,如果B中无对应关系,则值为null

select A.num, A.name, B.name

from A left join B

on A.nid = B.nid;

B表所有显示,如果B中无对应关系,则值为null

select A.num, A.name, B.name

from A right join B

on A.nid = B.nid;

-- 推荐使用left join,inner join与left join的主要区别就是

inner会舍去没有对应关系的null值

与连表操作相似的还有表的组合

-- 就是把两个表组合成一个新表显示出来

select name from A union select name from B;

-- 会自动处理重合部分

select name from A union all select name from B;

-- 不会自动处理重合部分

本文参考了博客:博客地址链接

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值