千家信息网

Mysql基础入门-SQL_DDL语句

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,一、mysql数据库介绍:mysql数据库属于关系型数据库,关系型数据库是指采用关系模型来组织数据的数据库,似于Excel函数关系表。保持数据的一致性是关系型数据库的最大优势关系型数据库瓶颈:1.高并
千家信息网最后更新 2025年11月07日Mysql基础入门-SQL_DDL语句

一、mysql数据库介绍:

mysql数据库属于关系型数据库,关系型数据库是指采用关系模型来组织数据的数据库,似于Excel函数关系表。保持数据的一致性是关系型数据库的最大优势

关系型数据库瓶颈:

1.高并发读写硬盘I/O瓶颈;

2.对于关系型数据来说在一张海量数据表中查询效率是非常低的;

3.横向扩展困难,当一个应用系统用户量访问与日俱增的时候数据库没有办法像web server那样简单的通过添加更多的硬件或者节点来扩展和提供负载能力。

对于并发量不高及数据量较小的应用系统mysql还是占有很大优势,且目前mysql属于开源软件,且目前mysql的衍生数据库mariadb也正在快速发育中。

二、mysql基础入门:

SQL

sql:用户与数据库交付语言,被称为sql,sql是 Structured Query Language 结构话查询语言简称,是关系型数的数据库应用语言;

sql分类

DDL:数据定义语句

这些语句定义了不同数据段,数据库,列,表,索引等数据库对象。常用关键字包括create ,drop ,alter


DML:数据操纵语句

用于添加、删除、更新、、和查询数据库记录、常用语句关键字包括:insert、delete、update、select


DCL:数据控制语言

用于控制不同数据段之前的许可和访问级别语句,这些语句定义了数据库、表、字段、用户访问、权限和安全级别,主要的语句关键字包括grant、revoke。



DDL语句

DDL 是数据定义的缩写,简单来说就是对数据库内部对象进行创建、删除、修改等操作的语言,与DML的区别是DML只是对表内部数据进行操作,而不会涉及到定义结构的修改更不会涉及其他对象,DDL有数据库管理员使用。



库操作


1.数据库创建

启动数据库连接到mysql服务器使用

[root@localhost ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 4Server version: 5.1.73 Source distributionCopyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


  • 当输入一条命令要其执行后面加上;或者\g结束,如果不添加默认为换行继续输入命令。

  • 使用help;或者\h命令来获取帮助,通过\c命令来清除命令行buffer。


数据库创建语法如下:

CREATE DATABASE DBNAME;

例如:

mysql> CREATE DATABASE liaodb;Query OK, 1 row affected (0.00 sec)

Query OK 表示创建成功,(DML和DDL所有的操作不包括select操作成功后都会显示 Query OK)

1 row affected 表示操作只影响了一行记录;

(0.00 sec)表示操作执行的时间


2.查看数据库

语法:

SHOW DATABASES;

mysql> show DATABASES;+--------------------+| Database           |+--------------------+| information_schema || liaodb             || mysql              || test               |+--------------------+4 rows in set (0.00 sec)


默认存在的数据:

information_schema 数据对象信息存储,例如用户表信息。

mysql 存储了系统的用户权限等信息

test系统自动创建的测试数据库,所有用户都可以使用;


3.选择数据库

语法:

USE DBNAME;

mysql> USE mysql;Database changed


4.删除数据库

删除数据语法

drop database DBNAME;

删除我们刚刚创建的数据库liaodb

mysql> drop database liaodb;Query OK, 0 rows affected (0.00 sec)

注:

删除数据库谨慎操作,默认删除数据库后下面的表会一起被删除。





表操作



1.创建表

语法

CREATE TABLE TABLENAME(column_name_1 colemn_type_1 constraints,olumn_name_2 colemn_type_2 constraintsolumn_name_3 colemn_type_3 constraints)

column_name_1 是列的名字;column_type是列的数据类型;constraints是列的约束条件。

下面创建一个最常见的普通班级统计表

表包括name,age,sex,字段类型使用varchar(10) ,date ,varchar(1)

mysql> create table class_one(name varchar(10),age INT(3),sex varchar(1)); Query OK, 0 rows affected (0.02 sec)mysql> show tables;+----------------+| Tables_in_test |+----------------+| class_one      |+----------------+1 row in set (0.00 sec)


2.查看表的定义

语法:

DESC TABLENAME;

mysql> DESC class_one;+--------+-------------+------+-----+---------+-------+| Field  | Type        | Null | Key | Default | Extra |+--------+-------------+------+-----+---------+-------+| name   | varchar(10) | YES  |     | NULL    |       || age    | int(3)      | YES  |     | NULL    |       || sex    | varchar(1)  | YES  |     | NULL    |       |+--------+-------------+------+-----+---------+-------+4 rows in set (0.00 sec)

查看更为详细的表定义信息

show create table tablename \G;mysql> show create table class_one \G;*************************** 1. row ***************************       Table: class_oneCreate Table: CREATE TABLE `class_one` (  `name` varchar(10) DEFAULT NULL,  `age` int(3) DEFAULT NULL,  `sex` varchar(1) DEFAULT NULL,ENGINE=MyISAM DEFAULT CHARSET=latin11 row in set (0.00 sec)ERROR: No query specified


\G选项的含义是使得记录能够按照字段竖向排列。


3.删除表

DROP TABLE TABLENAME;mysql> DROP TABLE class_one;Query OK, 0 rows affected (0.00 sec)


4.修改表


1)修改表类型语法如下:

ALTER TABLE tablename MODIFY[COLUMN] column_definition [FIRST|AFTER col_name]

例如:将之前制作的class_one表中的name字段类型修改为改为verchar(20)

mysql> alter table class_one modify name varchar(20);Query OK, 0 rows affected (0.01 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> show create table class_one \G;*************************** 1. row ***************************       Table: class_oneCreate Table: CREATE TABLE `class_one` (  `name` varchar(20) DEFAULT NULL,  `age` int(3) DEFAULT NULL,  `sex` varchar(1) DEFAULT NULL,  `deptno` int(2) DEFAULT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin11 row in set (0.00 sec)ERROR: No query specified


2)增加表字段语法如下

ALTER TABLE tablename ADD [COLUMN] column_definition [FIRST|AFTER col_name]

FIRST|AFTER

定义新增的一条字段放置在那条字段前FIRST或者后AFTER

例如在class_one表中添加一条 fraction

mysql> alter table class_one add column fraction int(3);Query OK, 0 rows affected (0.00 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> desc class_one;+----------+-------------+------+-----+---------+-------+| Field    | Type        | Null | Key | Default | Extra |+----------+-------------+------+-----+---------+-------+| name     | varchar(15) | YES  |     | NULL    |       || age      | int(3)      | YES  |     | NULL    |       || sex      | varchar(1)  | YES  |     | NULL    |       || fraction | int(3)      | YES  |     | NULL    |       |+----------+-------------+------+-----+---------+-------+4 rows in set (0.00 sec)

3)删除表中字段语句如下

ALTER TABLE tablename drop [COLUMN] column_definition [FIRST|col_name]

例如将class中fraction和deptno字段删除

mysql> desc class_one;+----------+------------+------+-----+---------+-------+| Field    | Type       | Null | Key | Default | Extra |+----------+------------+------+-----+---------+-------+| name     | varchar(6) | YES  |     | NULL    |       || age      | int(3)     | YES  |     | NULL    |       || sex      | varchar(1) | YES  |     | NULL    |       || fraction | int(3)     | YES  |     | NULL    |       |+----------+------------+------+-----+---------+-------+4 rows in set (0.00 sec)mysql> alter table class_one drop column fraction;Query OK, 0 rows affected (0.01 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> alter table class_one drop column deptno;Query OK, 0 rows affected (0.00 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> desc class_one;+-------+------------+------+-----+---------+-------+| Field | Type       | Null | Key | Default | Extra |+-------+------------+------+-----+---------+-------+| name  | varchar(6) | YES  |     | NULL    |       || age   | int(3)     | YES  |     | NULL    |       || sex   | varchar(1) | YES  |     | NULL    |       |+-------+------------+------+-----+---------+-------+3 rows in set (0.00 sec)


4)字段改名语法如下

ALTER TABLE tablename CHANGE [COLUMN] old_col_name column_definition [FIRST\AFTER col_name]

例如将age字段更改为age1,字段类型更改为int(2);

mysql> alter table class_one change column age age1 int(2);Query OK, 0 rows affected (0.00 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> desc class_one;+-------+------------+------+-----+---------+-------+| Field | Type       | Null | Key | Default | Extra |+-------+------------+------+-----+---------+-------+| name  | varchar(6) | YES  |     | NULL    |       || age1  | int(2)     | YES  |     | NULL    |       || sex   | varchar(1) | YES  |     | NULL    |       |+-------+------------+------+-----+---------+-------+3 rows in set (0.00 sec)

5)更改字段排序

语法关键字

FIRST|AFTER

FIRST 表示放在某字段前

AFTER 表示放在某字段后

示例:新增一个字段为age 并且将其放在name字段后

mysql> alter table class_one add column age int(4) after name;Query OK, 0 rows affected (0.01 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> desc class_one    -> ;+-------+------------+------+-----+---------+-------+| Field | Type       | Null | Key | Default | Extra |+-------+------------+------+-----+---------+-------+| name  | varchar(6) | YES  |     | NULL    |       || age   | int(4)     | YES  |     | NULL    |       || sex   | varchar(1) | YES  |     | NULL    |       |+-------+------------+------+-----+---------+-------+3 rows in set (0.00 sec)

修改字段name将其放到sex字段后

mysql> desc class_one;+-------+------------+------+-----+---------+-------+| Field | Type       | Null | Key | Default | Extra |+-------+------------+------+-----+---------+-------+| name  | varchar(6) | YES  |     | NULL    |       || age   | int(4)     | YES  |     | NULL    |       || sex   | varchar(1) | YES  |     | NULL    |       |+-------+------------+------+-----+---------+-------+3 rows in set (0.00 sec)mysql> alter table class_one modify name varchar(6) after sex;Query OK, 0 rows affected (0.00 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> desc class_one;+-------+------------+------+-----+---------+-------+| Field | Type       | Null | Key | Default | Extra |+-------+------------+------+-----+---------+-------+| age   | int(4)     | YES  |     | NULL    |       || sex   | varchar(1) | YES  |     | NULL    |       || name  | varchar(6) | YES  |     | NULL    |       |+-------+------------+------+-----+---------+-------+3 rows in set (0.01 sec)


6)更改表名语法

ALTER TABLE tablename RENAME [TO] new_tablename

例如将class_one 改成成class_1

mysql> show tables;+----------------+| Tables_in_test |+----------------+| class_one      |+----------------+1 row in set (0.00 sec)mysql> alter table class_one rename class_1;Query OK, 0 rows affected (0.00 sec)mysql> show tables ;+----------------+| Tables_in_test |+----------------+| class_1        |+----------------+1 row in set
数据 数据库 字段 语法 语句 用户 命令 类型 语言 信息 关键 关键字 对象 系统 应用 不同 成功 优势 常用 应用系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 海康vrm录像管理服务器 超欧网络技术公司 信息软件开发公开招标公告 qq连接服务器超时是怎么回事 浙江警察学院网络安全与执法 软件开发音乐简谱生成器 上海晓花互联网科技有限公司 微博网络安全管理局 山东企业级服务器 网络技术白话文 1核2g服务器可以支持几个微信 数据库复制显示内存不足无法运行 软件开发每天的报价是多少钱 上海常见网络技术方法 数据库当前正在使用 网络安全课是什么 工信部通信行业网络安全 网络安全系统的程度取决于什么 数据库文件的格式转换 云虚拟机和云服务器有区别吗 腾讯云服务器搭建网站 lol服务器市场 浙江边锋网络技术有限公司 正联网络技术有限公司怎么样 山西多功能软件开发厂家报价 汽车网络安全与功能安全 软件开发工程量计算标准 适用于服务器的安全软件 中心策略管理服务器 c for循环添加数据库
0