1. 定义
SQL, Structured Query Language, 结构化查询语言. 其实是操作数据库的一套标准, 不管使用的是哪一种DBMS, SQL都可以操作. 但是, 不同的DBMS中, 又些许有些差别, 这种差别我们称之为方言(Dialect).
2. SQL遵循的规范
- 一条语句结束需要使用分号(;)结尾.
- sql可以单行编写, 也可以换行写, 建议通过换行和缩进来美化SQL, 提高可读性.
- 一般sql语句中的关键字要大写.
3. SQL的分类
3.1 DDL(Data Defination Language)
数据定义语言, 用于操作数据库的常用对象, 例如数据库, 表格, 等. 常用的关键字CREATE(增), ALTER(改), DROP(删), SHOW(查)等
3.2 DML(Data Manipulation Language)
数据操作语言, 用于对表格进行增删改操作. 常用的关键字INSERT(增), UPDATE(改), DELETE(删)等
3.3 DQL(Data Query Language)
数据查询语言, 用于对表格进行查询操作. 常用的关键字SELECT(查), WHERE(条件), FROM(位置)等.
3.4 DCL(Data Control Language)
数据控制语言, 主要用于进行权限的控制. 常用的关键字GRANT(授权), REVOKE(撤销)等.
4. 操作database
4.1 查看所有的database
show databases;
4.2 创建 databas
create database 数据库名称; -- 直接创建
create database 数据库名称 character set utf8; -- 创建数据库时指定编码方式
create database if not exists 数据库名称; -- 如果数据库不存在则创建, 存在就不创建(一般用于导出的文件中)
4.3 使用/切换数据库
use 数据库名称;
4.4 修改database
alter database demo character set utf8; -- 将demo库的编码方式修改为utf8.
4.5 删除database
drop database 数据库名; -- 直接删除
drop database if exists 数据库名称; -- 如果存在则删除
5. 操作table
5.1 查询当前database下所有可用的table
show tables;
5.2 MySQL中常用的数据类型
在 MySQL 中,有三种主要的类型:Text(文本)、Number(数字)和 Date/Time(日期/时间)类型。
重点类型:
- CHAR, 需要指定长度, 不可变字符串, 性能好, 但是占用的空间是固定的.
- VARCHAR, 需要指定长度, 可变字符串, 性能差, 但是占用的空间是可变的.
- TEXT, 不需要指定长度, 用于存放大文本数据
.
重点类型:
- INT, 存整数. 4个字节
- TINYINT, 1个字节, 如果长度为1, 通常用于表示boolean. 1àtrue, 0àfalse
- BIGINT, 对应java中的Long类型.
重点类型:
- DATE, 年月日, 没有时分秒
- DATETIME, 年月日时分秒
5.3 创建表格
create table 名称 (
列名 列类型,
列名 列类型,
...
);
create table tb_student(
id int,
name varchar(10),
gender char(1),
age int(3),
birthday date,
score double(5,2),
reg_time datetime
);
5.4 查看表格的结构
desc tb_student;
5.5 修改表格
修改表名
alter table 原表名 rename to 新表名;
修改字段(列)的类型
alter table 表名 modify 列名 类型;
修改字段名
alter table 表名 change 原列名 新列名 类型;
增加字段
alter table 表名 add(列名 类型,...);
删除字段
alter table 表名 drop column 列名;
5.6 删除表格
drop table [if exists] 表名;
5.7 DML操作
新增数据
insert into 表名[(列1,列2,...)] values (值1,值2,...);
-- 批量新增
insert into 表名[(列1,列2,...)] values (值11,值21,...),(值12,值22,...)...;
load data local infile‘文件地址’ into table 表名;
- 列和值要一一对应
- 列可以省略, 表示表格的所有列都要新增数据
- 数据的类型要和列类型一致, 其中除了数字以外, 其他数据都需要加引号(单引号和双引号)
- MySQL中可以批量新增
- 也可通过txt文件导入数据,用tab键隔开,没有值用\n
修改数据
update 表名 set 列1 = 值1,列2 = 值2...[where 条件];
删除数据
delete from 表名 [where 条件];
删除整张表格的全部数据,建议使用truncate语句,提高效率。
truncate table 表名;