0

0

MySQL心得2--命令行方式建库和表_MySQL

php中文网

php中文网

发布时间:2016-06-01 13:42:07

|

1051人浏览过

|

来源于php中文网

原创

bitsCN.com  1.创建数据库  使用create database或create schema命令可以创建数据库。 create database 库名 create database if not exists 库名(创建库并检验创建的库是否存在,不存在则建,存在就不建了) MySQL不允许两个数据库使用相同的名字,使用ifnot exists从句可以不显示错误信息 显示所有数据库: showdatabases;     显示创建数据库的定义信息: show create dabasese 库名 2. 创建了数据库之后使用USE命令可指定当前数据库。 语法格式:use  db_name; 说明:这个语句也可以用来从一个数据库“跳转”到另一个数据库,在用create database语句创建了数据库之后,该数据库不会自动成为当前数据库,需要用这条USE语句来指定。 注意:在MySQL中,每一条SQL语句都以“;”作为结束标志。 mySQL语法中不区分大小写。创建数据库的必须是系统管理员,或者拥有用户级别的create权限。在安装MySQL的过程中已经创建了系统管理员,名为root,假设密码为root。 3.创建库的同时指定字符集,校对规则: create database mydb character set utf8 collate utf8-general_ci; character set:指定数据库字符集(Charset),collate:指定字符集的校对规则 4.修改数据库,只能改参数 数据库创建后,如果需要修改数据库的参数,可以使用alter database命令。 语法格式: alter {database | schema} [db_name]    alter_specification [, alter_specification] ... 其中alter_specification:     [default] character set charset_name    | [default] collate collation_name 说明: alter database用于更改数据库的全局特性,这些特性储存在数据库目录中的db.opt文件中。用户必须有对数据库进行修改的权限,才可以使用 alterdatabase。修改数据库的选项与创建数据库相同,功能不再重复说明。如果语句中数据库名称忽略,则修改当前(默认)数据库。 5.删除数据库 drop database 库名 drop database if exists 库名(避免删除不存在的数据库时出现的MySQL错误信息。) 注意:这个命令必须小心使用,因为它将删除指定的整个数据库,该数据库的所有表(包括其中的数据)也将永久删除。 6.创建表 创建表就是创建表的结构:包含哪些字段(属性),字段名,字段类型 create table 表名 (字段名1 类型,  字段名2  类型, 。。。。 ); 举例:创建一个学生表   use 库名(确定你的表建在哪个库中,把此库变为当前数据库); create table xs   (        id int,        name char(10),        sex char(2) ); Create [temporary] table [if not exists] tbl_name    [ ( [column_definition] , ... | [index_definition] ) ]    [table_option] [select_statement]; 说明: ●  temporary:该关键字表示用create命令新建的表为临时表。不加该关键字创建的表通常称为持久表,在数据库中持久表一旦创建将一直存在,多个用户或者多个应用程序可以同时使用持久表。有时候需要临时存放数据,例如,临时存储复杂的select语句的结果。此后,可能要重复地使用这个结果,但这个结果又不需要永久保存。这时,可以使用临时表。用户可以像操作持久表一样操作临时表。只不过临时表的生命周期较短,而且只能对创建它的用户可见,当断开与该数据库的连接时,MySQL会自动删除它们。 ●  创建表时也可使用if not exists语句来判断创建的表是否已存在,避免出现错误。 ●  要创建的表的表名(tbl_name)必须符合标志符规则,如果有MySQL保留字必须用单引号括起来。 ●  column_definition:列定义,包括列名、数据类型,可能还有一个空值声明和一个完整性约束。 ●  index_definition:表索引项定义,主要定义表的索引、主键、外键等,具体定义将在后面讨论。     ●  table_option:用于描述表的选项。 ●  select_statement:可以在create table语句的末尾添加一个select语句,在一个表的基础上创建表 7.修改表结构:增加字段   修改旧字段   删除字段 alter table 表名 add 字段名 类型(宽度)         //增加字段 modify 旧字段 类型             //修改旧字段 drop 字段名                   //删除字段 change 旧字段名 新字段内容     //改列名 order by col_name            //排序  convert  to character set charset_name [字符集名]    //将字符集转换为二进制  [default]character set charset_name [字符集名]   //修改默认字符集 举例:在学生表中增加birthday字段、修改name字段、修改字段name的名; alter table xs add birthday date;   modify name varchar(20); change name sname varchar(20); 8.修改表名 rename table 旧名 to 新名 分类 数据类型 说明 数值类型 bit (M) tinint [unsigned] [zerofill] bool,boolean  smallint [unsigned] [zerofill] int [unsigned] [zerofill] bigint [unsigned] [zerofill] float[(M,D)][unsigned][zerofill]    double[(M,D)][unsigned][zerofill]    位类型。M指定位数,默认值1,范围1-64 带符号的范围是-128到127。无符号0到255。   使用0或1表示真或假 2的16次方 2的32次方 2的64次方 M指定显示长度,d指定小数位数 表示比float精度更大的小数 文本、二进制类型 char(size) char(20) varchar(size)  varchar(20) blob    longblob text(clob)    longtext(longclob) 固定长度字符串 可变长度字符串 二进制数据 大文本 时间日期 date/datetime/TimeStamp 日期类型(YYYY-MM-DD)  (YYYY-MM-DD HH:MM:SS),TimeStamp表示时间戳,它可用于自动记录insert、update操作的时间 注意: 在字符数据类型和数值数据类型之后,MySQL允许指定一个数据类型选项用来改变数据类型的属性和功能。 对于字符数据类型,MySQL支持两种数据类型选项:characterset和collate。如果要区分字符的大小写情况,可以在字符类型后面加上bingary。 对于除bit以外的数值数据类型,MySQL允许添加一个或多个数据类型选项。unsigned:不允许负值。zerofill:当插入的值长度小于字段设定的长度时,剩余部分用0填补。 与int有关的类型与java中的bit、short、int、long分别对应。 varchar、bolb和text类是变长类型。每个类型的存储需求取决于列值的实际长度。 9.  列定义column_definition格式如下: col_name  type  [not null | null] [default default_value]    [auto_increment] [unique [key] | [primary] key]    [comment 'string'] [reference_definition] 说明:     ●  col_name:表中列的名字。列名必须符合标志符规则,长度不能超过64个字符,而且在表中要唯一。如果有MySQL保留字必须用单引号括起来。 ●  type:列的数据类型,有的数据类型需要指明长度n,并用括号括起,MySQL支持的数据类型在附录C中介绍。 ●  auto_increment:设置自增属性,只有整型列才能设置此属性。当插入null值或0到一个auto_increment列中时,列被设置为value+1,在这里value是此前表中该列的最大值。auto_increment顺序从1开始。每个表只能有一个auto_increment列,并且它必须被索引。 ● not null | null:指定该列是否允许为空。如果不指定,则默认为null。 ●  default default_value:为列指定默认值,默认值必须为一个常数。其中,BLOB和TEXT列不能被赋予默认值。如果没有为列指定默认值,MySQL自动地分配一个。如果列可以取NULL值,默认值就是NULL。如果列被声明为NOT NULL,默认值取决于列类型: (1)对于没有声明auto_increment属性的数字类型,默认值是0。对于一个auto_increment列,默认值是在顺序中的下一个值。 (2)对于除timestamp以外的日期和时间类型,默认值是该类型适当的“零”值。对于表中第一个timestamp列,默认值是当前的日期和时间。 (3)对于除enum的字符串类型,默认值是空字符串。对于enum,默认值是第一个枚举值。 ●  unique key | primary key:两者都表示字段中的值是唯一的。primary key表示设置为主键,一个表只能定义一个主键,主键一定要为notnull。 ●  comment 'string':对于列的描述,string是描述的内容。 ●  reference_definition:指定参照的表和列。 10. (1).复制表 : create table 表名 like 表名1 语法格式: create [temporary] table[if not exists] tbl_name     [ ( )like old_ name [ ] ]     | [as (select_statement)] ; 说明: 使用LIKE关键字创建一个与old _name表相同结构的新表,列名、数据类型、空指定和索引也将复制,但是表的内容不会复制,因此创建的新表是一个空表。使用as关键字可以复制表的内容,但索引和完整性约束是不会复制的。select_statement表示一个表达式,例如,可以是一条select语句。 (2).删除表 : drop table 表名(这个命令将表的描述、表的完整性约束、索引及和表相关的权限等都全部删除)     (3).修改表名 : rename子句,语法格式: rename table old_name to new_name new_tbl_name是新表名。例如,将表a改名为b:alter table  a rename to b ;除了上面的alter table命令,还可以直接用renametable语句来更改表的名字。 ●  order by子句(以后介绍):用于在创建新表时,让各行按一定的顺序排列。注意,在插入和删除后,表不会仍保持此顺序。在对表进行了大的改动后,通过使用此选项,可以提高查询效率。在有些情况下,如果表按列排序,对于MySQL来说,排序可能会更简单。 ●  table_options:修改表选项,具体定义与create table语句中一样。 可以在一个alter table语句里写入多个add、alter、drop和chang子句,中间用逗号分开。这是MySQL相对于标准SQL的扩展。在标准SQL中,每个alter table语句中每个子句只允许使用一次。 11.说明:表中大多数的选项涉及的是表数据如何存储及存储在何处。多数情况下,不必指定表选项。engine选项是定义表的存储引擎,具体在附录E中介绍。 举例: USE mydb1; CREATE TABLE XS (    学号      char(6)    NOTNULL  primary KEY,    姓名      char(8)    NOTNULL , 专业名  char(10)  NOT NULL , 性别    tinyint(1) NOT NULL default  1 ) engine=InnoDB; 说明:“primary KEY”表示将“学号”字段定义为主键。“default 1”表示“性别”的默认值为1。“engine=InnoDB”表示采用的存储引擎是InnoDB,InnoDB是MySQL在Windows平台默认的存储引擎,所以“engine=InnoDB”可以省略。 12.说明: ●  ignore:是MySQL相对于标准SQL的扩展。若在修改后的新表中存在重复关键字,如果没有指定ignore,当重复关键字错误发生时操作失败。如果指定了ignore,则对于有重复关键字的行只使用第一行,其他有冲突的行被删除。 ●  column_definition:定义列的数据类型和属性,具体内容在create table的语法中已做说明。 ●  first| after col_name:表示在某列的前或后添加,不指定则添加到最后。 注意:若表中该列所存数据的数据类型与将要修改的列的类型冲突,则发生错误。例如,原来char类型的列要修改成int类型,而原来列值中有字符型数据“a”,则无法修改。 13.   1).  空值(NULL)概念 空值通常表示未知、不可用或将在以后添加的数据。若一个列允许为空值,则向表中输入记录值时可不为该列给出具体值;而一个列若不允许为空值,则在输入时必须给出该列的具体值。 注意:表的关键字不允许为空值。空值不能与数值数据0或字符类型的空字符混为一谈。任意两个空值都不相等。     2).  列的IDENTITY(标志)属性 对任何表都可创建包含系统所生成序号值的一个标志列,该序号值唯一标志表中的一列,可以作为键值。每个表只能有一个列设置为标志属性,该列只能是decimal、int、numeric、smallint、bigint 或tinyint 数据类型。定义标志属性时,可指定其种子(即起始)值、增量值,二者的默认值均为 1。系统自动更新标志列值,标志列不允许空值。 在下列情况下,MySQL隐含地改变在一个CREATE TABLE语句给出的一个列类型(这也可能在ALTER TABLE语句上出现)。 14.MySQL隐含地改变列类型: (1)长度小于4的varchar被改变为char。 (2)如果在一个表中的任何列有可变长度,结果使整个行是变长。 因此,如果一张表包含任何变长的列(varchar、text或Blob),所有大于3个字符的char列被改变为varchar列。这在任何方面都不影响用户如何使用列。在MySQL中这种改变可以节省空间并且使表操作更快捷。 (3)timestamp的显示尺寸必须是偶数且在2~14的范围内。如果指定0显示尺寸或比14大,尺寸被强制为14。从1~13范围内的奇数值尺寸被强制为下一个更大的偶数。 (4)不能在一个timestamp列里面存储一个NULL,将它设为NULL默认为当前的日期和时间。 如果想要知道MySQL是否使用了除指定的以外的一种列类型,在创建表之后,使用一个DESCRIBE语句即可。DESCRIBE语句在3.1.4节介绍。 15 type定义如下: 说明:在字符数据类型和数值数据类型之后,MySQL允许指定一个数据类型选项用来改变数据类型的属性和功能。 对于字符数据类型,MySQL支持两种数据类型选项:CHARACTERSET和COLLATE。如果要区分字符的大小写情况,可以在字符类型后面加上BINGARY。 对于除BIT以外的数值数据类型,MySQL允许添加一个或多个数据类型选项。UNSIGNED:不允许负值。ZEROFILL:当插入的值长度小于字段设定的长度时,剩余部分用0填补。 spatial_type是空间类型数据。 16.  表选项table_option定义如下: {engine | type} = engine_name             //存储引擎 | auto_increment = value               //初始值 | auto_increment = value               //表的平均行长度 | [default] charcter set charset_name [collatecollation_name]  //默认字符集和校对 | checksum = {0 | 1}              //设置为1表示求校验和 | comment= 'string'               //注释 | connection = 'connect_string'     //连接字符串 | MAX_ROWS = value               //行的最大数 | MIN_ROWS = value               //列的最小数 | PACK_KEYS = {0 | 1 | DEFAULT} | password = 'string'               //对.frm文件加密 | delay_key_write = {0 | 1}           //对关键字的更新 |row_format={DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}                     //定义各行应如何储存     | union = (tbl_name[,tbl_name]...)    //表示哪个表应该合并 | insert_method = { NO | FIRST | LAST}//是否执行INSERT语句 |data directory = 'absolute path todirectory'     //数据文件的路径 | index directory = 'absolute path todirectory’ //索引的路径   作者 tianyazaiheruan bitsCN.com

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

2

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

24

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

80

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

187

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

339

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

116

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

180

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

31

2026.03.03

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

81

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.4万人学习

Django 教程
Django 教程

共28课时 | 4.9万人学习

Excel 教程
Excel 教程

共162课时 | 20.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号