SQL:
结构化查询语言(Structured Query Language),不用分号“;”,括号“()”内有时用逗号“,”,字符串用单引号“ ’ ’ ”
分为:
Database Control Language
DCL数据控制语言:grant、revoke
是对使用数据库的用户操作,赋予、撤销权限
Database Definition Language
DDL数据定义语言:create、alter、drop、truncate
是对表进行操作,定义表的结构
Database Manipulation Language
DML数据操纵语言:insert、update、delete
是对表里的数据进行操作:插入新数据、更新已有数据、删除不要数据、
select
数据查询是数据库的核心操作,毕竟数据库就是用来查询的
DDL
定义基本表
create table student(
id varchar(35) primary key comment '学号',
sname varchar(10) not null comment '姓名',
)
对于每一个属性
列名 | 数据类型 | 列级完整性约束条件 | 注释 |
---|---|---|---|
id | varchar(35) | primary key | comment ‘学号’ |
alter修改表属性
alter table 表名
alter:
增加列(add)、
修改列(modify),标准SQL中是alter命令,mysql中是modify
修改列名(change)
删除列(drop)、
以及MySQL独有的重命名表(rename)、
列(change)等操作
add
增加一列
alter table student
add address varchar(16) not null comment'地址'
add | 新列名 | 数据类型 | 完整性约束 | 注释 |
---|---|---|---|---|
add | address | varchar(16) | not null | comment’地址’ |
一次可以增加多列
alter table student
add(
age varchar(4),
gender char(1) default '女'
)
modify:
一次只能修改一列,并且该列已有的属性要在修改时都写上了(值不一定一样)
alter table student
modify
gender char(1) default '男'
change:
alter table student
change column
sanme sname varchar(10)
change | column | 列的旧名 | 列的新名 | 数据类型 |
---|---|---|---|---|
—— | —— | sanme | sname | varchar(10) |
drop:
这个 drop 是删除列,要配合alter使用。还有个 drop 是用来删除表,不需要alter的配合
alter table student
drop gender;
drop | 列名 |
---|---|
drop | gender |
drop删除表
删除表
drop table stu_2
stu_2这个表可能在其他的“表”、“视图”中被使用,所以删除stu_2可能会带来问题,所以 drop 就有了两个操作
- restrict 有限制的删除:若stu_2被其他“表”、“视图”中被使用,那么不执行 drop
- cascade 级联删除:若stu_2被其他“表”、“视图”中被使用,那么相应的删除stu_2被使用的地方
索引
常见索引:“顺序文件上的索引”、“B+树索引”、“hash索引”、“位图索引”,我们创建的索引具体是哪一种,不是由一般程序员决定,由设计底层存储方式的DBA决定
创建索引
create unique index id_index on student(id)
create | unique/cluster | index | 索引名 | on | 表名 | (列名 asc\desc) |
---|
unique:表示此索引的每一个索引值,只对应唯一的数据记录,(也就是对应唯一 一行)
cluster:
asc:ascend,升序排列,默认
desc:descend,降序排列
修改索引名
alter index id_index rename to id_index_new
alter | index | 旧的索引名 | rename | to | 新的索引名 |
---|
删除索引
drop index s_tel on stu_5