SQL基础上(基于MySQL)

1 SQL概述

1.1 什么是SQL

SQL(Structured Query Language)是“结构化查询语言”,它是对关系型数据库的操作语言。它可以应用到所有关系型数据库中,例如:MySQL、Oracle、SQL Server等。

SQL标准(ANSI/ISO)有:
1、SQL-92:1992年发布的SQL语言标准;
2、SQL:1999:1999年发布的SQL语言标签;
3、SQL:2003:2003年发布的SQL语言标签;

这些标准就与JDK的版本一样,在新的版本中总要有一些语法的变化。不同时期的数据库对不同标准做了实现。

虽然SQL可以用在所有关系型数据库中,但很多数据库还都有标准之后的一些语法,我们可以称之为“方言”。例如MySQL中的LIMIT语句就是MySQL独有的方言,其它数据库都不支持!当然,Oracle或SQL Server都有自己的方言。

1.2 语法要求

1、SQL语句可以单行或多行书写,以分号结尾;
2、可以用空格和缩进来来增强语句的可读性;
3、关键字不区别大小写,建议使用大写;

2 SQL分类

DDL:数据定义语言,用来定义数据库对象:库、表、列等(建库、建表)。
DML:数据操作语言,用来定义数据库记录(数据),进行插入、删除、更新操作。
DCL:数据控制语言,用来设置访问权限和安全级别。
DQL:数据查询语言,用来查询记录(数据)。

3 如何在Navicat中执行SQL语句

双击打开Navicat,打开MySQL80连接。
在这里插入图片描述
点击“新建查询”。
请添加图片描述
进入如下页面,在本页面就可以写SQL语句。点击运行,就会执行SQL语句。
请添加图片描述

4 DDL数据定义语言(MySQL)

4.1 基本操作

1、查看所有数据库

show databases;

在这里插入图片描述
2、切换数据库

use 数据库名;

切换到info数据库:

use info;

在这里插入图片描述

4.2 操作数据库

1、创建数据库

create database [if not exists] 数据库名;

[if not exists]:表示如果给定的“数据库名”不存在,则创建该数据库;若存在该数据库,不会再次创建该数据库了。
在这里插入图片描述
如果不加“IF NOT EXISTS”,当要创建的数据库存在时,就会报错。
在这里插入图片描述
2、删除数据库

drop database [if exists] 数据库名;

[if exists]:若要删除的数据库存在则删除,若不存在则不删除。
在这里插入图片描述
如果不加“IF EXISTS”,则如果该数据库不存在,就会报错。

在这里插入图片描述
3、修改数据库的编码格式

ALTER DATABASE 数据库名 CHARACTER SET 字符集名;

例如:修改数据库mydb1的编码为utf8

ALTER DATABASE mydb1 CHARACTER SET utf8

修改数据库mydb1的编码为utf8。注意,在MySQL中所有的UTF-8编码都不能使用中间的“-”,即UTF-8要书写为UTF8。

5 数据类型

MySQL与Java、C一样,也有数据类型。MySQL中数据类型主要应用在列上。

类型描述
int整型
double浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99
decimal泛型类型。即可以存放int型,又可以存放double型,不会损失数据的精度
char固定长度字符串(当输入的字符串不够长度时会补空格)
varchar固定长度字符串 (当输入的字符串不够长度时不会补空格))
text字符串类型
blob字节类型
date日期类型(格式为:yyyy-MM-dd)
datetime日期时间格式(格式为:hh:mm:ss)
timestamp时间戳

6 操作表

6.1 创建表

CREATE TABLE 表名(
   列名 列类型,
   列名 列类型,
   ……
);

接下来以Sales数据库,以及其中的表Employees来进行实例说明。首先在Sales数据库中创建表Employees,其数据如下:

列名数据类型是否为空
编号char(6)No
姓名char(8)No
性别char(2)No
部门varchar(16)Yes
电话varchar(20)Yes
地址varchar(50)Yes

创建Employees表,SQL语句如下:

CREATE TABLE Employees(
  编号 CHAR(6) NOT NULL,
  姓名 CHAR(8) NOT NULL,
  性别 CHAR(2) NOT NULL,
  部门 VARCHAR(16),
  电话 VARCHAR(20),
  地址 VARCHAR(50)
);

在这里插入图片描述

6.2 查看表结构

desc 表名;

示例:查看employees表

desc employees;

在这里插入图片描述

6.3 删除表

drop table 表名;

示例:删除表employees

drop table employees;

6.4 修改表

1、添加列

alter table 表名 add (列名 数据类型(长度));

示例:给employees表添加一列:年龄 char(10)

ALTER TABLE Employees ADD (年龄 CHAR(10));

在这里插入图片描述
2、修改列的数据类型

alter table 表名 modify 列名 新数据类型(长度);

示例:给employees表中的年龄一列,修改char(10)到varchar(10)

ALTER TABLE Employees MODIFY 年龄 VARCHAR(10);

在这里插入图片描述
3、修改列名

alter table 表名 change 原列名 新列名 数据类型(长度);

示例:修改employees表中列名年龄改成年纪

ALTER TABLE employees CHANGE 年龄 年纪 CHAR(2);

在这里插入图片描述
4、删除列

alter table 表名 drop 列名;

示例:删除employees表中年纪一列

ALTER TABLE employees DROP 年纪;

在这里插入图片描述
5、修改表名

alter table 原表名 rename to 新表名;

示例:将employees表改名为employee

ALTER TABLE employees RENAME TO employee;

在这里插入图片描述

7 DML数据操作语言

7.1 插入数据

1、默认给所有列插入数据

insert into 表名 values(1,2,3......);

因为没有指定要插入的列,表示按创建表时列的顺序插入所有列的值(注意:所有字符串类型的数据必须使用单引号括起来)

示例:为employee表插入数据

INSERT INTO employee VALUES('e_001','一','男','财务部','111','北京');

在这里插入图片描述
2、给指定的列插入数据
前提:未插入数据的列允许为null

insert into 表名(列名1,列名2,列名3,...) values(1,2,3,...);

示例:为employee插入数据

INSERT INTO employee(编号,姓名,性别,部门) VALUES('e_002','二','女','财务部');

在这里插入图片描述

7.2 修改数据

update 表名 set 列名1=1,列名=2... [where 条件];

注意:判断列为空的方法是is null

示例:修改employee表中第二条数据

UPDATE employee SET 电话='222',地址='上海' WHERE 编号='e_002';

在这里插入图片描述

7.3 删除数据

在这里插入图片描述
1、删除满足条件的记录

delete from 表名 where 条件;

示例:删除表中编号为“e_001”的数据

DELETE FROM employee WHERE 编号='e_001';

在这里插入图片描述
2、删除所有记录:

--方式1
TRUNCATE TABLE 表名;
--方式2
delete from 表名;

虽然TRUNCATE和DELETE都可以删除表的所有记录,但有原理不同。DELETE的效率没有TRUNCATE高!

TRUNCATE其实属于DDL语句,因为它是先DROP TABLE,再CREATE TABLE。而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的。

8 DCL数据控制语言

8.1 创建用户

--地址为本地地址,也可以写成127.0.0.1。
create user '用户名'@地址 IDENTIFIED  BY '密码';
--或者可以写为以下的形式
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
--在这里%是通配符,表示不管什么地址都会创建用户

示例:创建user1用户,密码为123

CREATE USER 'user1'@localhost IDENTIFIED BY '123';

创建好后可以输入cmd打开命令提示符窗口验证是否可以登录到数据库。
在这里插入图片描述

8.2 给用户授权

如果只是创建用户,该用户只能登录到数据库,并不能进行任何的操作,因此需要给用户授权。

GRANT 权限1,权限2... ON 数据库.*  TO '用户名'@地址;

权限的种类主要有:

权限说明
CREATE创建
ALTER修改
DROP删除(库、表)
INSERT插入
UPDATE更新
DELETE删除(记录)
SELECT选择

给用户授予全部权限可以写成:

--方式1,下面的权限也可以选择的写上去,表示部分授权
GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON 数据库.* TO 用户@localhost;
--方式2
GRANT ALL ON 数据库.* TO 用户@localhost;

示例:为user1授予create权限

GRANT CREATE ON sales.* TO user1@localhost;

在命令提示符窗口使用user1创建一个表s1。

create table s1(id int,name varchar(20));

在这里插入图片描述
再查看sales数据库,多了s1这样一张表:
在这里插入图片描述
如果使用user1用户查看表的结构,则回报错,因为没有权限:

desc s1;

在这里插入图片描述

8.3 查看用户权限

SHOW GRANTS FOR '用户名'@地址;

示例:查看user1用户的权限

SHOW GRANTS FOR 'user1'@localhost;

在这里插入图片描述

8.4 显示所有用户

SELECT user from mysql.user;

示例:显示数据库中所有的用户
在这里插入图片描述

8.5 撤销授权

REVOKE 权限1,, 权限n ON 数据库.* FROM '用户名'@地址;

示例:撤销user1用户的create权限

REVOKE CREATE ON sales.* FROM 'user1'@localhost;

接下来展示一下user1的权限:,只有一个权限了:

SHOW GRANTS FOR user1@localhost;

在这里插入图片描述

8.6 修改用户密码

alter user '用户名'@localhost identified by '新密码';

示例:修改用户user1的密码为121212

ALTER USER 'user1'@localhost IDENTIFIED BY '121212';

8.7 删除用户

drop user '用户名'@地址;

示例:删除user1用户

DROP USER 'user1'@localhost;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值