SQL(Structured Query Language):结构化查询语言。
SQL作用:
1、是一种所有关系型数据库的查询规范,不同的数据库都支持;
2、通用的数据库操作语言,可以用在不同的数据库中;
3、不同的数据库SQL语句有一些区别。
MySQL的语法:
1、每一条SQL语句都是以分号(英文状态)结束,但是在Navicat中是可以不加分号的;
2、SQL中是不区分大小写,关键字中认为大小写一样;
3、注释的三种方式:
注释语法 |
说明 |
--空格 |
单行注释 |
/* */ |
多行注释 |
# |
Navicat特有的注释方法 |
SQL分类:
1、数据定义语言DDL(Data Definition Language):建表,建库
创建数据库
# 格式
CREATE DATABASE 数据库名;
# demo
create database demo;
判断数据库是否已经存在,不存在则创建数据库
# 格式
CREATE DATABASE IF NOT EXISTS 数据库名;
# demo
create database if not exists demo;
创建数据库并指定字符集
# 格式
CREATE DATABASE 数据库名 CHARACTER SET 字符集;
# demo
create database demo character set utf8 ;
- 数据查询语言DQL(Data Query Language):对表中的查询操作
select 查询列表 from 表名
①查询表中的单个字段
SELECT name FROM stu;
②查询表中多个字段
SELECT stu_number,name FROM stu;
③查询表中的全部字段(也可以把每个字段列出来)
SELECT * FROM stu;
取别名:SELECT 100 AS 别名; /SELECT 100 空格 别名
去重:select后面加上distinct
条件查询:select 查询列表 from 表名 where 条件
SELECT * FROM stu WHERE age > 22;(查询表中age大于22的数据)
模糊查询(条件查询的一种):关键词like(一般和通配符一起使用)
常用通配符:“%”代表0到多个字符 、“_”代表任意单个字符
SELECT * FROM stu WHERE `name` LIKE '%红%';(查询表中name字段带有红的数据)
排序查询:select 查询列表 from 表名 [where 条件] order by 排序列表 (asc升 序/desc降序 不写默认升序)
SELECT age FROM stu ORDER BY age ASC;(按照age升序排序)
分组查询:SELECT 字段名 FROM 表名 group by 字段名
SELECT sex FROM stu GROUP BY sex;
注意:
having 与 where 的区别:
①对查询结果进行分组前,将不符合 where 条件的行去掉,即在分组之前过滤数据,即先过滤再分组;
②where 后面不可以使用聚合函数;
③having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,即先分组再过滤;
④having 后面可以使用聚合函数。
- 数据操纵语言DML(Data Manipulation Language):对表中的记录操作增删改
插入操作:
INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3…) VALUES (值 1, 值 2, 值 3);
insert into employee (id,name,birthday) values (1, '孙悟空', '1999-12-09');
更新表:
UPDATE 表名 SET 字段名=值;
update employee set name ='小明';
删除表
DELETE FROM 表名 WHERE 字段名=值;
delete from employee where name ='小明';
4、数据控制功能DCL(Data Control Language):用户权限的设置