SQL 语句基础DDL语句

SQL的全称是Structured Query Language,也就是结构化查询语言。SQL是操作和检索关系数据库的标准语言,标准的SQL语句可用于操作任何关系数据库。

使用SQL语句,程序员和数据库管理员(DBA)可以完成如下任务。

  • 在数据库中检索信息
  • 对数据库的信息进行更新
  • 改变数据库的结构
  • 更改系统的安全设置
  • 增加或回收用户对数据库、表的许可权限

在上面5个任务中,一般程序员可以管理前三个任务,后面两个任务通常由DBA来完成

标准的SQL语句通常分为如下几种类型

  1.  查询语句:主要有select关键字完成,查询语句是SQL语句中最复杂、功能最丰富的语句。
  2. DML(Data Manipulation Language,数据库操作语言)语句:主要由insert、 update和delete三个关键字完成。
  3. DDL(Data Definition Language,数据库定义语言)语句:主要由create、alter、drop和truncate四个关键字完成。
  4. DCL(Data Control Language,数据控制语言)语句:主要由grant、和revoke两个关键字完成

一、DDL语句 

DDL语句是操作数据库对象的语句,包括创建(create)、删除(drop)、和修改(alter)数据库对象。

                                                                                           常见的数据库对象

对象名称对应关键字描述
table表是存储数据的逻辑单元,以行和列的形式存在;列就是字段,行就是记录
数据字典 就是系统表,存放数据库相关信息的表。系统表里的数据通常由数据库系统维护,程序员通常不应手动修改系统表及系统表数据,只可查看系统表数据
约束constraint  执行数据校验的规则,用于保证数据完整性的规则
视图view一个或多个数据表里数据的逻辑显示。视图并不存储数据
索引index用于提高查询性能,相当于书的目录
函数function用于完成一次特定的计算,具有一个返回值
存储过程procedure用于完成一次完整的业务处理,没有返回值,但可以通过传出的参数将多个值传给调用环境
触发器trigger相当于一个事件监听器,当数据库发生特定事件后,触发器被触发,完成相应的处理

 

 

1.创建表的语法

// 标准的建表语句语法如下:

create table [模式名.]表名
(# 可以有多个列定义
 columnNamel datatype [default expr],
........)

 如果指定列的默认值,则使用default关键字,而不是使用等号(=)

// 例如 建立下面一个表test

create table test(
# 整型通常使用int
test_id int,
# 小数点数
test_price decimal,
# 普通长度文本,使用default 指定默认值
test_name varchar(255) default 'xxx',
# 大文本类型
test_desc text,
# 图片
test_img blob,
# 时间类型
test_data datetime
);
MySQL 支持的列类型
列类型说明

tinyint/smallint/mediumint

int(integer)/bigint

1字节/2字节/3字节/4字节/8字节整数,又可分为有符号和无符号两种。这些整数类型的区别仅仅是表示数的范围不同
float/double单精度、双精度浮点型
decimal(dec)精确小数类型,相对于float和double不会产生精度丢失的问题
date日期类型,不能保存时间。把java.util.Date对象保存进date列时,时间部分将会丢失
time时间类型,不能保存日期。把java.util.Date对象保存进time列时,日期部分会丢失
datetime日期、时间类型
timestamp时间戳类型
year年类型,仅仅保存时间的年份
char定长字符串类型
varchar可变长字符串类型
binary定长二进制字符串类型,它以二进制形式保存字符串
varbinary可变长度的二进制字符串类型,它以二进制形式保存字符串

tinyblob/blob/mediumblob

/longblob

1字节/2字节/3字节/4字节的二进制大对象,可用于存储图片、音乐等二进制数据,分别可存储:255B/64KB/16MB/4GB大小

tinytext/text/mediumtext

/longtext

1字节/2字节/3字节/4字节的文本对象,可用于存储超长长度的字符串,分别可存储:255B/64KB/16MB/4GB大小的文本
enum(‘value1’,'value2',...)枚举类型,该列的值只能是enum后括号里多个值之一
set(‘value1’,'value2',...)集合类型,该列的值可以是set后括号里多个值的其中几个
// 子查询建表语句语法:
create table [模式名.]表名[column[,column...]] as subquery;

例如:
// 创建hehe数据表,该数据表和user_inf完全相同,数据也完全相同

create table hehe as select * from user_inf;

2. 修改表格结构的语法

修改该表结构使用alter table,修改表结构包括增加列定义、修改列定义、删除列定义、删除列、重命名列等操作。

// 增加列定义的语法如下:

alter table 表名
add(
   # 可以有多个列定义
   column_name1 datatype [default expr],
   ...);
// 为数据表增加字段的SQL语句如下:
// 为hehe数据表增加一个字段hehe_id,该字段的类型为int

alter table hehe
add hehe_id int;

// 为hehe数据表增加字段aaa、bbb,两个字段的类型为varchar(255)

alter table hehe
add (aaa varchar(255) default 'xxx',
     bbb varchar(255));
// 修改列定义的语法如下:
alter table 表名
modify column_name datatype [default expr] [first|after col_name];

// 将hehe表的hehe_id列修改成varchar(255)类型
alter table hehe
modify hehe_id varchar(255);
// 将hehe表的bbb列修改成int类型
alter table hehe
modify bbb int;

 

// 从数据表中删除列的语法比较简单:

alter table 表名
drop column_name;

// 删除hehe表中的aaa字段

alter table hehe drop aaa;

MySql提供了两种特殊的语法:

重命名数据表和完全改变列定义

// 重命名数据表的语法:

alter table 表名
rename to 新表名

// 如下sql语句将hehe数据表重命名为wawa
alter table hehe
rename to wawa;

// alter table语法的change选项,用于改变列名。change选项语法如下:
alter table 表名
change old_column_name new_column type[default expr] [first|alter col_name]

// 将wawa数据表的bbb字段重命名为ddd
alter table wawa
change bbb ddd int;

3.删除表的语法

// 删除表语法的格式
drop table 表名

//例如

drop table wawa;

删除数据表的效果如下:

  • 表结构被删除,表对象不在存在
  • 表里的所有数据也被删除
  • 该表所有相关的索引、约束也被删除

 4.truncate表

对于大部分数据库而言,truncate都被当成DDL处理,truncate被称为截断某个表——它的作用是删除表里的全部数据,但保留表结构。相对于DML里的delete命令而言,truncate的速度要快的多,而且truncate不想delete可以删除指定的记录,truncate只能一次性删除整个表的全部记录。

// truncate命令的语法如下
truncate 表名

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值