SQL语言-DDL、DML、DCL

目录

一、SQL概述和分类

1、概述

2、sql语言分类

二、DDL 数据定义语言

1、操作数据库

2.1.1 创建数据库

2.1.2 查看数据库

2.1.3 修改数据库

2.1.4 删除数据库

2.1.5 其他

2、操作表

2.2.1 创建表

2.2.2 其他表操作

三、DML 数据操作语言

1、INSERT

2、UPDATE

3、DELETE

4、日期类型

四、sql中的运算符

1、算术运算

2、赋值运算

3、逻辑运算

4、关系运算

五、DCL 数据控制语言

1、创建用户

2、用户授权

3、删除用户


一、SQL概述和分类

1、概述

SQL(Structure Query Language)结构化查询语言。

SQL被美国国家标准局(ANSI)确定为关系型数据库美国标准,后被国际化标准组织(ISO)采纳为关系型数据库的国际化标准。

各数据库厂商都支持ISO的SQL标准,也在标准基础之上做了扩展。

CRUD操作:Create、Read、Update、Delete

 

2、sql语言分类

DDL(Data Definition Language)

数据定义语言。用来定义数据库对象:库、表、列等。

 

DML(Data Manipulation Language)

数据操作语言。用来定义数据库记录(数据)增删改。

 

DCL(Data Control Language)

数据库控制语言。用来定义数据库安全权限和访问级别。

 

DQL(Data Query Language)

数据库查询语言。用来查询数据库记录(数据)。

 

二、DDL 数据定义语言

1、操作数据库

2.1.1 创建数据库

编码方式:gb2312、gbk、utf8mb4、iso-8859-1

// create database 数据库名
create database mydb1;
// create database 数据库名 character set 编码方式
create database mydb1 character set utf8mb4;
// create database 数据库名 set 编码方式 collate 排序规则
create database mydb1 set GBK collate gbk_chinese_ci;

 

2.1.2 查看数据库

查看当前服务器中所有数据库

show databases;

查看数据库定义信息

show create database mydb1;

 

2.1.3 修改数据库

alter database mydb1 character set utf-8;

 

2.1.4 删除数据库

drop database mydb1;

 

2.1.5 其他

查看当前使用数据库

select database();

切换使用数据库

use mydb2;

 

2、操作表

2.2.1 创建表

语法:

create table 表名(

列名1 数据类型 [约束],

列名2 数据类型 [约束],

列名n 数据类型 [约束]

);

说明:

表名、列名自定义,多列之间以逗号隔开,最后一行不写逗号;

约束:可有可无,null 或者 not null 默认null;primary key,描述主键等。

示例:

create table card(
	cardid int not null,
	cardnum varchar(20),
	regDate date
);

常用数据类型:

数据类型

描述

int

整型

double

浮点型。double(5,2) 表示最多5位,其中两位必须是小数。

char

固定长度字符串类型。char(10)。'aaa ' 占10位。

varchar

可变长度字符串类型。varchar(10)。'aaa' 占3位。

text

字符串类型。存储大长度字符串,如小说。

blob

字节类型,保存文件信息(图片、音视频等)

date

日期型,"yyyy-MM-dd"

time

时间型,"hh:mm:ss"

timestamp

时间戳类型。"yyyy-MM-dd hh:mm:ss"会自动赋值。

datetime

日期时间型。"yyyy-MM-dd hh:mm:ss"

2.2.2 其他表操作

删除表

// drop table 表名;

drop table cardinfo;

 

查询当前数据库中所有表

show tables;

 

查看表字段信息

// desc 表名;

desc cardinfo;

 

增加列

// alter table 表名 add 列名 数据类型;

alter table cardinfo add delDate date;

 

修改列

// alter table 表名 change 旧列名 新列名 新的数据类型;

alter table cardinfo change cardnum cardnum varchar(30);

 

删除列

// alter table 表名 drop 列名;

alter table cardinfo drop regDate;

 

修改表名

// alter table 旧表名 rename 新表名;

alter table card rename CardInfo;

 

查看创建表细节

show create table 表名;

 

修改表字符集

alter table 表名 character set 编码方式;

 

三、DML 数据操作语言

DML针对表中对的数据进行增(INSERT)删(DELETE)改(UPDATE)。

 

注意点:

mysql中,字符串和日期都需要使用单引号括起来;空值:null。

 

1、INSERT

基本用法:

insert into 表名(列名) values(数据值);

insert into student(stuname,stuage,stusex,birthday) values('张三1',18,'a','2000-1-1');

注意:

  1. 多列与多列值之间使用逗号分隔;
  2. 列名和列值需要一一对应;
  3. 非数值的列值需要使用单引号括起来;

 

用法二:

当给所有列添加数据的时候可以将列名省略;

此时列值的顺序按照数据表中列的顺序执行;

insert into student values('李四',12,'1111',189.98,'2000-1-1','男','2007-1-1');

 

用法三:

同时添加多行数据

insert into 表名(列名) values(第一行数据),(第二行数据)....;

insert into student(stuname,stuage,stusex,birthday) values('张三3',18,'a','2000-1-1'), ('张三4',18,'a','2000-1-1'), ('张三5',18,'a','2000-1-1'), ('张三6',18,'a','2000-1-1'), ('张三7',18,'a','2000-1-1'), ('张三8',18,'a','2000-1-1');

注意:

  1. 列名与列值的类型、顺序、个数必须要一致;
  2. 参数值不要超出列定义长度;
  3. 如果插入控制,请使用null;
  4. 插入日期和字符一样,都需要用单引号括起来。

 

2、UPDATE

语法:

update 表名 set 列名1=值1,列名2=值2......where 列名=值;

 

3、DELETE

语法:

delete from 表名 [where 列名=值];

truncate table 表名;

注意:

  1. delete删除数据表中数据,表结构还在;删除后的数据可以找回来。
  2. truncate是直接把表drop掉,再创建一个新的空表;删除的数据不能找回,执行速度比delete快。

 

4、日期类型

date:yyyy-MM-dd (年月日)

time:hh:mm:ss (时分秒)

datetime:yyyy-MM-dd hh:mm:ss (年月日时分秒)

获取当前时间:now();

 

四、sql中的运算符

1、算术运算

加(+)减(-)乘(*)除(/)取余(%)

 

2、赋值运算

=     赋值方向:从右往左赋值

 

3、逻辑运算

且(and )或(or )非(not )

 

4、关系运算

大于(> ) 小于(< ) 大于等于(>= ) 小于等于(<= ) 不等于(!= 或者 <> ) 等于(= )

 

五、DCL 数据控制语言

1、创建用户

create user 用户名@localhost identified by 密码; 本地用户才能登陆

create user test@localhost identified by 'test@123';



create user 用户名@客户端IP identified by 密码; 指定IP才能登陆

create user [email protected] identified by 'test@123';



create user 用户名@'%' identified by 密码; 任意IP均可登陆

create user test@'%' identified by 'test@123';

 

2、用户授权

权限1,权限2......权限n on 数据库名.* to 用户名@IP;

给指定用户授予指定数据库指定权限;

grant select,insert,delete,update,create on test_db.* to test@'%';

grant all on *.* to 用户名@IP;

grant all on *.* to test@localhost;

 

用户权限查询

show grants for 用户名@IP;

show grants for root@'%';

 

权限回收

revoke 权限1,权限2,......权限n on 数据库名.* from 用户名@IP;

revoke all on *.* from test@'%';

 

3、删除用户

drop user 用户名@IP;

drop user test@'%';

 

 

你可能感兴趣的:(数据库设计,sql,ddl,dml,mysql)