时间:2021-07-01 10:21:17 帮助过:8人阅读
创建数据库是在系统磁盘上划分?块区域用于数据的存储和管理,如果管理员在设置权限的时候为用户创建了数据库,则可以直接使用,否则,需要自己创建数据库。
- <code class="language-mysql">CREATE DATABASE [IF NOT EXISTS] 数据库名 </code>
IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。
此选项可以用来避免数据库已经存在而重复创建的错误。
- <code class="language-mysql"># 创建myschool数据库
- create database myschool;</code>
IF NOT EXISTS:在创建数据库之前进行判断,只有该数据库目前尚不存在时才能执行操作。
此选项可以用来避免数据库已经存在而重复创建的错误。
- <code class="language-mysql">CREATE TABLE [IF NOT EXISTS] 表名 (
- 字段1 数据类型 [字段属性|约束][索引][注释],
- ……
- 字段n 数据类型 [字段属性|约束][索引][注释]
- )[表类型][表字符集][注释];</code>
- <code class="language-mysql">#创建学生表
- CREATE TABLE `student`(
- `studentNo` INT(4) PRIMARY KEY,
- ` name` CHAR(10),
- ……);</code>
- <code class="language-mysql">多字段使用逗号分隔
- 保留字用撇号括起来
- 单行注释:#……
- 多行注释:/*……*/</code>
- <code class="language-mysql">CREATE TABLE student(
- `studentNo` INT(4) PRIMARY KEY,
- ……);</code>
- <code class="language-mysql">CREATE TABLE test (
- `id` int(11) UNSIGNED COMMENT ‘编号’
- )COMMENT=‘测试表’ ;</code>
- <code class="language-mysql">CREATE TABLE [IF NOT EXISTS] 表名(
- #省略代码
- )CHARSET = 字符集名;</code>
- <code class="language-mysql">create databases myschool;
- use myschool;
- create table student(
- `studentNo` int(4) not null comment ‘学号‘ primary key,
- `loginPwd` varchar(20) not null comment ‘密码‘,
- `studentName` varchar(50) not null comment ‘姓名‘,
- `sex` char(2) not null default ‘男‘ comment ‘性别‘,
- `gradeID` int(4) unsigned comment ‘年级编号‘,
- `phone` varchar(50) comment ‘电话‘,
- `address` varchar(255) default ‘地址不详‘ comment ‘地址‘,
- `bornDate` datetime comment ‘出生日期‘,
- `email` varchar(50) comment ‘邮件账号‘,
- `identityCard` varchar(18) comment ‘身份证号‘ unique key
- )charset=‘utf8‘ comment=‘学生表‘;</code>
- <code class="language-mysql">mysql> desc student;
- +--------------+-----------------+------+-----+----------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +--------------+-----------------+------+-----+----------+-------+
- | studentNo | int(4) | NO | PRI | NULL | |
- | loginPwd | varchar(20) | NO | | NULL | |
- | studentName | varchar(50) | NO | | NULL | |
- | sex | char(2) | NO | | 男 | |
- | gradeID | int(4) unsigned | YES | | NULL | |
- | phone | varchar(50) | YES | | NULL | |
- | address | varchar(255) | YES | | 地址不详 | |
- | bornDate | datetime | YES | | NULL | |
- | email | varchar(50) | YES | | NULL | |
- | identityCard | varchar(18) | YES | UNI | NULL | |
- +--------------+-----------------+------+-----+----------+-------+
- 10 rows in set (0.00 sec)</code>
- <code class="language-mysql">use myschool;
- show tables;</code>
- <code class="language-mysql">use myschool;
- desc `student`;</code>
- <code class="language-mysql">use myschool;
- desc `student`;</code>
- <code class="language-mysql">drop table [if exists] 表名;</code>
- <code class="language-mysql">use myschool;
- drop table if exists `student`;</code>
删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据也将除。
删除数据库语句和创建数据库的命令相似,MySQL中删除数据库的基本语法格式为:
- <code class="language-mysql">drop database if exists 数据库名;</code>
- <code class="language-mysql">drop database if exists myschool;</code>
- <code class="language-mysql">create table subject(
- `subjectNo` int(4) comment ‘课程编号‘ primary key auto_increment,
- `subjectName` varchar(50) comment ‘课程名称‘,
- `classHour` int(4) comment ‘学时‘,
- `gradeID` int(4) comment ‘年级编号‘
- );</code>
- <code class="language-mysql">mysql> desc subject;
- +-------------+-------------+------+-----+---------+----------------+
- | Field | Type | Null | Key | Default | Extra |
- +-------------+-------------+------+-----+---------+----------------+
- | subjectNo | int(4) | NO | PRI | NULL | auto_increment |
- | subjectName | varchar(50) | YES | | NULL | |
- | classHour | int(4) | YES | | NULL | |
- | gradeID | int(4) | YES | | NULL | |
- +-------------+-------------+------+-----+---------+----------------+
- 4 rows in set (0.00 sec)</code>
- <code class="language-mysql">create table result(
- `studentNo` int(4) comment ‘学号‘ not null,
- `subjectNo` int(4) comment ‘课程编号‘ not null,
- `examDate` datetime(0) comment ‘考试日期‘ not null,
- `studentResult` int(4) comment ‘考试成绩‘ not null
- );</code>
- <code class="language-mysql">mysql> desc result;
- +---------------+----------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +---------------+----------+------+-----+---------+-------+
- | studentNo | int(4) | NO | | NULL | |
- | subjectNo | int(4) | NO | | NULL | |
- | examDate | datetime | NO | | NULL | |
- | studentResult | int(4) | NO | | NULL | |
- +---------------+----------+------+-----+---------+-------+
- 4 rows in set (0.00 sec)</code>
数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更
新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。使用不同的存
储引擎,还可以获得特定的功能。
现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的核心就是存储引擎。
mysql有多种存储引擎,它们分别为:
- <code class="language-mysql">MyISAM
- InnoDB
- MERGE
- MEMORY
- EXAMPLE
- FEDERATED
- ARCHIVE
- CSV
- BLACKHOLE</code>
使用MyISAM: 不需事务,空间小,以查询访问为主 使用InnoDB: 多删除、更新操作,安全性高,事务处理及并发控制
- <code class="language-cmd">mysql> show variables like ‘%storage_engine‘;
- +----------------------------------+--------+
- | Variable_name | Value |
- +----------------------------------+--------+
- | default_storage_engine | InnoDB |
- | default_tmp_storage_engine | InnoDB |
- | internal_tmp_disk_storage_engine | InnoDB |
- +----------------------------------+--------+
- 3 rows in set, 1 warning (0.02 sec)</code>
修改my.ini配置文件
- <code class="language-cmd">default_storage_engine=InnoDB</code>
最简单的方法,就是通过命令直接修改表的存储引擎,如下所示:
- <code class="language-cmd">alter table 表名 ENGINE = 引擎名;</code>
- <code class="language-cmd">ALTER TABLE student ENGINE = InnoDB;</code>
- <code class="language-cmd">CREATE TABLE 表名(
- #省略代码
- )ENGINE=存储引擎;</code>
- <code class="language-cmd">CREATE TABLE `myisam` (
- id INT(4)
- )ENGINE=MyISAM;</code>
在mysql中,每个数据库最多可创建20亿个表,一个表允许定义1024列,每行的最大长度为8092字节(不包括?本和图像类型的长度)。
当表中定义有varchar、nvarchar或varbinary类型列时,如果向表中插入的数据行超过8092字节时,将导致语句失败,并产生错误信息。
SQL Server对每个表中行的数量没有直接限制,但它受数据库存储空间的限制。每个数据库的最大空间1048516TB,所以一个表可用的最大空间为1048516TB减去数据库类系统表和其它数据库对象所占用的空间。理论上无限大,就看你硬盘够不够大,大多数情况先是你的硬盘不够。
MySQL的建库、建表、建约束与存储引擎
标签:测试 特性 engine extra 邮件 身份证 修改 支持 int