SQL 结构化查询语言
本文章是通过学习《千峰python零基础数据库可视化教程》课程的笔记
-
DDL(数据定义语言)
创建删除修改各种对象 —>create / drop / alter
-
DML (数据操作语言)
插入、删除、修改数据 —> insert / delete /update**
-
DQL(数据查询语言)【最重要】
检索(查询)数据 —> select
- DCL(数据控制语言)
授予或者召回用户权限 — >grant / revoke
创建和删除数据库
0、查看所有数据库
show databses;
1、创建数据库
create database dname(数据库名称) default charset utf8mb4[编码格式];
2、删除数据库
drop database dname;
drop database if exists school;
3、查看创建数据库的过程
show create database school;
!!! 注意:SQL是不区分大小写的编程语言
create / CREATE
4、切换指定数据库
use dname;
5、显示数据库中所有的表
show tables;
6、创建二维表
create tables tb_name
(
tb_id,
tb_name,
tb_sex,
tb_brith
);
主键(primary key):能够唯一确定一条记录的列。
写一个学生表例子
create table tb_student
(
stu_id int unsigned not null comment '学号',
stu_name varchar(20) not null comment '姓名',
stu_sex boolean default 1 comment '性别',
stu_brith date comment '出生日期',
primary key (stu_id)
) engine = innodb comment '学生表';
外键约束
约束外键约束用来保证关联数据的关系
ENUM枚举类型 例子: sex ENUM(“男“,”女”) NOT NULL
forign key 外键约束
CREATE table t_dept(
deptno INT UNSIGNED PRIMArY KEY,
dname VARCHAR(20) NOT NULL unique,
tel CHAR(4) UNIQUE );
create table t_temp(
empno INT unique primary KEY,
ename VARCHAR(20) not null,
sex ENUM("男","女") NOT NULL,
deptno int unsigned NOT NULL,
hiredate DATE NOT NULL,
foreign key (deptno) references t_dept(deptno)
);
数据类型
~整数:int(integer) / bigint / smallint /tinyint — > unsigned
~小数:float / double / decimal
~时间日期:time / date /datetime /timestamp
~字符串: char(10) 【写多少存多少空间】/ varchar(20) 【比较灵活一些】
~大对象: longtext / longlob ----->4G
修改数据表结构
ALTER TABLE 表名称
modify 列1 数据类型 [约束] [COMMENT 注释],
MODIFY 列2 数据类型 [约束] [COMMENT 注释], ……;
添加数据结构
ALTER TABLE 表名称
ADD 列1 数据类型 [约束] [COMMENT 注释],
ADD 列1 数据类型 [约束] [COMMENT 注释];
修改字段名称
ALTER TABLE 表名称
CHANGE 列1 新列名 数据类型 [约束] [Comment 注释],
CHANGE 列2 新列名 数据类型 [约束] [Comment 注释],
删除字段名称
ALTER TABLE 表名称
DROP 列名;
数据库的索引机制索引的使用原则
- 数据量很大,而且经常被查询的数据表可以设置索引
- 索引只添加在经常被用作检索条件的字段上面
- 不要在大字段上创建索引
创建索引
index 索引名称(字段)
例如: index idx_type(type)
添加与删除索引
create index 索引名称 on 表名(字段)
alter table 表名称 add index索引名;
show index from 表名;
drop index 索引名称 on 表名;
#例子
DROP INDEX idx_type on t_message;
alter table t_message
add INDEX idx_type(type);
show INDEX FROM t_message;