Structured Query Language 结构化查询语言
SQL作用
语句分类
语法
注释的语法 | 说明 |
---|---|
--空格 | 单行注释 |
/* */ | 多行注释 |
# | mysql特有的注释方式 |
创建数据库
判断数据库是否已经存在,不存在则创建
创建数据库并指定字符集
修改数据库默认的字符集
具体操作
语法
具体操作
查看正在使用的数据库
使用/切换数据库
具体操作
格式
关键字
MySQL常用数据类型
类型 | 描述 |
---|---|
int | 整型 |
double | 浮点型 |
varchar | 字符串型 |
date | 日期类型,yyyy-MM-dd |
create table student (
id int, -- 整数
name varchar(20), -- 字符串
birthday date -- 生日,最后没有逗号
);
查看某个表中的元素
查看表结构
查看创建表的SQL语句
快速创建一个表结构相同的表
-- 创建一个 s1 的表与 student 结构相同
create table s1 like student;
desc s1;
直接删除表
判断表是否存在,如果存在则删除表
具体操作
-- 直接删除表 s1 表
drop table s1;
-- 判断表是否存在并删除 s1 表
drop table if exists `create`;
添加表列ADD
修改列类型 MODIFY
修改列名 CHANGE
删除列DROP
修改表名
修改字符集
INSERT [INTO] 表名 [ 字段名] VALUES ( 字段值)
INSERT INTO 表名:表示往哪张表中添加数据
( 字段名 1, 字段名 2, …) : 要给哪些字段设置值
VALUES (值 值 1, 值 值 2, …) :
插入全部字段
不写字段名
插入部分数据
没有添加数据的字段会使用null
注意事项
符串加入到长度为 40 的列中。
UPDATE 表名 SET 列名= 值 [WHERE 条件表达式]
UPDATE: 需要更新的表名
SET: 修改的列值
WHERE: 符合条件的记录才更新
不带条件修改数据
带条件修改数据
具体操作
-- 不带条件修改数据,将所有的性别改成女
update student set sex = ‘女‘;
-- 带条件修改数据,将 id 号为 2 的学生性别改成男
update student set sex=‘男‘ where id=2;
-- 一次修改多个列,把 id 为 3 的学生,年龄改成 26 岁,address 改成北京
update student set age=26, address=‘北京‘ where id=3
DELETE FROM 表名 [WHERE 条件表达式]
如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
你可以在 WHERE
不带条件删除数据
带条件删除数据
使用truncate删除表中记录
具体操作
-- 带条件删除数据,删除 id 为 1 的记录
delete from student where id=1;
-- 不带条件删除数据,删除表中的所有数据
delete from student;
查询不会对数据库中的数据进行修改.只是一种显示数据的方式
SELECT 列名 FROM 表名 [WHERE 条件表达式]
1) SELECT 命令可以读取一行或者多行记录。
2) 你可以使用星号(* )来代替其他字段,SELECT 语句会返回表的所有字段数据
3) 你可以使用 WHERE
使用*表示所有列
SELECT * FROM 表名;
? 查询所有的学生:
select * from student;
查询指定列
? 查询指定列的数据,多个列之间以逗号分隔
SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名;
? 查询 student 表中的 name 和 age 列
select name,age from student;
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名
? 对列和表同时指定别名
SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名 AS 表别名;
-- 使用别名
select name as 姓名,age as 年龄 from student;
-- 表使用别名
select st.name as 姓名,age as 年龄 from student as st
SELECT DISTINCT 字段名 FROM 表名
具体操作
-- 查询学生来至于哪些地方
select address from student;
-- 去掉重复的记录
select distinct address from student;
SELECT 列名 1 + 固定值 FROM 表名;
SELECT 列名 1 + 列名 2 FROM 表名
select * from student;
-- 给所有的数学加 5 分
select math+5 from student;
-- 查询 math + english 的和
select * from student;
select *,(math+english) as 总成绩 from student;
-- as 可以省略
SELECT 字段名 FROM 表名 WHERE 条件
比较运算符 | 说明 |
---|---|
> < <= >= =<> | <>在 SQL 中表示不等于,在 mysql 中也可以使用!= 没有== |
between...and | 在一个范围之内,如:between 100 and 200 相当于条件在 100 到 200 之间,包头又包尾 |
in(集合) | 集合表示多个值,使用逗号分隔 |
like | 模糊查询 |
逻辑运算符说明 | |
---|---|
and 或者&& | 与 |
or 或者|| | 或 |
not或者! | 非 |
-- 查询 age 大于 35 且性别为男的学生(两个条件同时满足)
select * from student3 where age>35 and sex=‘男‘;
-- 查询 age 大于 35 或性别为男的学生(两个条件其中一个满足)
select * from student3 where age>35 or sex=‘男‘;
-- 查询 id 是 1 或 3 或 5 的学生
select * from student3 where id=1 or id=3 or id=5;
SELECT 字段名 FROM 表名 WHERE 字段 in ( 数据 1, 数据 2...);
in 里面的每个数据都会作为一次条件,只要满足条件的就会显示
BETWEEN 值 1 AND 值 2
LIKE 表示模糊查询
SELECT * FROM 表名 WHERE 字段名 LIKE ‘
通配符 | 说明 |
---|---|
% | 匹配任意多个字符串 |
- | 普配一个字符串 |
select * from student3 where name like ‘马%‘;
select * from student3 where name like ‘马‘;
-- 查询姓名中包含‘德‘字的学生
select * from student3 where name like ‘%德%‘;
-- 查询姓马,且姓名有两个字的学生
select * from student3 where name like ‘马_‘;
原文:https://www.cnblogs.com/mx-info/p/13703674.html