SQL介绍-DDL语句
一.SQL简介
1.简介
- SQL: Structured Query Language--结构化查询语言
- 用来操作关系型数据库的编程语言, 定义了关系型数据库的统一标准
- 每一种数据库可能有不一样的语法, 我们称其为"方言"
2.SQL通用语法
- SQL语句可以单行或多行书写,以分号结尾
- MySQL语句不区分大小写, 但是关键字建议用大写
- 注释:
单行注释-- 注释内容
(--后必须有空格)或#注释内容(MySQL特有)
(#后可以没有空格)
多行注释/*注释*/
3.SQL语言的分类
- DDL(Data Definition Laguage)数据定义语言,用来定义数据对象: 数据库, 表, 列等
- DML(Data Manipulation Laguage)数据操作语言, 用来对数据库中表的数据进行增删改
- DQL(Data Query Language)数据查询语言, 用来查询数据库中的记录(数据)
- DCL(Data Control Language)数据控制语言, 用来定义数据库的访问权限和安全级别, 以及创建用户
二.DDL-操作数据库与表
1.DDL操作数据库
动作 | SQL语句 |
---|---|
查询数据库 | SHOW DATABASES; |
创建数据库 | CREATE DATABASE 数据库名称; |
创建(判断是否已经存在) | CREATE DATABASE IF NOT EXISTS 数据库名称; |
删除数据库 | DROP DATABASE 数据库名称; |
删除(判断是否还存在) | DROP DATABASE IF EXISTS 数据库名称; |
查看当前使用的数据库 | SELECT DATABASE(); |
使用数据库 | USE 数据库名称; |
2.DDL操作表
①.查询表(Retrieve)
- 查询当前数据库下所有表的名称
SHOW TABLES;
- 查询表结构
DESC 表名称;
②.创建表(Create)
- 创建表用
CREATE TABLE 表名
来进行创建具体语法如下
sql
create table 表名 (
字段名1 数据类型1,
字段名2 数据类型2,
...,
字段名n 数据类型n
);
- SQL的数据类型基本可以分为三类
数值型
日期型
字符串型
案例练习:
sql
create table student(
id int,
name varchar(10),
gender char(1),
birthday date,
score double(5,2),
email varchar(64),
tel varchar(15),
status tinyint
);
③.修改表(Update)
- 修改表的命令一般以
ALTER TABLE
开头具体可以分为
操作 | 语法 |
---|---|
修改表名 | ALTER TABLE 表名 RENAME TO 新表名; |
添加一列 | ALTER TABLE 表名 ADD 列名 数据类型; |
修改数据类型 | ALTER TABLE 表名 MODIFY 列名 新数据类型; |
修改列名和数据类型 | ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型; |
删除列 | ALTER TABLE 表名 DROP 列名; |
④.删除表(Delete)
- 删除表
DROP TABLE 表名;
- 删除时判断是否存在
DROP TABLE IF EXISTS 表名;
三.Navicat的安装与使用
- Navicat for MySQL是管理和开发MySQL或MariaDB的理想解决方案.
- 它为开发者提供了一款直观而强大的图形界面.
- 官网链接: http://www.navicat.com.cn
安装完成后直接打开,填写需要连接的ip与主机的地址
如果连接过程提示报错,可以参看这个博主的文章 - 登录成功后可以通过Navicat来查看MySQL的数据库了
四.DML-操作表数据
1.添加(Insert)
说明 | 语法 |
---|---|
给指定的列添加数据 | INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...); |
给全部列添加数据 | INSERT INTO 表名 VALUES(值1,值2,...); |
批量添加数据 | INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...),... INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...; |
sql
-- 查询所有数据
SELECT
*
FROM
stu;
-- 给指定列添加数据 INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...);
INSERT INTO stu (id, NAME)
VALUES
(1, '叶子');
-- 给所有列添加数据(可以省略列名的列表)INSERT INTO 表名 VALUES(值1,值2,...);
INSERT INTO stu
VALUES
(
2,
'老黄',
'男',
'1997-07-24',
99.1,
'14587138@qq.com',
'11929305651',
1
);
-- 批量添加,其实就是把之前的括号中的内容多次执行
INSERT INTO stu
VALUES
(
3,
'罗磊',
'男',
'1997-05-24',
110.1,
'14333138@qq.com',
'11929467551',
1
),(
4,
'娟老师',
'女',
'1999-04-14',
120.1,
'556587138@qq.com',
'1349305651',
1
),(
5,
'雷der',
'男',
'1993-04-24',
130.1,
'16487138@qq.com',
'17629305651',
1
);
SELECT
*
FROM
stu;
2.修改(Update)
- 语法
UPDATE 表名 SET 列名1=值1,列名2=值2,... [WHERE 条件];
sql
-- 将表中 老黄的邮箱改为163邮箱
UPDATE stu SET email = 'finsq@163.com' WHERE id=2;
-- 将表中老黄的分数改为100,电话改为110,状态改为3
UPDATE stu SET score=100,tel=110,`status`=3 WHERE name='老黄';
-- 注意:如果update语句中不添加where条件,则会修改表中的所有数据!!!!
3.删除(Delete)
- 与修改相似
DELETE FROM 表名 [WHERE 条件];
sql
-- 删除表中 '雷der'相关的数据
DELETE FROM stu WHERE name='雷der';
SELECT * FROM stu;
-- 如果不加where限制会清除所有表数据
五.DQL-查询表数据
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段
HAVING
分组后条件
ORDER BY
排序字段
LIMIT
分页限定
1.基础查询
说明 | 语法 |
---|---|
查询多个字段 | SELECT 字段列表 FROM 表名; SELECT * FROM 表名; -- 查询所有数据 |
去除重复记录 | SELECT DISTINCT 字段列表 FROM 表名; |
起别名 | AS: -- AS也可以省略 |
sql
-- 先建立新的表
drop table if exists stu;
-- 创建stu表
CREATE TABLE stu (
id int,-- 编号
name varchar(20),-- 姓名
age int,-- 年龄
sex varchar(5),-- 性别
address varchar(100),-- 地址,
math double(5,2),-- 数学成绩,
english double(5,2),-- 英语成绩
hire_date date -- 入学时间
);
-- 添加数据
INSERT INTO stu(id,NAME,age,sex,address,math,english,hire_date)
VALUES
(1,'马运',55,'男','杭州',66,78,'1995-09-01'),
(2,'马花疼',45,'女','深圳',98,87,'1998-09-01'),
(3,'马斯克',55,'男','香港',56,77,'1999-09-02'),
(4,'柳白',28,'女','湖南',76,65,'1997-09-05'),
(5,'柳青',2,'男','湖南',86,NULL,'1998-09-01'),
(6,'刘德花',57,'男','香港',99,99,'1998-09-01'),
(7,'张学右',22,'女','香港',99,99,'1998-09-01'),
(8,'德玛西亚',18,'男','南京',56,65,'1994-09-02');
SELECT * FROM stu;