SQL
- 什么是SQL?
- Structured Query Language:结构化查询语言
- 定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不同。
- SQL通用语法
- SQL语句可以单行或多行书写,以分号结尾。
- 使用空格和缩进来提高可读性。
- MysSQL数据库的SQL语句不区分大小写,关键字建议大写。
- 3种注释
- 单行注释:--注释内容 或 #注释内容
- 多行注释/*注释*/
- SQL分类
- DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。Create,drop,alter
-
- DML(Data Manipution Language)数据操作语言
用来对数据库中表的数据进行增删改。Insert,delete,update
-
- DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录。Select,where
-
- DCL(Data control Language) 数据控制语言
GRANT,REVOKE
- DDL:操作数据库、表
- 操作数据库:CRUD
- C:Create 创建
- 操作数据库:CRUD
1. 创建数据库
*create database 数据库名称
*创建数据库,判断是否存在
*create database if not exists 数据库名称;
*创建数据库,并指定字符集
*create database 数据库名称
character set 字符集;
-
-
- R:Retrieve查询
-
*查询所有数据库名称
*show databases;
*查询某个数据库的字符集
*show create database 数据库名称
U:Update 修改
*修改数据库的字符集
*alter database 数据库名称 character set 字符集名称;
-
-
- D:Delete 删除
-
*drop database 数据库名称
-
-
- 使用数据库
-
*查询当前正在使用的数据库名称
*select database();
*使用数据库
*use 数据库名称
-
- 操作表
- C:Create 创建
- 操作表
1. 创建表
*create table 表名(
列名1 数据类型1,
列名2 数据类型2,
…
)
数据类型:
Int 整数类型
*aa int,
double 小数类型
*score double(5,2)(小数最多五位,小数点后保留两位)
data 日期类型,只包含年月日,
yyyy-MM-dd
datetime 日期 包含年月日时分秒
yyyy-MM-dd HH-mm-ss
timestamp 时间戳类型
包含年月日时分秒
如果不赋值或赋值为null,则默认为当前系统时间
varchar 字符串类型
name varchar(20)最大二十个字符
zhangsan八个字符 张三 两个字符
例:
Create table student(
Id int,
name varchar(32),
age int,
score double(4,1),
birthday date,
insert_time timestamp
);
R:Retrieve查询
*查询某个数据库中的表名称
*show tables;
*查询表结构
*desc 表名;
U:Update 修改
*修改表名
alter table 表名 rename to 新表名;
*添加列
Alter table 表名 add 列名 数据类型;
*修改列
Alter table 表名 change 列名 新列名 数据类型;
Alter table 表名 modify varchar(10);只改数据类型
*删除列
Alter table 表名 drop 列名;
-
-
- D:Delete 删除
-
*drop table 表名;
*use 数据库名称
5、DML 增删改表中的数据
1、添加数据:
*语法:
Insert into 表名(列名1,列名2…)values(值1,值2…)
如果要给所有列都添加值,则表名后不需要加列名
除了数字类型,其他类型需要使用引号包裹
2、删除数据:
*delete from 表名 (where 条件);
如果不加条件,则删除表中所有记录
如果需求是删除所有记录
TRUNCATE TABLE 表名;--删除表,然后再创建一个一模一样的空表
与delete区别是delete会执行多次直到将表中记录全部删除
3、修改数据:
*update 表名 set 列名1 = 值1,
列名2 = 值2…(where )
如果不加任何条件,则会将表中所有记录全部修改
- DQL:查询表中的记录
Select * from 表名;
Select distinct * from 表名;(去重)
1、语法:
Select
字段列表
From
表名列表
Where
条件列表
Group by
分组字段
Having
分组之后的条件
Order by
排序
Limit
分页
基础查询
多个字段的查询
Select 字段1,字段2..from表名;
去除重复
distinct
计算列
可以使用四则运算计算列的值
Ifnull(表达式1,表达式2)null参与的计算,结果都为null
表达式1:判断1的字段是否为null
表达式2:若1为null则使用2替换改值
起别名
()as 别名 as可以省略
条件查询
1、Where子句后跟条件
2、运算符
*> < = >= <= = <>
*BETWEEN…AND
*IN(集合)
*LIKE
*and 或 &&
*or 或||
*not 或!