SQL语法整理(一)

sql语句

  • 1、DDL(Data Definition Language)
    用于定义数据库、表、视图、索引和触发器等,Create(创建)、alter(修改表定义)、drop(删除)

  • 2、DML(Data Manipulation Language)
    用于插入、查询、更新、删除数据。insert、select、update、delete

  • 3、DCL(Data Control Language)
    用于控制用户的访问权限。grant(授权)、revoke(回收权限)

个人觉得数据库中更喜欢MySQL,主要MySQL优势有 开源跨平台价格优势功能强大且方便

如下整理了些sql知识点,如有错误望指正。

数据类型

  • 整数类型:字节数
整数类型字节数
TINYINT1
SMALLINT2
MEDIUMINT3
INT4
INTEGER4
BIGINT8
  • 浮点类型
浮点类型字节数
FLOAT4
Double8

DECIMAL(M,D)/DEC(M,D) :M+2
定点数范围是根据精度确定的。3.33

  • 时间日期类型
时间日期类型字节数备注
YEAR1
DATE4YYYY-MM-DD
TIME3CURRENT_DATE() NOW()
DATETIME8
TIMESTAMP4
  • 字符串类型
字符串类型最大字节备注
CHAR255char(5)
Varchar65535可变长
TEXTTINYTEXT、MEDIUMTEXT、TEXT、LONGTEXT
ENUM单个值
SET多个值
  • 二进制类型
二进制类型最大字节备注
BINARY(n)n允许长度为0-n的定长二进制字符串
VARTBINARY(n)n +1允许长度为0-M的变长二进制字符串
BIT(n)64n位二进制数据
TINYBLOB(n)255n位二进制数据
BLOB(2^16-1)比如存储图片、音频、视频等,地址,读取速度比较慢
MEDIUMBLOB(2^24-1)
LONGBLOB(2^32-1)

操作MySQL数据库

  • 登录数据库系统
mysql -h localhost -u root -p

-h :host(主机名) -u :username(用户名) -p:password(密码)

  • 查看现有的数据库
show databases
  • 创建数据库
    create database 数据库名;
eg: 
create database testdb;
  • 删除数据库
    drop database 数据库名;
eg: 
drop database testdb;

- 操作表

  • 创建表
    use 数据库名;
    create table 表名(属性名 数据类型 [完整性约束],
    属性名 数据类型 [完整性约束],……);
eg: 
use example;
create table example0(id int,name varchar(20),sex boolean);
  • 创建表(oracle)

语法:create table 表名(列名 1 数据类型,…,列名 n 数据类型) tablespace 表空间

eg: 
create table student(
stu_id number not null,
stu_name varchar(20),
stu_age number,
status varchar(3),
vesion number default 0 )
tablespace users;
  • 创建表的主键

主键:特殊的字段,能够唯一标识每条记录,不能重复
目的:为了MySQL能以最快的速度查找到该记录

单字段主键:
语法:属性名 数据类型 primary key

eg: 
create table example1(stu_id int primary key,stu_name varchar(20),stu_sex boolean);

多字段主键:
语法:primary key(属性1,……,属性n)

eg: 
create table example2(stu_id int,
course_id int,
grade float,
primary key(stu_id,course_id));
  • 创建表的外键
    外键:与父表建立关系的字段
    原则:必须依赖于父表已存在的主键
    目的:保证数据的完整性
    语法:constraint 外键别名 foreign key(字段1.1,字段1.2) references 主表名(字段2.1,字段2.2)
eg: 
create table example3(
id int primary key,
stu_id int.course_id int.constraint FK_STU_COURSE foreign key(stu_id,course_id) references example2(stu_id,course_id));

注:外键一定要和主表主键的类型一致

  • 创建表的相关完整性约束
约束语法备注
非空约束属性名 类型 not null
唯一约束属性名 类型 unique
自增长MySQL: 属性名 类型 auto_increment;Mssql : 属性名 类型 identity(初始,递增)要求:类型必须是整形;注:如果插入到最后一个标识为6,删除掉这个6后,后续则从7开始
默认值属性名 类型 default 默认值
eg:
create table example4(
id int not null primary key auto_increment,
stu_id int unique,name varchar(20) not null, 
address varchar(255) default 'shanghai');
  • 查看表结构

基本结构:
语法:

数据库语法
MySQLdescribe 表名;/desc 表名;
Mssqlselect 列名 from sys.objects where name = ‘表名’ ;select 列名 from information_schema.columns where table_name = ‘表名’ ;
Oracledesc 表名;
eg: 
describe example;
desc example;

详细结构:
语法:

数据库语法
MySQLshow create table 表名;
Mssqlsp_help 表名
eg:
show create table example;
  • 修改表

修改表名
语法:
MySQL : use 数据库名;alter table 旧表名 rename [to] 新表名

eg:
show tablesalter table example rename user;

MSSQL : sp_rename ‘旧表名’ ,‘新表名’
查看当前数据库下所有的表:show tables;

注:更改对象名的任一部分都可能会破坏脚本和存储过程。

修改字段:

语法:
MySQL: alter table 表名 change 旧属性名 新属性名 新属性类型
MySQL: alter table 表名 alter column 属性名 属性新类型

eg: 
修改字段类型:
MySQL: 
alter table example change stu_id stu_id int(4);
MySQL : 
alter table example alter column stu_name varchar(30)
修改字段名和类型: 
MySQL : 
alter table example1 change stu_id id int(11);
Mssql :
exec sp_rename 'example.stu_id','id' 
  • 新增字段

语法:
alter table 表名 add 新属性名 新属性类型 [完整性约束] [first | after 原有字段]

eg :
新增无完整性约束的字段:
alter table user add telephone varchar(20);
新增有完整性约束的字段:
alter table user add age int not null;
将字段添加到第一位:
alter table  user add num int primary key first;
将字段添加到某个字段之后:
alter table user add address varchar(255) after telephone;
  • 删除字段

语法:
MySQL : alter table 表名 drop 属性名
Mssql : alter table 表名 drop column 属性名

eg: alter table user drop id;
  • 修改字段排列顺序

将字段修改到首位
语法:alter table 表名 modify 属性名 属性类型 [完整性约束][first]

eg: 
alter table user modify name varchar(20) first;

将字段修改到指定位置
语法:alter table 表名 modify 属性名 属性类型 [完整性约束] [after 原有字段]

eg:
alter table user modify address varchar(255) after age;
  • 删除外键

语法:
MySQL : alter table 表名 drop foreign key 外键名
Mssql : alter table 表名 drop constraint 外键名

eg: 
alter table example drop foreign key FK_STU_COURSE;
  • 删除表

语法:drop table 表名

eg : drop table example;

注:
在删除表的时候要谨慎,以避免误删,导致数据丢失,所以在删除前最好做好备份工作。
在删除表时,如果当时表存在外键,则先删除外键,再删除该表。
在删除有关关键外键表时,则先删除子表[存在外键的表],再删除主表

Oracle 特殊数据表-dual

一般的查询 select 列名 from 表名,但是有时候表并不十分明确,比如获取当前时间。其意义在于提供强制的数据源。

eg :
Select * from dual
Select 5+8*9 from dual
Select sysdate from dual
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值