数据定义语言
- 格式:ppt
- 大小:212.00 KB
- 文档页数:17
DDL数据定义语⾔DDL(Data Definition Language):数据定义语⾔,⽤于库和表的创建、修改、删除。
主要包括CREATE、DROP、ALTER语句;1、对数据库的操作-- 创建数据库create database [if not exists] 数据库名 [character set 字符集名];-- 删除数据库drop database [if exists] 数据库名;-- 修改数据库的字符集alter database 数据库名 character set gbk;2、常⽤的数据类型数值tinyint,⾮常⼩的数据,1个字节。
(bit)smallint,较⼩的数据,2个字节。
(short)mediumint,中等⼤⼩的数据,3个字节。
int,标准的整数,4个字节。
bigint,较⼤的整数,8个字节。
(long)float,单精度浮点数,4个字节。
double,双精度浮点数,8个字节。
decimal,字符串形式的浮点数(⽤于⾦融计算)。
字符串char,固定长字符串,⽐较耗费空间,长度⼤⼩:0~255。
varchar,可变字符串,长度⼤⼩:0~65535。
(String)tinytext,微型⽂本,2^8-1。
text,⽂本串,2^16-1。
(保存⼤⽂本)时间⽇期date,⽇期,YYYY-MM-DD。
time,时间,HH:mm:ss。
datetime,最常⽤的时间格式,YYYY-MM-DD HH:mm:ss。
timestamp,时间戳,1970.1.1到现在的毫秒数。
year,年份。
3、对表的操作表(table)是数据库的基本组成单元,所以数据都以表的形式组织,⽬的是可读性强。
表分为⾏和列,⾏:数据/记录(data),列:字段(column)字段属性:字段名,数据类型,相关的约束-- 创建数据表create table [if not exists] `表名`(`字段名` 列类型 [属性] [索引] [注释], -- 使⽤``来区分mysql⾃带的关键字...`字段名` 列类型 [属性] [索引] [注释])[表类型] [字符集设置];-- 删除数据表drop table [if exists] 表名;-- 添加字段alter table `表名` add(`字段名1` 字段类型1,...,`字段名n`,字段类型n);-- 修改字段类型alter table `表名` modify `字段名` 字段的新类型;-- 同时修改字段名和字段类型alter table `表名` change `字段名` `新字段名` 新字段类型;-- 删除字段alter table `表名` drop 字段名;-- 修改表名alter table `表名` rename to `新表名`;【⽰例 1】创建student表CREATE TABLE IF NOT EXISTS `student` (`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',`sex` VARCHAR(2) NOT NULL DEFAULT '男' COMMENT '性别',`birthday` DATETIME DEFAULT NULL COMMENT '出⽣⽇期',`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭地址',`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',PRIMARY KEY(`id`) -- 设置主键)ENGINE=INNODB DEFAULT CHARSET=utf8; -- 设置引擎和字符编码4、字段属性Unsigned:⽆符号的,声明的数据不允许为负数。
【MySQL】DDL数据定义语⾔的基本⽤法create、drop和alter(增删改)DDL 的基础语法⽂章⽬录简单复习⼀波 SQL必知必会DDL 的英⽂全称是 Data Definition Language(数据定义语⾔),它定义了数据库的结构和数据表的结构。
在 DDL 中,我们常⽤的功能是增删改,分别对应的命令是 CREATE、DROP 和 ALTER。
对数据库进⾏定义建数据库的基本SQL语法格式为:CREATE DATABASE database_name;//创建⼀个名为 database_name 的数据库“database_name”为要创建的数据库的名称,该名称不能与已经存在的数据库重名。
mysql> CREATE DATABASE database_name;Query OK, 1 row affected (0.00 sec)mysql> CREATE DATABASE database_name;ERROR 1007 (HY000): Can't create database 'database_name'; database exists删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将⼀同被删除。
删除数据库的基本SQL语法格式为:DROP DATABASE database_name;//删除⼀个名为 database_name 的数据库“database_name”为要删除的数据库的名称。
若指定的数据库不存在,则删除出错。
mysql> DROP DATABASE database_name;Query OK, 0 rows affected (0.00 sec)mysql> DROP DATABASE database_name;ERROR 1008 (HY000): Can't drop database 'database_name'; database doesn't exist在这⾥插⼊图⽚描述mysql> CREATE DATABASE database_name;Query OK, 1 row affected (0.00 sec)mysql> CREATE DATABASE database_name;ERROR 1007 (HY000): Can't create database 'database_name'; database existsmysql> SHOW CREATE DATABASE database_name;+---------------+------------------------------------------------------------------------+| Database | Create Database |+---------------+------------------------------------------------------------------------+| database_name | CREATE DATABASE `database_name` /*!40100 DEFAULT CHARACTER SET utf8 */ |+---------------+------------------------------------------------------------------------+1 row in set (0.00 sec)mysql> DROP DATABASE database_name;Query OK, 0 rows affected (0.00 sec)mysql> SHOW CREATE DATABASE database_name;ERROR 1049 (42000): Unknown database 'database_name'CREATE DATABASE mysqlcrashcourse;// 创建⼀个名为 mysqlcrashcourse 的数据库DROP DATABASE mysqlcrashcourse;// 删除⼀个名为 mysqlcrashcourse 的数据库对数据表进⾏定义创建表结构的语法是这样的:CREATE TABLE table_name;创建⼀个名为 table_name的表⼀般要写⾄少写⼀⾏ A table must have at least 1 column,后⾯介绍如何创建表结构创建⼀个名为 table_name的表mysql> CREATE DATABASE database_name;Query OK, 1 row affected (0.00 sec)mysql> USE database_name;Database changedmysql> CREATE TABLE table_name;ERROR 1113 (42000): A table must have at least 1 columnmysql> CREATE TABLE table_name( name VARCHAR(50) NOT NULL);Query OK, 0 rows affected (0.01 sec)mysql> show tables;+-------------------------+| Tables_in_database_name |+-------------------------+| table_name |+-------------------------+1 row in set (0.00 sec)mysql> CREATE TABLE table_name( name VARCHAR(50) NOT NULL);ERROR 1050 (42S01): Table 'table_name' already existsmysql>删除表的基本SQL语法格式为:DROP TABLE table_name;DROP TABLE [IF EXISTS] table_name;DROP TABLE table_name;删除⼀个名为 table_name的表DROP TABLE IF EXISTS table_name;执⾏了这条语句如果存在table_name表就删除,不存在不会报错也是执⾏。
数据库的DDL、DML、DQL、DCL名词详解展开全文简言之:1,DDL(DataDefinitionLanguage):数据定义语言,用来定义数据库对象:库、表、列等;2,DML (DataManipulationLanguage):数据操作语言,用来定义数据库记录(数据);3,DQL(DataQueryLanguage):数据查询语言,用来查询记录(数据);4,DCL(DataControlLanguage):数据控制语言,用来定义访问权限和安全级别。
举例说明1,DDL用来定义数据库对象:库、表、列等;适用范围:对数据库中的某些对象(例如,database,table)进行管理,如Create,Alter和Drop.注意:在生产环境中,DDL类操作需要慎用,因为不能做roolback操作,一旦执行无法回退。
2,DML对数据库中的数据进行一些简单操作,,如insert,delete,update,select(插入、删除、修改、检索)等都是DML.对select来说,它有两种划分方法,可以放在DML,也可以单独放在DQL3,DQL用来查询记录(数据);基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:SELECT <字段名表>FROM <表或视图名>WHERE <查询条件> 4,DCL用来定义访问权限和安全级别。
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。
如:1.GRANT:授权。
2.ROLLBACK [WORK]TO[SAVEPOINT]:回退到某一点。
回滚—ROLLBACK回滚命令使数据库状态回到上次最后提交的状态。
其格式为:SQL>ROLLBACK;MIT [WORK]:提交。
在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。
在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。
汇编语法大全汇编语言是一种底层的计算机语言,可以用来编写应用程序、驱动程序和嵌入式系统等。
其语法简洁、效率高,但也较为复杂。
下面是汇编语法大全,希望对大家能有所帮助。
1. 注释语句注释语句是程序员为了方便自己和他人阅读代码而添加的语句。
汇编语言中,使用分号(;)表示注释语句,写在行尾。
示例:mov ax, bx ;将bx寄存器的值赋给ax寄存器2. 标号语句标号语句用来表示程序中的一个位置,在汇编程序中可以用它来实现跳转、条件执行等功能。
标号语句必须在第一行,以字母开头,由数字、字母和下划线组成,长度不超过32个字符。
3. 数据定义语句数据定义语句用来为变量、常量分配存储空间,可以为它们指定初值。
汇编语言中,数据定义语句有三种形式:db、dw、dd。
db:定义一个字节(8位)长度的数据,可以用来存储字符、布尔型变量等。
data1 db 'A' ;定义一个字符型变量,初值为'A'4. 操作数表示操作数即指令中被操作的对象,可以是通用寄存器、内存单元、立即数等。
汇编指令中,操作数的表示方法主要有以下几种:寄存器表示法:使用寄存器的名称表示操作数,如AL、AX、DX等。
立即数表示法:表示一个常量数值,用于参与运算或存储到内存中,如100、0AH等。
内存变量表示法:使用内存变量的地址表示操作数,如[2000H]、[BX]等。
mov al, 02h ;将立即数02h赋给AL寄存器mov byte ptr ds:[bx], al ;将AL寄存器的值存储到2000h地址所指向的内存单元中5. 寻址方式汇编语言中,寻址方式用于表示操作数在内存中的地址。
汇编语言提供了多种寻址方式,例如寄存器间接寻址、基址变址寻址、相对寻址等。
寄存器间接寻址寄存器间接寻址是指操作数的地址存储在一个寄存器中。
例如,[BX]表示将BX寄存器中的值作为地址,访问该地址存储的数据。
基址变址寻址相对寻址相对寻址是指让程序计算出偏移量以便于寻址,这种寻址方式用于程序中的跳转指令。
MySQL数据定义语⾔(DDL)参考资料:SQL 包含以下4部分:1数据定义语⾔(DDL):DROP、CREATE、ALTER 等语句。
2数据操作语⾔(DML):INSERT(插⼊)、UPDATE(修改)、DELETE(删除)语句。
3数据查询语⾔(DQL):SELECT 语句。
4数据控制语⾔(DCL): GRANT、REVOKE、COMMIT、ROLLBACK 等语句。
MySQL之DDL(Data Definition Language): 数据定义语⾔:CREATE,ALTER,DROP等DDL:操作数据库,表(CRUD)1、操作数据库(CRUD)(1)C(Create):创建数据库CREATE DATABASE[IF NOT EXISTS]数据库名[[DEFAULT]CHARACTER SET字符集名][[DEFAULT] COLLATE 校对规则名];[]中的内容是可选的。
语法说明如下:数据库名:创建数据库的名称。
MySQL 的数据存储区将以⽬录⽅式表⽰ MySQL 数据库,因此数据库名称必须符合操作系统的⽂件夹命名规则,不能以数字开头,尽量要有实际意义。
注意在 MySQL 中不区分⼤⼩写。
IF NOT EXISTS:在创建数据库之前进⾏判断,只有该数据库⽬前尚不存在时才能执⾏操作。
此选项可以⽤来避免数据库已经存在⽽重复创建的错误。
[DEFAULT]CHARACTER SET:指定数据库的字符集。
指定字符集的⽬的是为了避免在数据库中存储的数据出现乱码的情况。
如果在创建数据库时不指定字符集,那么就使⽤系统的默认字符集。
[DEFAULT] COLLATE:指定字符集的默认校对规则。
eg.mysql>CREATE DATABASE IF NOT EXISTS test->DEFAULT CHARACTER SET utf8->DEFAULT COLLATE utf8_general_ci;Query OK, 1 row affected, 1 warning (0.01 sec)(2)R(Retrieve):查询SHOW DATABASES [LIKE '数据库名'];语法说明如下:LIKE从句是可选项,⽤于匹配指定的数据库名称。
数据控制语言(DCL,Data ControlLanguage)2SQL Server 2000中的SQL语言是Transact-SQL语言。
Transact-SQL语言主要组成部分有一下几种:1.数据定义语言(DDL,Data Definition Language)2.数据操纵语言(DML,Data Manipularion Language)3.数据控制语言(DCL,Data Control Language)4.系统存储过程(System Stored Procedure)5.一些附加的语言元素数据控制语言(DCL)数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。
GRANT语句GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。
授予语句权限的语法形式为:GRANT {ALL | statement[,...n]} TO security_account [ ,...n ]授予对象权限的语法形式为:GRANT { ALL [ PRIVILEGES ] | permission [ ,...n ] }{[ ( column [ ,...n ] ) ] ON { table | view }| ON { table | view } [ ( column [ ,...n ] ) ]| ON { stored_procedure | extended_procedure }| ON{ user_defined_function } } TO security_account [ ,...n ] [ WITH GRANT OPTION ] [ AS { group | role } ]2、DENY语句DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。
数据定义语句
数据定义语句,又称DDL (Data Definition Language),是一种用来定义数据库对象的语言,包括创建表、修改表结构、删除表等操作。
DDL 与 DML (Data Manipulation Language) 相对应,DML 用于对数据库中的数据进行操作,例如添加、修改和删除数据。
在数据库设计和管理中,DDL 是非常重要的一部分。
通过使用DDL,我们可以创建和管理表、索引、约束、视图等数据库对象,而且可以确保数据的完整性、一致性和安全性。
以下是几个常见的 DDL 命令:
1. CREATE TABLE:用于创建新的表格,定义表格的字段名、数据类型、约束等信息。
2. ALTER TABLE:用于修改表格的结构,例如添加、修改、删除字段,修改数据类型等。
3. DROP TABLE:用于删除表格及其所有数据。
4. CREATE INDEX:用于创建索引,提高查询速度。
5. ALTER INDEX:用于修改索引,例如添加或删除索引字段。
6. DROP INDEX:用于删除索引。
除了以上命令,还有很多其他的 DDL 命令可供使用。
在使用这些命令时,需要注意一些事项,例如:在创建表格时,应该选择适当的数据类型,避免浪费存储空间;在修改表格结构时,应该先备份数据,以免数据丢失;在创建索引时,应该根据查询需求来选择适当的字段。
总之,DDL 是数据库设计和管理中不可或缺的一部分。
通过合理使用 DDL 命令,可以创建出高效、安全、易维护的数据库系统。
掌握SQL四条最基本的数据操作语句:Insert,Select,Update和Delete。
练掌握SQL是数据库用户的宝贵财富。
在本文中,我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。
当你完成这些学习后,显然你已经开始算是精通SQL了。
在我们开始之前,先使用CREATE TABLE语句来创建一个表(如图1所示)。
DDL 语句对数据库对象如表、列和视进行定义。
它们并不对表中的行进行处理,这是因为DDL 语句并不处理数据库中实际的数据。
这些工作由另一类SQL语句—数据操作语言(DML)语句进行处理。
SQL中有四种基本的DML操作:INSERT,SELECT,UPDATE和DELETE。
由于这是大多数SQL用户经常用到的,我们有必要在此对它们进行一一说明。
在图1中我们给出了一个名为EMPLOYEES的表。
其中的每一行对应一个特定的雇员记录。
请熟悉这张表,我们在后面的例子中将要用到它。
INSERT语句用户可以用INSERT语句将一行记录插入到指定的一个表中。
例如,要将雇员John Smith的记录插入到本例的表中,可以使用如下语句:INSERT INTO EMPLOYEES V ALUES('Smith','John','1980-06-10','Los Angles',16,45000);通过这样的INSERT语句,系统将试着将这些值填入到相应的列中。
这些列按照我们创建表时定义的顺序排列。
在本例中,第一个值“Smith”将填到第一个列LAST_NAME中;第二个值“John”将填到第二列FIRST_NAME中……以此类推。
我们说过系统会“试着”将值填入,除了执行规则之外它还要进行类型检查。
如果类型不符(如将一个字符串填入到类型为数字的列中),系统将拒绝这一次操作并返回一个错误信息。
数据定义语句⼀、数据库的完整性约束 1. 主键:primary key 2. 外键:foreign key 3. ⾮空:not null 4. 检查:enum/set 5. 默认值:default 6. 唯⼀:unique 7. ⾃增长:auto_increment⼆、数据库的三⼤范式 1. 确保每列保持原⼦性 2. 确保每列的唯⼀性 3. 确保每列都和主键直接相关三、数据定义语⾔:DDL 作⽤:创建、删除、修改库表结构四、DDL #进⼊数据库 mysql -u root -p (密码) #查看数据库 show databases; #切换数据库 use 数据库名; #创建数据库 create database 数据库名; #删除数据库 drop database 数据库名; #修改数据库的字符集 alter database 数据库名 character set=UTF8; #创建外键(主键外键类型必须⼀样) alter table 表名 add foreign key (外键名) references 主表名(主键名); #删除外键 alter table 表名 drop foreign key (外键名); #创建主键 alter table 表名 add primary key (主键名); #删除主键 alter table 表名 drop primary key; #创建表(应先切换需要的数据库) create table 表名( 列名列类型其他关键词, ... 列名列类型其他关键词, primary key (主键名) ); #复制⼀张表的结构和数据 creat table 新表名 as (select * from 被复制的表名); #复制⼀张表结构 create table 新表名 like 被复制的表名; #查看数据表结构 desc 表名; #查看创建表的sql语句 show create table 表名; #删除表 drop table 表名; #修改列类型 alter table 表名 modify 列名列类型(修改后的); #修改列名、列类型 alter table 表名 change 原列名新列名列类型; #添加表字段 alter table 表名 add( 列名列类型, ... ); #添加表字段到某列后 alter table 表名 add 新列名列类型 after 列名; #删除表的某⼀列 alter table 表名 drop 列名; #修改表的名字 alter table 表名 rename 新表名;。
SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,是一个综合的、通用的、功能极强,同时又简洁易学的语言。
其主要特点如下:1.综合统一非关系模型(层次模型、网状模型)的数据语言一般分为模式数据定义语言(Data Definition Language,简称模式DDL)、外模式数据定义语言(外模式DDL)、子模式数据定义语言(子模式DDL)以及数据操纵语言(Data Manipulation Language,简称DML),它们分别完成模式、外模式、内模式的定义和数据存取、处置功能。
而SQL语言则集数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式、录入数据以建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作的要求,这就为数据库应用系统开发提供了良好的环境。
2.高度非过程化非关系数据模型的数据操纵语言是面向过程的语言,要完成某项请求,必须指定存取路径。
而用SQL语言进行数据操作,用户只需提出“做什么”,而不必指明“怎么做”。
因此用户无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。
这不但大大减轻了用户负担,而且有利于提高数据独立性。
3.用同一种语法结构提供两种使用方式SQL语言既是自含式语言,又是嵌入式语言。
作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言(例如C、COBOL、FORTRAN、PL/1)程序中,供程序员设计程序时使用。
而在两种不同的使用方式下,SQL语言的语法结构基本上是一致的。
这种以统一的语法结构提供两种不同的使用方式的作法,为用户提供了极大的灵活性与方便性。
4.语言简洁,易学易用SQL语言功能极强,但由于设计巧妙,语言十分简洁,完成数据定义、数据操纵、数据控制的核心功能只用了9个动词:CREA TE、DROP、ALTER、SELECT、INSERT、UPDA TE、DELETE、GRANT、REVOKE,如表3-1所示。
数据控制语言与数据定义语言常用语句一、表空间、用户、权限 (1)二、表 (2)三、索引 (6)四、视图 (7)一、表空间、用户、权限数据控制语言(data control language,DCL)数据控制语言(data definition language DDL)1、创建表空间Create tablespace 表空间名‘存放路径\名称.dbf’size **M(表空间大小)autoextend on next **M maxsize unliminted;2、创建用户Create user 用户名identified by 密码(密码不能为数字)Default tablespace 表空间--------指定表空间(可选)Temporary tablespace 临时表空间------指定临时表空间(可选一般式temp)Account unlock/lock 指定用户是否被锁定3、授予用户权限授予某个用户什么权限使用grant 权限,权限,权限。
to user [with admin option]可选(指将授权的权限,该用户还可以授予给其他用户)撤销某个用户什么权限使用revoke 权限,权限,权限。
from user;table,drop any table,create procedure,create any procedure,create view,create user to 用户名user_name;Grant 权限to public;将权限授予所有用户;Grant DBA to user_nameGrant resource to user_name 将resource角色授权给用户后,创建的用户才能够在相应的表空间上创建表4、查看授予用户的系统权限通过数据字典中的user_sys_privs视图,可以查看授予用户的系统权限Select * from user_sys_privs查看当前连接用户的系统权限5、收回用户系统权限Revoke system_privsleges(系统权限) from user_name;授予者可以收回被授予者的权限Revoke 系统权限from public (将赋予public的某一权限收回)Revoke create session from public6、对象权限控制对象权限控制包括对象权限授予和收回。