目录
在大学期间,也学习过SQL语言。但是好久没用,对其也已经还给老师了,所以现在想重新学习数据库,每天学习一点做个总结。
首先说明以下SQL的分类。
1,SQL分类
分类 | 全称 | 说明 |
DDL(Data Definition Language) | 数据库定义语言 | 用来定义数据库对象(数据库,表,字段) |
DML (Data Mainipulation Language) | 数据库操作语言 | 数据库操作语言,用来对数据库表中的数据进行增删改 |
DQL (Data Query Language) | 数据库查询语言 | 数据库查询语言,用来查询数据库中表的记录 |
DCL (Data Control Language) | 数据控制语言 | 数据控制语言,用来创建数据库用户,控制数据库的访问权限 |
下面介绍一下DDL主要用到的一些操作以及如何用SQL语句实现。
2,DDL
开头说明一下:[ ]括号里的内容包括括号可以选择不写,此外SQL语言是不区分大小写的,这点需要注意。
(1)DDL-数据库操作
--查询
--查询所有数据库
show databases;
--查询当前数据库
select database();
--创建数据库
create database [if not exists] 数据库名 [default charest 字符集] [collate 排序规则];
--例:create database if not exists item;
--删除数据库
drop database [if exists] 数据库名;
--例:drop database item;
--使用
use 数据库名;
--例:use item;
(2)DDL-表操作
--查询
--查询当前数据库所有表
show tables;
--查询表结构
desc 表名;
--查询指定表的建表结构
show create table 表名;
--创建
create table 表名(
字段1 字段1类型 [comment 字段1注释],
字段2 字段2类型 [comment 字段2注释],
字段3 字段3类型 [comment 字段3注释],
...
字段n 字段n类型 [comment 字段n注释]
)[comment 表注释];
--这里为了方便,先创建一个表,然后进行下面的修改操作
--create table emp(
-- id int comment '编号',
-- workno varchar(10) comment '工号',
-- name varchar(10) comment '姓名',
-- gender char(1) comment '性别',
-- age tinyint unsigned comment '年龄',
-- idcard char(18) comment '身份证号',
-- entrydata date comment '入职时间'
--) comment '员工表';
--修改
--添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];
--例:为emp表增加一个新的字段“昵称”为nickname,类型为varchar(20)。
--alter table emp add nikename varchar(20) comment '昵称';
--修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);
--修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];
--例:将emp表的nickname字段修改为username,类型为varchar(30)。
--alter table emp change nickname username varchar(30) comment '用户名';
--删除字段
alter table 表名 drop 字段名;
--例:将emp表的字段username删除
--alter table emp drop username;
--修改表名
alter table 表名 rename to 新表名;
--例:将emp表的表名修改为employee
--alter table emp rename to employee;
--删除
--删除表
drop table [if exists] 表名;
--例:删除employee表
--drop table if exists employee;
--删除指定表,并重新创建该表
truncate table 表名;
--truncate table employee;
--两者的区别
--drop表示直接把整个表删除,表中的数据也会删除
--从效果上看,truncate只删除表中的数据,表的结构并没有删除