这里写目录标题
一、SQL语句
1.数据库、数据表、数据的关系介绍
1)数据库
- 用于存储和管理数据的仓库
- 一个库中可以包含多个数据表
2)数据表
- 数据库最重要的组成部分之一
- 它由纵向的列和横向的行组成(类似excel表格)
- 可以指定列名、数据类型、约束等
- 一个表中可以存储多条数据
3) 数据
- 想要永久化存储的数据
4) 总结
学习SQL之前,可以稍微简单了解下,为什么要用数据库,为什么不可能用Excel或者文本来存储。数据库的特点:高效的数据组织与管理、保障数据安全与一致性、支持大规模应用场景。所以在一些特定场景下,数据库肯定是优于Excel的。
2.SQL介绍
1)什么是SQL
- Structured Query Language:结构化查询语言
- 定义了操作所有关系型数据库的规则。
- SQL 语句不区分大小写,关键字建议使用大写。
- 数据库的注释:
- 单行注释:-- 注释内容 #注释内容(mysql特有)
- 多行注释:/* 注释内容 */
2)SQL分类
- DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等 - DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等 - DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录(数据)。关键字:select, where 等 - DCL(Data Control Language)数据控制语言(了解)
用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等
3)总结
在学习的过程中,首先要清楚DDL是操作库表的,别人说DDL这个名词时一定要有印象,这是操作库和表的。DML,DQL不用特意去记,操作数据的,简单说就是数据的增、删、改、查。
3.DDL(数据定义语言)-操作数据库
1)C(Create):创建
- 创建数据库
CREATE DATABASE;
- 创建数据库(判断,如果不存在则创建)
CREATE DATABASE IF NOT EXISTS 数据库名称;
- 创建数据库、并指定字符集
CREATE DATABASE 数据库名称 CHARACTER SET 字符集名称;
- 创建数据库、并指定默认字符集
--使用DEFAULT CHARSET设置字符集后,数据库中所有新创建的表、字段都会继承这个设置
CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET 字符集名称;
- 示例
create database if not exists demo DEFAULT CHARACTER SET utf8mb4;
一般创建库的标准写法就按照上述语句来,加上if not exists可以防止库存在而导致sql报错。
2)U(Update):修改
-- 标准语法
ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称;
如果想实现数据库重命名相对要麻烦点,“RENAME DATABASE old_database TO new_database ;”,这个语法不是对所有版本mysql适用。最常用的就是新建库,表以及数据迁移。
3)D(Delete):删除
- 删除数据库
-- 语法
DROP DATABASE 数据库名称;
- 删除数据库(判断,如果存在则删除)
-- 标准语法
DROP DATABASE IF EXISTS 数据库名称;
- 示例
-- 标准语法
drop database if exists demo;
不加if exists,如果要删除表不存在,则会报错database doesn’t exist。在做删除操作的时候一般都要慎重!
4)R(Retrieve):查询
- 查询所有数据库
SHOW DATABASES;
- 查询某个数据库的创建语言
SHOW CREATE DATABASE 数据库名称;
# 查看mysql数据库的创建格式
SHOW CREATE DATABASE mysql;
5)使用数据库
- 查询当前正在使用的数据库名称
-- 查询当前正在使用的数据库
SELECT DATABASE();
- 使用数据库
-- 标准语法
USE 数据库名称;
-- 使用demo数据库
USE demo;
4.DDL-操作数据表
1)R(Retrieve):查询
- 查询数据库中所有的数据表
-- 使用demo数据库
USE demo;
--查询库中所有的表
SHOW TABLES;
- 查询表结构
-- 标准语法
DESC 表名;
-- 查询user表结构
DESC user;
- 查询表字符集
-- 标准语法
SHOW TABLE STATUS FROM 库名 LIKE '表名';
-- 查看demo数据库中yser表字符集
SHOW TABLE STATUS FROM demo LIKE 'user';
2)C(Create):创建
- 创建表
-- 标准语法
CREATE TABLE 表名(
列名1 数据类型1,
列名2 数据类型2,
...
列名n 数据类型n
);
--注意:最后一列不需要加逗号
- 数据类型
1. int:整数类型
* age int
2. double:小数类型
* score double(5,2)
* price double
3. date:日期,只包含年月日 yyyy-MM-dd
4. datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
5. timestamp:时间戳类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
* 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
6. varchar:字符串
* name varchar(20):姓名最大20个字符
* zhangsan 8个字符 张三 2个字符
数据类型后面会具体解释。
- 创建表
-- 使用db3数据库
USE demo;
-- 创建一个user表
CREATE TABLE user(
IDINT, -- id
NAME VARCHAR(10), -- 名称
AGE VARCHAR(4), -- 年龄
BIRTHDATE DATE -- 出生日期
);
- 复制表
-- 标准语法
CREATE TABLE 表名 LIKE 被复制的表名;
-- 复制product表到product2表
CREATE TABLE user2 LIKE user;
如果是复制表同时也复制表中数据
-- 标准语法
CREATE TABLE 表名 AS SELECT * FROM 被复制的表名;
-- 复制product表到product2表
CREATE TABLE user2 AS SELECT * FROM user;
3)U(Update):修改
- 修改表名
-- 标准语法
-- 标准语法
ALTER TABLE 表名 RENAME TO 新的表名;
-- 修改product2表名为product3
ALTER TABLE product2 RENAME TO product3;
- 修改表的字符集
-- 标准语法
ALTER TABLE 表名 CHARACTER SET 字符集名称;
-- 查看db3数据库中product3数据表字符集
SHOW TABLE STATUS FROM db3 LIKE 'product3';
-- 修改product3数据表字符集为gbk
ALTER TABLE product3 CHARACTER SET gbk;
-- 查看db3数据库中product3数据表字符集
SHOW TABLE STATUS FROM db3 LIKE 'product3';
- 添加一列
-- 标准语法
-- 标准语法
ALTER TABLE 表名 ADD 列名 数据类型;
-- 给product3表添加一列color
ALTER TABLE product3 ADD color VARCHAR(10);
- 修改表字段类型
-- 修改数据类型 标准语法
ALTER TABLE 表名 MODIFY 列名 新数据类型;
-- 将color数据类型修改为int
ALTER TABLE product3 MODIFY color INT;
-- 查看product3表详细信息
DESC product3;
- 修改表字段名称
-- 修改列名和数据类型 标准语法
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
-- 将color修改为address,数据类型为varchar
ALTER TABLE product3 CHANGE color address VARCHAR(30);
-- 查看product3表详细信息
DESC product3;
- 删除列
-- 标准语法
-- 标准语法
ALTER TABLE 表名 DROP 列名;
-- 删除address列
ALTER TABLE product3 DROP address;
4)D(Delete):删除
- 删除数据表
-- 标准语法
DROP TABLE 表名;
-- 删除product3表
DROP TABLE product3;
-- 删除不存在的表,会报错
-- 错误代码:1051 Unknown table 'product3'
DROP TABLE product3;
- 删除数据表(判断,如果存在则删除)
-- 标准语法
DROP TABLE IF EXISTS 表名;
-- 删除product3表,如果存在则删除
DROP TABLE IF EXISTS product3;
5.DDL语法总结
1)增加操作
- 新建数据库
--标准写法
create database if not exists demo DEFAULT CHARACTER SET utf8mb4;
-新建表
-- 创建一个user表
CREATE TABLE IF NOT EXISTS user(
IDINT, -- id
NAME VARCHAR(10), -- 名称
AGE VARCHAR(4), -- 年龄
BIRTHDATE DATE -- 出生日期
);
增加操作关键字——create,数据库database,表 table。
2)删除操作
- 操作库
-- 语法
drop database if exists 库名;
- 操作表
-- 标准语法
DROP TABLE IF EXISTS 表名;
删除操作记得三个关键字:drop,database,table,进行删除啊操作的时候一般要慎重。
3)修改操作
- 操作库
-- 标准语法
ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称;
对数据库的改名要稍微麻烦点,不做额外解释。
- 操作表
-- 修改表名
ALTER TABLE product2 RENAME TO product3;
-- 修改表字符集
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;
-- 添加、修改、删除表字段
--添加字段
ALTER TABLE 表名 ADD COLUMN 字段名 数据类型 [约束条件];
--CHANGE 改变表字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
--MODIFY 不改表字段名
ALTER TABLE 表名 MODIFY 字段名 新数据类型;
--删除字段
ALTER TABLE 表名 DROP COLUMN 字段名;
4)查询操作
- 操作库
- 查询所有数据库
SHOW DATABASES;
-- 查询当前正在使用的数据库
SELECT DATABASE();
- 操作表
- 查询数据库中所有的数据表
--查询库中所有的表
SHOW TABLES;
- 查询表结构
-- 标准语法
DESC 表名;