原文链接 http://www.cnblogs.com/weixing/p/3340341.html
1.登陆数据库系统
在命令行中登陆MySQL数据库管理系统,输入一下内容:
mysql -h localhost -u root -p
很多人都知道这个,但是其中参数的具体表示什么我们还是要了解的,其中,“-h”参数指连接的主机名,所以后面是localhost;“-u”参数表示用户名,此处的用户名为root;“-p”参数表示用户的密码,按下Enter键后就显示“Enter password:”,输入密码即可登录进去了。
2.创建数据库
在创建数据库之前,我们可以查看已经存在的数据库:
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | community | | community_test | | data | | mydata | | mysql | | performance_schema | | test | +--------------------+ 8 rows in set (0.04 sec)
创建数据库的格式:CREATE DATABASE 数据库名;
示例:创建一个名为example的数据库
mysql> CREATE DATABASE example; Query OK, 1 row affected (0.00 sec) mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | community | | community_test | | data | | example | | mydata | | mysql | | performance_schema | | test | +--------------------+ 9 rows in set (0.00 sec)
3.删除数据库:
格式:DROP DATABASE 数据库名;
示例:删除example数据库
mysql> DROP DATABASE example; Query OK, 0 rows affected (0.07 sec) mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | community | | community_test | | data | | mydata | | mysql | | performance_schema | | test | +--------------------+ 8 rows in set (0.00 sec)
4.数据库存储引擎
存储引擎就是指表的类型,数据库存储引擎决定了表在计算机的存储方式。
MySQL中查询存储引擎的类型命令:SHOW ENGINES;
mysql> SHOW ENGINES; +--------------------+---------+------------------------------------------------ ----------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +--------------------+---------+------------------------------------------------ ----------------+--------------+------+------------+ | FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL | | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | | MyISAM | YES | MyISAM storage engine | NO | NO | NO | | BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO | | CSV | YES | CSV storage engine | NO | NO | NO | | MEMORY | YES | Hash based, stored in memory, useful for tempor ary tables | NO | NO | NO | | ARCHIVE | YES | Archive storage engine | NO | NO | NO | | InnoDB | DEFAULT | Supports transactions, row-level locking, and f oreign keys | YES | YES | YES | | PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO | +--------------------+---------+------------------------------------------------ ----------------+--------------+------+------------+ 9 rows in set (0.00 sec)
查询结果中,Engine参数指存储引擎名称;Support参数说明MySQL是否支持该类型引擎;Comment参数表示对该引擎的评论;Transaction参数表示是否支持事务处理;XA参数表示是否分布式交易处理的XA规范;Savepoints参数表示是否支持保存点,以方便事务的回滚操作;由上面我们看到InnoDB存储引擎是default的,也就是数据库默认的存储引擎,下面我们简单介绍一下InnoDB。
InnoDB是MySQL的一种存储引擎,InnoDB给MySQL提供了事务、回滚、崩溃修复能力和多版本并发控制的事务安全。InnoDB是MySQL上第一个提供外键约束的表引擎,而且对事务处理的能力,也是其他存储引擎不能比拟的。不过这种引擎的缺点就是读写效率稍差,占用的数据空间相对比较大。
下面就是正式的内容:
创建表:
1)创建表的形式:
CREATE TABLE 表名 ( 属性名 数据类型 [完整约束条件], 属性名 数据类型 [完整约束条件], ... ... 属性名 数据类型 [完整约束条件] );
如果你很急的登陆进去就创建表,恭喜你,你会出现“No database selected”的错误,因为你没有告诉别人你要选择在哪个数据库创建表,所以在创建之前要选择数据库,格式:USE 数据库名;
示例创建一个student表:
mysql> use example; Database changed mysql> CREATE TABLE student ( -> id int, -> name varchar(20) -> ); Query OK, 0 rows affected (0.09 sec)
上面创建表的时候涉及到一个完整性约束条件,下面就列出一个完整性约束条件表:
约束条件 |
说明 |
PRIMARY KEY |
标识该属性为该表的主键,可以唯一的标识对应的元组 |
FOREIGN KEY |
标识该属性为该表的外键,是与之联系某表的主键 |
NOT NULL |
标识该属性不能为空 |
UNIQUE |
标识该属性的值是唯一的 |
AUTO_INCREMENT |
标识该属性的值是自动增加,这是MySQL的SQL语句的特色 |
DEFAULT |
为该属性设置默认值 |
下面讲解一下上面完整性约束条件的应用:
2)设置表的主键
单字段主键格式:属性名 数据类型 PRIMARY KEY
示例:
mysql> CREATE TABLE student1 ( -> id int PRIMARY KEY, -> name varchar(20) -> ); Query OK, 0 rows affected (0.06 sec)
多字段主键格式:PRIMARY KEY(属性名1,属性名2....属性名n)
示例:
mysql> CREATE TABLE student2 ( -> id int, -> stu_id int, -> name varchar(20), -> PRIMARY KEY(id,stu_id) -> ); Query OK, 0 rows affected (0.00 sec)
3)设置表的外键
格式:CONSTRAINT 外键别名 FOREIGN KEY(属性1,属性2,....属性n) REFERENCES 表名(属性1',属性2',...属性n')
示例:
mysql> CREATE TABLE teacher ( -> id int PRIMARY KEY, -> stu_id int, -> name varchar(20), -> CONSTRAINT STUID FOREIGN KEY(stu_id) REFERENCES student1(id) -> ); Query OK, 0 rows affected (0.00 sec)
4)设置表的非空约束
简单的说就是不让这个属性的值为空,不填的话就会报错
格式:属性名 数据类型 NOT NULL
5)设置表的唯一性约束
就是这个属性的值是不能重复的
格式:属性名 数据类型 UNIQUE
6)设置表的属性值自动增加
AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLINT、INT和BIGINT),在默认的情况下,该字段的值是从1开始自增
格式:属性名 数据类型 AUTO_INCREMENT
7)设置表的属性的默认值
格式:属性名 数据类型 DEFAULT 默认值
下面对4-7进行综合示例:
mysql> CREATE TABLE student3 ( -> id int PRIMARY KEY AUTO_INCREMENT, -> teacher_id int UNIQUE, -> name varchar(20) NOT NULL, -> sex varchar(10) DEFAULT 'male' -> ); Query OK, 0 rows affected (0.01 sec)
查看表结构
查看表基本结构语句DESCRIBE
格式:DESCRIBE 表名;
通过查看表的结构,就很明确的对表进行解读,而且可以查看一下自己创建的表有没错误,这个SQL语句必须会用啊
示例:
mysql> desc student3; +------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | teacher_id | int(11) | YES | UNI | NULL | | | name | varchar(20) | NO | | NULL | | | sex | varchar(10) | YES | | male | | +------------+-------------+------+-----+---------+----------------+ 4 rows in set (0.01 sec)
查看表详细结构语句SHOW CREATE TABLE
通过这个SQL语句可以查看表的详细定义,除了字段名、字段的数据类型、约束条件外,还可以查看表的默认存储引擎和字符编码
格式:SHOW CREATE TABLE 表名;
示例:
mysql> SHOW CREATE TABLE student3; +----------+----------------------------------- ----------------------------------------------- ----------------------------------------------- ---------------------------------------------+ | Table | Create Table | +----------+----------------------------------- ----------------------------------------------- ----------------------------------------------- ---------------------------------------------+ | student3 | CREATE TABLE `student3` ( `id` int(11) NOT NULL AUTO_INCREMENT, `teacher_id` int(11) DEFAULT NULL, `name` varchar(20) NOT NULL, `sex` varchar(10) DEFAULT 'male', PRIMARY KEY (`id`), UNIQUE KEY `teacher_id` (`teacher_id`) ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 | +----------+----------------------------------- ----------------------------------------------- ----------------------------------------------- ---------------------------------------------+ 1 row in set (0.00 sec)
修改表:
1)修改表名
表名可以在一个数据库中唯一的确定一张表。
格式:ALTER TABLE 旧表名 RENAME 新表名;
示例:
mysql> ALTER TABLE student RENAME student4; Query OK, 0 rows affected (0.11 sec) mysql> DESCRIBE student; ERROR 1146 (42S02): Table 'example.student' doesn't exist
由上面可以看出,改名后的表已经不存在了。
2)修改字段的数据类型
格式:ALTER TABLE 表名 MODIFY 属性名 数据类型;
示例:
mysql> DESCRIBE student1; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.08 sec) mysql> ALTER TABLE student1 MODIFY name varchar(30); Query OK, 0 rows affected (0.06 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESCRIBE student1; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(30) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.01 sec)
3)修改字段名:
格式:ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型;
示例:
mysql> DESCRIBE student1; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(30) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> ALTER TABLE student1 CHANGE name stu_name varchar(40); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESCRIBE student1; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | stu_name | varchar(40) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
这里我修改的字段名的同时也修改了数据类型了,如果你不想修改数据类型的话就按照原来的写就行了。
4)增加字段
格式:ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2];
其中,“属性名1”参数指需要增加的字段的名称;“FIRST”参数是可选参数,其作用是将新增字段设置为表的第一个字段;“AFTER”参数也是可选的参数,其作用是将新增字段添加到“属性名2”后面;“属性名2”当然就是指表中已经有的字段
示例:
mysql> DESCRIBE student1; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | stu_name | varchar(40) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec) mysql> ALTER TABLE student1 ADD teacher_name varchar(20) NOT NULL AFTER id; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESCRIBE student1; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | teacher_name | varchar(20) | NO | | NULL | | | stu_name | varchar(40) | YES | | NULL | | +--------------+-------------+------+-----+---------+-------+ 3 rows in set (0.01 sec)
5)删除字段
格式:ALTER TABLE 表名 DROP 属性名;
示例:
mysql> DESCRIBE student1; +--------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | teacher_name | varchar(20) | NO | | NULL | | | stu_name | varchar(40) | YES | | NULL | | +--------------+-------------+------+-----+---------+-------+ 3 rows in set (0.01 sec) mysql> ALTER TABLE student1 DROP teacher_name; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESCRIBE student1; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | stu_name | varchar(40) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 2 rows in set (0.00 sec)
6)更改表的存储引擎
格式:ALTER TABLE 表名 ENGINE = 存储引擎名;
示例:
mysql> SHOW CREATE TABLE student2; +----------+---------------------------------------- ---------------------------------------------------- ---------------------------------------------------- | Table | Create Table +----------+---------------------------------------- ---------------------------------------------------- ---------------------------------------------------- | student2 | CREATE TABLE `student2` ( `id` int(11) NOT NULL DEFAULT '0', `stu_id` int(11) NOT NULL DEFAULT '0', `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`,`stu_id`) ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 | +----------+---------------------------------------- ---------------------------------------------------- ---------------------------------------------------- 1 row in set (0.05 sec) mysql> ALTER TABLE student2 ENGINE = MYISAM; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> SHOW CREATE TABLE student2; +----------+---------------------------------------- ---------------------------------------------------- ---------------------------------------------------- | Table | Create Table +----------+---------------------------------------- ---------------------------------------------------- ---------------------------------------------------- | student2 | CREATE TABLE `student2` ( `id` int(11) NOT NULL DEFAULT '0', `stu_id` int(11) NOT NULL DEFAULT '0', `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`,`stu_id`) ) ENGINE=MyISAM DEFAULT CHARSET=gb2312 | +----------+---------------------------------------- ---------------------------------------------------- ---------------------------------------------------- 1 row in set (0.00 sec)
7)删除表的外键约束
格式:ALTER TABLE 表名 DROP FOREIGN KEY 外键别名;
示例:
mysql> SHOW CREATE TABLE teacher; +---------+------------------------------------------------ ----------------------------------------------------------- ----------------------------------------------------------- --------------------------------------------------+ | Table | Create Table | +---------+------------------------------------------------ ----------------------------------------------------------- ----------------------------------------------------------- --------------------------------------------------+ | teacher | CREATE TABLE `teacher` ( `id` int(11) NOT NULL, `stu_id` int(11) DEFAULT NULL, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `STUID` (`stu_id`), CONSTRAINT `STUID` FOREIGN KEY (`stu_id`) REFERENCES `stu ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 | +---------+------------------------------------------------ ----------------------------------------------------------- ----------------------------------------------------------- --------------------------------------------------+ 1 row in set (0.08 sec) mysql> ALTER TABLE teacher DROP FOREIGN KEY STUID; Query OK, 0 rows affected (0.04 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> SHOW CREATE TABLE teacher; +---------+------------------------------------------------ ----------------------------------------------------------- --------------------------------------------------------+ | Table | Create Table | +---------+------------------------------------------------ ----------------------------------------------------------- --------------------------------------------------------+ | teacher | CREATE TABLE `teacher` ( `id` int(11) NOT NULL, `stu_id` int(11) DEFAULT NULL, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `STUID` (`stu_id`) ) ENGINE=InnoDB DEFAULT CHARSET=gb2312 | +---------+------------------------------------------------ ----------------------------------------------------------- --------------------------------------------------------+ 1 row in set (0.00 sec)
删除表:
格式:DROP TABLE 表名;
删除没有被关联的普通表:直接上面的SQL语句就行了
删除被其他表关联的父表:
方法一:先删除子表,在删除父表
方法二:删除父表的外键约束(上面有介绍),再删该表
相关推荐
7. **数据同步**:提供了数据库和表的同步功能,可以在不同数据库间进行数据迁移或更新。 8. **报表和图表**:可以创建基于查询结果的报表,甚至生成图表,帮助分析和可视化数据。 9. **多语言支持**:从...
1. 数据库管理:MySQL-Front提供了对数据库的全面管理,包括创建、删除和修改数据库,以及导入和导出数据。 2. 表设计:用户可以通过图形界面设计表结构,定义字段、类型、键约束等,简化数据库建模过程。 3. SQL...
`命令可以创建新的数据库和表。 - **删除数据库与表**:使用`DROP DATABASE 数据库名;`和`DROP TABLE 表名;`命令可以删除数据库和表。 - **插入、更新与删除数据**:使用`INSERT INTO 表名 VALUES (值列表);`、`...
6. **初始化数据库**:安装完成后,运行`scripts/mysql_install_db`脚本来初始化数据库目录和系统表。 7. **设置权限和服务**:创建MySQL的系统用户和服务,并调整相应权限。在Unix-like系统上,这通常涉及修改`my....
这个压缩包包含两个版本的安装程序,分别是"mysql-connector-odbc-5.2.7-winx64.msi"和"mysql-connector-odbc-5.2.7-win32.msi",分别适用于64位和32位的Windows操作系统。 MySQL ODBC驱动程序是连接MySQL服务器的...
6. 更新和删除:UPDATE语句用于修改已有数据,DELETE语句用于删除数据,需谨慎操作。 卸载MySQL 5.5.40: 1. 通过控制面板:进入“程序”或“应用”,找到MySQL 5.5.40并选择“卸载”。 2. 停止服务:在服务管理器...
8. 用户权限:你可以通过MySQL-Front设置和管理用户权限,控制用户对数据库和表的访问级别。 9. 多语言支持:MySQL-Front支持多种语言,满足不同地区用户的使用需求。 10. 自定义模板:允许用户自定义SQL模板,...
- 执行MySQL的“mysql_secure_installation”脚本,这将删除匿名用户、禁止远程root登录、删除测试数据库并刷新权限,使你的MySQL服务器更安全。 9. **备份与恢复**: - 备份:使用`mysqldump`命令创建数据库的...
1. **数据源管理**:它允许用户创建、修改和删除数据源,这些数据源定义了到 MySQL 服务器的连接参数,如主机名、端口、用户名、密码以及数据库名等。 2. **兼容性**:由于 ODBC 是一个标准接口,所以任何支持 ODBC...
- **数据库管理**:你可以创建、删除和修改数据库,以及查看其架构和表结构。 - **数据浏览**:提供表格形式的数据查看,支持排序、过滤和搜索功能。 - **SQL编辑**:内置的SQL编辑器支持编写和执行复杂的SQL语句...
2. 数据库设计:用户可以创建、修改和删除数据库结构,包括表、视图、索引和存储过程。表的设计支持自定义字段类型、长度、默认值和约束条件。 3. 数据浏览与编辑:用户可以直观地查看和编辑数据库中的数据,支持增...
3. **数据操作**:通过MySQL-Front,你可以轻松地插入、修改、删除和查询数据库中的数据。它的表格视图让你可以直接编辑单元格,就像使用电子表格一样。 4. **SQL编辑**:虽然提供了图形化的操作界面,但MySQL-...
2. 使用`mysql_secure_installation`脚本增强安全性,例如删除匿名用户、禁止root远程登录、删除测试数据库等。 3. 修改`my.ini`配置文件,调整参数如innodb_buffer_pool_size、max_connections等,以适应不同场景...
1. **数据库对象的创建和管理**:用户可以直接在Visual Studio中创建、编辑和删除MySQL数据库的表、视图、存储过程和其他数据库对象,无需切换到其他工具。 2. **数据源连接**:提供直观的数据源配置界面,使用户...
同时,熟悉如何创建表、插入数据、更新数据、删除数据、建立索引、编写存储过程和触发器等也是日常操作的一部分。 总之,“mysql-5.7.23-win32.zip”提供的MySQL 5.7.23版本是一个强大的数据库系统,具有丰富的功能...
安装完成后,我们需要创建一个系统服务脚本来管理MySQL的启动和停止。创建一个名为`mysql`的文件在`/etc/init.d/`目录下: ```bash sudo nano /etc/init.d/mysql ``` 在这个文件中,添加MySQL的启动和停止命令,...
它支持可视化查询构建,可以方便地浏览数据库结构,创建、修改和删除表、索引等数据库对象。此外,它还具有结果集的查看和编辑功能,支持数据导入导出,以及对查询性能的分析。 3. **MySQL Migration Toolkit**: ...
2. 表操作:学习创建、修改和删除表,以及如何使用`CREATE TABLE`、`ALTER TABLE`和`DROP TABLE`语句。 3. 数据插入与查询:掌握`INSERT INTO`、`SELECT`语句,进行数据的增、删、改、查操作。 4. 用户权限:理解...
- 初始化:运行MySQL的初始化脚本,创建默认数据目录和系统表,例如`./scripts/mysql_install_db --user=mysql`。 - 设置权限:确保MySQL的启动脚本和数据目录具有正确的权限。 - 启动服务:使用`sudo service ...
8. **安全初始化**:运行`sudo mysql_secure_installation`,按照提示进行密码更改、删除匿名用户、禁止root远程登录、删除测试数据库等安全设置。 9. **配置开机启动**:确保MySQL在系统启动时自动启动,`sudo ...