2.1MySQL创建数据库表
MySQL数据库设计规范(仅供参考)

MySQL数据库设计规范(仅供参考)MySQL数据库设计规范(仅供参考)⽬录1. 规范背景与⽬的2. 设计规范2.1 数据库设计2.1.1 库名2.1.2 表结构2.1.3 列数据类型优化2.1.4 索引设计2.1.5 分库分表、分区表2.1.6 字符集2.1.7 程序DAO层设计建议2.1.8 ⼀个规范的建表语句⽰例2.2 SQL编写2.2.1 DML语句2.2.2 多表连接2.2.3 事务2.2.4 排序和分组2.2.5 线上禁⽌使⽤的SQL语句1. 规范背景与⽬的MySQL数据库与 Oracle、 SQL Server 等数据库相⽐,有其内核上的优势与劣势。
我们在使⽤MySQL数据库的时候需要遵循⼀定规范,扬长避短。
本规范旨在帮助或指导RD、QA、OP等技术⼈员做出适合线上业务的数据库设计。
在数据库变更和处理流程、数据库表设计、SQL编写等⽅⾯予以规范,从⽽为公司业务系统稳定、健康地运⾏提供保障。
2. 设计规范2.1 数据库设计以下所有规范会按照【⾼危】、【强制】、【建议】三个级别进⾏标注,遵守优先级从⾼到低。
对于不满⾜【⾼危】和【强制】两个级别的设计,DBA会强制打回要求修改。
2.1.1 库名1. 【强制】库的名称必须控制在32个字符以内,相关模块的表名与表名之间尽量提现join的关系,如user表和user_login表。
2. 【强制】库的名称格式:业务系统名称_⼦系统名,同⼀模块使⽤的表名尽量使⽤统⼀前缀。
3. 【强制】⼀般分库名称命名格式是库通配名_编号,编号从0开始递增,⽐如wenda_001以时间进⾏分库的名称格式是“库通配名_时间”4. 【强制】创建数据库时必须显式指定字符集,并且字符集只能是utf8或者utf8mb4。
创建数据库SQL举例:create database db1 defaultcharacter set utf8;。
2.1.2 表结构1. 【强制】表和列的名称必须控制在32个字符以内,表名只能使⽤字母、数字和下划线,⼀律⼩写。
MySQL数据库表的数据插入、修改、删除、查询操作及实例应用

MySQL数据库表的数据插⼊、修改、删除、查询操作及实例应⽤⼀、MySQL数据库表的数据插⼊、修改、删除和查询1CREATE DATABASE db0504;23USE db0504;45CREATE TABLE student (6 sno VARCHAR (10) NOT NULL UNIQUE PRIMARY KEY,7 sname VARCHAR (20) NOT NULL,8 ssex enum ('男', '⼥') NOT NULL DEFAULT'男',9 sbirth date,10 sclass VARCHAR (10),11 zno CHAR (4)12 ) DEFAULT charset = gb2312;13 #添加操作14INSERT INTO student15VALUES('2012010713','丁暖','⼥','1993-9-9','物联⽹12-1','z002');1617INSERT INTO student (sno,sname,ssex,sbirth,sclass,zno)18VALUES('2011010503','孔超','男','1993-9-19','⾃动化11-1','z006');1920INSERT INTO student (sno, sname, ssex, zno)21VALUES('2011010521','韩梅','⼥','z006');2223INSERT INTO student (sname, zno, sno)24VALUES('韩梅2','z006','2011010522');2526INSERT INTO student VALUES27 ('2011010501','孔超1','男','1993-9-19','⾃动化11-1','z006');28 ('2011010505','孔超2','男','1993-9-19','⾃动化11-1','z006');29 ('2011010504','孔超3','男','1993-9-19','⾃动化11-1','z006');30 ('2011010505','孔超4','男','1993-9-19','⾃动化11-1','z006');31 #修改操作32UPDATE student33SET sname ='张三',sbirth ='1993-6-19'34WHERE sname ='丁暖';3536UPDATE student SET zno =LEFT (zno, 3);37 #删除操作38delete from student39where sname='张三';4042 #查询操作43SELECT*FROM student;#查询student表的所有记录44SELECT sno,sname,ssex,sbirth FROM student;#查询部分字段信息45SELECT*FROM student WHERE age BETWEEN25AND30;4647 #清空表操作48truncate student;#⾼效49delete from student;操作SQL语法格式:插⼊:insert修改:update删除:delete查询:select⼆、设计型实验三1.创建表1CREATE DATABASE homework;23USE homework;45CREATE TABLE student (6 Num INT (10) NOT NULL UNIQUE PRIMARY KEY,7 name VARCHAR(20) NOT NULL,8 Sex VARCHAR(4) NOT NULL,9 birthday DATETIME,10 bumen VARCHAR(20) NOT NULL,11 address VARCHAR(50)12 ) DEFAULT charset = gb2312;1314CREATE TABLE score (15 Id INT(10) NOT NULL UNIQUE PRIMARY KEY,16 C_name VARCHAR(20),17 Stu_id INT(10) NOT NULL,18 grade INT(10),19CONSTRAINT score_fk FOREIGN KEY(Stu_id) REFERENCES student(Num)20 ) DEFAULT charset = gb2312;2122INSERT INTO student VALUES23 ('901','张军','男','1985-1-1','计算机系','北京市海淀区'),24 ('902','张超','男','1986-2-2','中⽂系','北京市昌平区'),25 ('903','张美','⼥','1990-2-1','中⽂系','湖南省永州市'),26 ('904','李五⼀','男','1990-2-3','英语系','辽宁省⾩新市'),27 ('905','王芳','⼥','1991-4-6','英语系','福建省厦门市'),28 ('906','王桂','男','1988-6-7','计算机系','湖南省衡阳市');2930INSERT INTO score VALUES31 (1001,'计算机','901','98'),32 (1002,'英语','901','80'),33 (1003,'计算机','902','65'),34 (1004,'中⽂','902','88'),35 (1005,'中⽂','903','95'),36 (1006,'计算机','904','70'),37 (1007,'英语','904','92'),38 (1008,'英语','905','92'),39 (1009,'计算机','906','90'),40 (1010,'英语','906','85');2.查询student表的操作#查询student表的所有记录SELECT*FROM student;SELECT Num,name,Sex,birthday,bumen,address FROM student;#查询student表的第2条到第4条记录SELECT Num,name,Sex,birthday,bumen,address FROM student LIMIT 1,3;#从student表中查询所有学⽣的学号、姓名和院系的信息SELECT Num,name,bumen FROM student;#查询计算机系和英语系学⽣的信息SELECT*FROM student WHERE bumen IN('计算机系','英语系');SELECT*FROM student WHERE bumen='计算机系'OR bumen='英语系';#从student表中查询年龄为18-22岁学⽣的信息ALTER TABLE student ADD age INT(4);ALTER TABLE student MODIFY age INT(4) AFTER Sex;UPDATE student SET age=24WHERE Num=901;UPDATE student SET age=23WHERE Num=902;UPDATE student SET age=19WHERE Num=903;UPDATE student SET age=19WHERE Num=904;UPDATE student SET age=18WHERE Num=905;UPDATE student SET age=21WHERE Num=906;SELECT*FROM student WHERE age BETWEEN18AND22;SELECT*FROM student WHERE age>=18AND age<=22;#从student表中查询每个院系有多少⼈,为统计的⼈数列取别名sum_of_bumenSELECT bumen,COUNT(bumen) AS sum_of_bumen FROM student GROUP BY bumen;3.两表综合查询#从score表中查询每个科⽬的最⾼分SELECT C_name,MAX(grade) FROM score GROUP BY C_name;#查询李五⼀的考试科⽬(C_name)和考试成绩(grade)select C_name,grade from student left join score on student.Num=score.Stu_id where name='李五⼀';#⽤连接查询的⽅式查询所有学⽣的信息和考试信息select*from student left join score on student.Num=score.Stu_id;#计算每个学⽣的总成绩(需显⽰学⽣姓名)select name '姓名',SUM(grade) '总成绩'from student left join score on student.Num=score.Stu_id group by name;#计算每个考试科⽬的平均成绩select C_name '考试科⽬',AVG(grade) '平均成绩'from student left join score on student.Num=score.Stu_id group by C_name; #查询计算机成绩低于95分的学⽣信息select*from student left join score on student.Num=score.Stu_id where grade<95AND C_name='计算机';#将计算机成绩按从⾼到低排序select grade '计算机成绩'from score where C_name='计算机'order by grade desc;#asc升序,desc降序#从student表和score表中查询学⽣的学号,然后合并查询结果select Num '学号'from student union select Stu_id from score;#查询姓张或者姓王的同学的姓名、院系、考试科⽬和成绩select name,bumen,C_name,grade from student left join score on student.Num=score.Stu_id where name like'张%'union select name,bumen,C_name,grade from student left join score on student.Num=score.Stu_id where name like'王%';#查询都是湖南的学⽣的姓名、年龄、院系、考试科⽬和成绩select name,age,bumen,C_name,grade from student left join score on student.Num=score.Stu_id where address like'湖南%';这个查询同时参加计算机和英语考试的学⽣信息难了我好久,下⾯提供三种做法:#查询同时参加计算机和英语考试的学⽣的信息做法⼀select*from student where Num in (select Stu_id from score where C_name ='计算机'and Stu_id in(select Stu_id from score where C_name ='英语'));#查询同时参加计算机和英语考试的学⽣的信息做法⼆SELECT a.*FROM student a,score b,score c WHERE a.Num=b.Stu_id AND b.C_name='计算机'AND a.Num=c.Stu_id AND c.C_name='英语';#查询同时参加计算机和英语考试的学⽣的信息做法三SELECT*FROM student WHERE Num =ANY( SELECT Stu_id FROM score WHERE Stu_id IN (SELECT Stu_id FROM score WHERE C_name='计算机') AND C_name='英语');。
《MySQL数据库实用教程》电子教案

《MySQL数据库实用教程》电子教案第一章:MySQL数据库简介1.1 课程目标了解MySQL数据库的历史和发展掌握MySQL数据库的特点和应用场景了解MySQL数据库的安装和配置1.2 教学内容MySQL数据库的历史和发展MySQL数据库的特点和优势MySQL数据库的应用场景MySQL数据库的安装和配置步骤1.3 教学方法讲授:讲解MySQL数据库的历史、特点和应用场景演示:展示MySQL数据库的安装和配置过程互动:回答学生提出的问题1.4 课后作业了解并总结其他数据库的特点和应用场景完成MySQL数据库的安装和配置第二章:MySQL数据库的基本操作2.1 课程目标掌握MySQL数据库的创建、删除和使用掌握MySQL数据库表的创建、删除和修改掌握MySQL数据库表中数据的插入、查询和修改2.2 教学内容MySQL数据库的创建、删除和使用MySQL数据库表的创建、删除和修改MySQL数据库表中数据的插入、查询和修改2.3 教学方法讲授:讲解MySQL数据库的创建、删除和使用方法演示:展示MySQL数据库表的创建、删除和修改过程互动:回答学生提出的问题2.4 课后作业练习创建、删除和使用MySQL数据库练习创建、删除和修改MySQL数据库表练习插入、查询和修改MySQL数据库表中的数据第三章:MySQL数据库的进阶操作3.1 课程目标掌握MySQL数据库的备份和恢复掌握MySQL数据库的安全管理掌握MySQL数据库的性能优化3.2 教学内容MySQL数据库的备份和恢复MySQL数据库的安全管理MySQL数据库的性能优化3.3 教学方法讲授:讲解MySQL数据库的备份和恢复方法演示:展示MySQL数据库的安全管理和性能优化技巧互动:回答学生提出的问题3.4 课后作业练习备份和恢复MySQL数据库学习并了解MySQL数据库的安全管理方法学习并了解MySQL数据库的性能优化技巧第四章:MySQL数据库的编程应用4.1 课程目标掌握MySQL数据库的存储过程和触发器掌握MySQL数据库的视图和索引掌握MySQL数据库的存储引擎4.2 教学内容MySQL数据库的存储过程和触发器MySQL数据库的视图和索引MySQL数据库的存储引擎4.3 教学方法讲授:讲解MySQL数据库的存储过程、触发器、视图、索引和存储引擎的概念和使用方法演示:展示MySQL数据库的存储过程、触发器、视图、索引和存储引擎的实际应用示例互动:回答学生提出的问题4.4 课后作业练习创建和调用MySQL数据库的存储过程和触发器练习创建和使用MySQL数据库的视图和索引学习并了解MySQL数据库的存储引擎的选择和配置方法第五章:MySQL数据库的实战应用5.1 课程目标掌握使用MySQL数据库进行网站数据管理的方法掌握使用MySQL数据库进行大数据处理的方法掌握MySQL数据库的分布式应用和集群管理5.2 教学内容使用MySQL数据库进行网站数据管理使用MySQL数据库进行大数据处理MySQL数据库的分布式应用和集群管理5.3 教学方法讲授:讲解使用MySQL数据库进行网站数据管理和大数据处理的方法演示:展示MySQL数据库的分布式应用和集群管理的实际应用示例互动:回答学生提出的问题5.4 课后作业练习使用MySQL数据库进行网站数据管理学习并了解使用MySQL数据库进行大数据处理的方法学习并了解MySQL数据库的分布式应用和集群管理的配置和部署方法第六章:使用SQL语句操作MySQL数据库6.1 课程目标掌握SQL语句的基本结构和使用方法掌握使用SQL语句创建、删除和修改数据库表掌握使用SQL语句插入、查询和修改数据6.2 教学内容SQL语句的基本结构使用SQL语句创建、删除和修改数据库表使用SQL语句插入、查询和修改数据6.3 教学方法讲授:讲解SQL语句的基本结构和使用方法演示:展示使用SQL语句创建、删除和修改数据库表以及插入、查询和修改数据的过程互动:回答学生提出的问题6.4 课后作业练习编写SQL语句创建、删除和修改数据库表练习编写SQL语句插入、查询和修改数据第七章:MySQL数据库的备份与恢复7.1 课程目标掌握MySQL数据库的备份方法掌握MySQL数据库的恢复方法掌握MySQL数据库的还原方法7.2 教学内容MySQL数据库的备份方法MySQL数据库的恢复方法MySQL数据库的还原方法7.3 教学方法讲授:讲解MySQL数据库的备份、恢复和还原方法演示:展示MySQL数据库的备份、恢复和还原的实际操作过程互动:回答学生提出的问题7.4 课后作业练习使用MySQL数据库的备份方法进行数据备份练习使用MySQL数据库的恢复方法进行数据恢复练习使用MySQL数据库的还原方法进行数据还原第八章:MySQL数据库的安全管理8.1 课程目标掌握MySQL数据库的安全管理概念掌握用户权限管理方法掌握SQL注入防护方法8.2 教学内容MySQL数据库的安全管理概念用户权限管理方法SQL注入防护方法8.3 教学方法讲授:讲解MySQL数据库的安全管理概念、用户权限管理方法和SQL注入防护方法演示:展示MySQL数据库的用户权限管理和SQL注入防护的实际操作过程互动:回答学生提出的问题8.4 课后作业练习使用用户权限管理方法设置用户权限学习并了解SQL注入防护方法第九章:MySQL数据库的性能优化9.1 课程目标掌握MySQL数据库的性能优化方法掌握索引优化方法掌握查询优化方法9.2 教学内容MySQL数据库的性能优化方法索引优化方法查询优化方法9.3 教学方法讲授:讲解MySQL数据库的性能优化方法、索引优化方法和查询优化方法演示:展示MySQL数据库的索引优化和查询优化的实际操作过程互动:回答学生提出的问题9.4 课后作业练习使用索引优化方法优化数据库索引练习使用查询优化方法优化数据库查询第十章:MySQL数据库的实战应用案例分析10.1 课程目标学习MySQL数据库在实际项目中的应用案例分析MySQL数据库在实战中的性能优化方法掌握MySQL数据库在实战中的安全防护措施10.2 教学内容MySQL数据库在实际项目中的应用案例MySQL数据库在实战中的性能优化方法MySQL数据库在实战中的安全防护措施10.3 教学方法讲授:讲解MySQL数据库在实际项目中的应用案例和实战中的性能优化方法、安全防护措施演示:展示MySQL数据库在实战中的应用案例和性能优化、安全防护的实际操作过程互动:回答学生提出的问题10.4 课后作业学习并分析MySQL数据库在实际项目中的应用案例学习并了解MySQL数据库在实战中的性能优化方法和安全防护措施重点解析本文主要介绍了《MySQL数据库实用教程》电子教案,共包含十个章节。
linux_mysql_创建数据库步骤_概述及解释说明

linux mysql 创建数据库步骤概述及解释说明1. 引言1.1 概述本文将介绍在Linux系统上使用MySQL数据库时,如何创建数据库的步骤,并对其进行详细解释和说明。
MySQL作为一种流行的关系型数据库管理系统,被广泛应用于各种Web应用和企业级系统中。
在Linux环境下,使用MySQL创建数据库是非常常见和重要的操作。
通过本文,读者将能够了解到具体的步骤以及相关命令的语法解释。
1.2 文章结构本文主要分为四个部分:引言、正文、解释说明和结论。
正文中包含了Linux 概述、MySQL介绍以及创建数据库的步骤等内容。
解释说明部分会详细解释Linux下安装MySQL的过程,连接到MySQL服务器的方法以及创建数据库时所使用命令的语法解释。
最后,在结论部分会总结创建数据库的步骤与注意事项,并且提供实际应用场景和案例分析。
同时还会对Linux MySQL创建数据库步骤进行思考和展望。
1.3 目的本文旨在帮助读者全面理解在Linux系统上使用MySQL创建数据库所需遵循的步骤。
除此之外,通过对Linux下安装MySQL和连接到MySQL服务器等操作进行详细解释,读者也可以获得更深入的认识和理解。
此外,通过实际应用场景和案例分析的介绍,读者将能够更好地掌握Linux MySQL创建数据库步骤,并且对其进行扩展与思考。
2. 正文:2.1 Linux概述Linux是一种开源的操作系统,广泛应用于服务器和嵌入式设备等领域。
其优点包括高度稳定性、高度安全性以及良好的兼容性。
在Linux系统上,我们可以使用MySQL数据库进行数据存储与管理。
2.2 MySQL介绍MySQL是一个开源的关系型数据库管理系统,它能够在多个平台上运行,并且支持多线程处理以提高数据库的并发性能。
MySQL提供了一套强大而灵活的功能,例如事务支持、数据备份和恢复、存储过程等。
2.3 创建数据库的步骤要在Linux系统中创建一个新的MySQL数据库,您需要按照以下步骤进行操作:1. 打开终端:使用Ctrl+Alt+T快捷键打开终端。
mysqld用法-概述说明以及解释

mysqld用法-概述说明以及解释1.引言1.1 概述概述部分的内容可以描述mysqld的作用和功能。
可以简要介绍mysqld作为MySQL服务器的核心组件,负责处理来自客户端的请求并执行数据库操作。
mysqld是启动MySQL服务器的进程,它通过监听端口接收来自客户端的连接请求,处理用户的SQL查询并返回结果。
在概述部分中,还可以提到mysqld作为一个高性能、稳定和可靠的数据库服务器,被广泛应用于各种规模的应用程序和系统中。
它具有良好的扩展性和可定制性,可以根据实际需求进行配置和优化,以提供高效的数据库服务。
此外,概述部分还可以简要介绍mysqld的发展历史和版本更新,以展示其不断改进和完善的过程。
最后,可以提到本文将详细介绍mysqld 的基本用法,以帮助读者更好地理解和使用这个强大的数据库服务器。
1.2 文章结构文章结构是指文章的组织结构,以便读者能够清晰地理解和遵循文章的逻辑发展。
在这部分内容中,我们将介绍文章的各个部分以及它们之间的关系。
文章结构可以帮助读者更好地理解你要传达的信息。
在本篇文章中,共包含三个主要部分:引言、正文和结论。
引言部分(Introduction)是文章的开篇,通常用来引入文章的主题并提供相关的背景信息。
在本文中,引言包括概述、文章结构和目的。
概述(Overview)部分对mysqld用法进行简要介绍,说明读者将会在接下来的内容中了解到哪些内容。
文章结构(Article Structure)部分即本文的目录,它提供了整个文章的结构框架。
通过目录,读者可以预览到本文将包含的内容,并能在需要时快速定位到自己感兴趣的部分。
目的(Purpose)部分说明本文撰写的目的和意义。
明确阐述了为什么需要介绍mysqld用法,以及本文将为读者带来的价值。
正文部分(Main Body)是文章的核心部分,用于详细阐述mysqld 的使用方法和相关概念。
在本文中,正文包括mysqld简介和mysqld的基本用法。
mysql数据库表设计案例

设计一个简单的MySQL数据库表,以存储用户的图书收藏信息为例:
表名: user_book_collection
字段:
1.id:主键,自增,用于唯一标识每条记录。
er_id:用户ID,外键,关联用户表。
3.book_title:图书标题,字符串类型,用于存储图书的名称。
4.author:作者,字符串类型,用于存储图书的作者姓名。
5.publication_date:出版日期,日期类型,用于存储图书的出版日期。
6.isbn:国际标准书号,字符串类型,用于存储图书的唯一标识码。
7.added_date:添加日期,日期时间类型,用于记录用户将图书添加到收藏的
时间。
索引:
1.主键索引:id字段。
2.外键索引:user_id字段,关联用户表。
3.联合索引:user_id和book_title字段,用于优化根据用户ID和图书标题
的查询性能。
示例SQL语句创建表:
这个表可以存储用户的图书收藏信息,包括每本图书的标题、作者、出版日期、ISBN号以及用户添加该图书到收藏的时间。
通过外键关联用户表,可以实现查询
某个用户的全部图书收藏。
同时,使用联合索引可以提高根据用户ID和图书标题查询的效率。
navicat for mysql建立数据库表的方法
navicat for mysql建立数据库表的方法Navicat for MySQL是一款功能强大的MySQL数据库管理工具,可以帮助开发人员轻松创建数据库表。
下面将介绍使用Navicat for MySQL建立数据库表的方法。
1. 首先,打开Navicat for MySQL软件,并连接到MySQL数据库。
2. 在连接成功后,选择所要操作的数据库。
在左侧导航栏中,选择目标数据库并右键单击,选择“新建表”选项。
3. 在弹出的对话框中,输入要创建的表的名称,并点击“确定”。
4. 接下来,在表设计界面中,可以开始为表添加字段。
可以通过直接在表设计界面中输入字段的名称、类型、长度和其他属性来定义字段。
5. 在定义字段时,需要选择适当的数据类型。
常见的数据类型包括:INT(整数)、VARCHAR(可变字符串)、DATE(日期)和TIMESTAMP(时间戳)等。
6. 对于每个字段,可以设置不同的属性,如是否允许为空、是否具有唯一性、是否为主键等。
7. 可以使用工具栏上的“添加字段”按钮来添加更多的字段,也可以使用右键单击表设计界面中任何行的方法来添加、删除或修改字段。
8. 在添加完所有字段后,点击工具栏上的“保存”按钮保存表的设计。
9. 在保存表设计后,可以返回到Navicat主界面,右键单击目标数据库,并选择“刷新”来查看新创建的表。
10. 如果需要对已创建的表进行修改,可以右键单击表名称,并选择“设计”选项来进一步编辑表结构。
以上就是使用Navicat for MySQL建立数据库表的方法。
除了直接在表设计界面中添加字段外,Navicat for MySQL还提供了其他添加字段、编辑表结构、设置索引等高级功能,使得数据库表的建立更加灵活和方便。
不过需要注意的是,在创建表时,需要根据实际需求,合理选择字段类型、设置字段属性,以确保数据库表的设计能够满足应用程序的需求。
MySQL基本使用教程
MySQL基本使⽤教程⼀、结构类操作1.1 连接数据库1.1.1 命令连接数据库# 基础格式mysql [OPTIONS] [database_name]# 常⽤参数格式mysql [-h<ip>] [-u<username>] [-p<password>] [-P<port>] [-e<command>] [database_name]说明:选项及其参数间可以有空格也可以没空格;-p可直接接密码也可以后边要求输⼊时再输⼊;密码有$等元字符时要⽤单引号括起来防⽌被解析掉;-e后的的命令⼀般都有空格所以⼀般都⽤引号括起来。
1.1.2 断开数据库连接-- ⽅式⼀exit-- ⽅式⼆quit1.1.3 常⽤图形界⾯客户端:暂时见到最好⽤的mysql客户端;。
:MySQL官⽅客户端,各⽅⾯都还可以;最⼤的糟点⼤概是界⾯有点丑。
:暂时见到的开源免费还算能⽤的mysql客户端;最让⼈难受的是数据库列表和打开后的数据库属两个窗⼝。
:web形式的客户端⽐较受欢迎,但php写的也有就语⾔局限性。
1.2 库操作1.2.1 创建数据库-- 基础⽤法create database<database_name>;-- 指定utf8编码格式create database<database_name>character set utf8 collate utf8_general_ci;1.2.2 删除数据库drop database <database_name>;1.2.3 修改数据库应该来讲,修改数据库我们最希望的是修改数据库名,但mysql并没有提供直接的修改数据库名的操作(现在的修改本质上都是新建⼀个数据库然后把表导过去),只能改改默认编码之类的。
alter database<database_name>character set='utf8' ;1.2.4 查看现有数据库-- 查看所有数据库show databases;-- 查看当前使⽤的数据库select database();-- 查看数据库创建信息show create database database_name;1.2.5 使⽤数据库use <database_name>;1.3 表操作1.3.1 创建数据表-- 基础创建格式create table table_name(column_1_name_1 column_1_type, column_2_name_2 column_1_type)-- 创建⽰例;习惯在每个字段后回车换⾏create table if not exists test_table(id int unsigned auto_increment,username varchar(100) not null,password varchar(100) not null,primary key(id))default charset=utf8;1.3.2 删除数据表drop table<table_name>;1.3.3 修改数据表-- 重命令数据表rename table<old_table_name>to<new_table_name>;1.3.4 查看数据表show tables [ from database_name ];1.4 字段操作1.4.1 增加字段alter table<table_name>add[column]<column_name><column_type>[first | after ready_column];1.4.2 删除字段alter table<table_name>drop[column]<column_name>;1.4.3 修改字段-- 修改字段名alter table<table_name> rename column<old_column_name>to<new_column_name>;-- 修改字段类型alter table<table_name> modify [column]<column_name><new_column_type>[first | after ready_column];-- 同时修改字段名和字段类型alter table<table_name> change [column]<old_column_name><new_column_name><new_column_type>[first | after ready_column];1.4.4 查看字段show columns from<table_name>;desc<table_name>;1.5 记录操作1.5.1 插⼊记录insert[into]<table_name>[column_name_1,column_name_2]values (value_10,value_20) [,(value_11,value_21)];1.5.2 删除记录-- 删除指定记录delete from<table_name>[ where column_name = 'value' ];-- 删除所有记录-- delete是DDL(Data Manipulation Language),truncate是DML(Data Definition Language)。
实验训练1在MySQL中创建数据库和表作业
实验训练1在MySQL中创建数据库和表作业步骤:1、使用show语句找出在服务器上当前存在什么数据库:mysql>show databases;2、创建一个数据库test:mysql>create database test;3、选择你所创建的数据库:mysql>use test;4创建一个数据表:首先查看刚才创建的数据库中存在什么表:mysql>show tables;(说明刚才创建的数据库中还没有数据库表)接着我们创建一个关于students的数据表:包括学生的学号(id),姓名(name),性别(sex),年龄(age)。
mysql>create table students(id int unsigned not null auto_increment primary key,name char(8) not null,sex char(4) not null,age tinyint un sig ned not n ull,);解释:以"id int unsigned not null auto_increment primary key"行进行介绍:"id"为列的名称;"int"指定该列的类型为int(取值范围为-8388608到8388607),在后面我们又用"unsigned"加以修饰,表示该类型为无符号型,此时该列的取值范围为0到16777215;"not null"说明该列的值不能为空,必须要填,如果不指定该属性,默认可为空;"auto_increment"需在整数列中使用,其作用是在插入数据时若该列为NULL, MySQL将自动产生一个比现存值更大的唯一标识符值。
在每张表中仅能有一个这样的值且所在列必须为索引列。
"primary key"表示该列是表的主键,本列的值必须唯一,MySQL将自动索引该列。
第2章 MySQL的基本操作
图2-1 查看已有数据库列表
【例2.2】列出以my开头的所有数据库列表。如图2-2所示:
图2-2 列出以my开头的所有数据库列表
2.1.2 创建数据库CREATE DATABASE
句法:CREATE DATABASE db_name 功能:CREATE DATABASE用给定的名字创建一个数据库。 执行数据库创建操作的条件是:数据库名字必须是合法的,这个数据库不能是已经存在的,你 必须有足够的权限去创建它。如果数据库已经存在,则发生一个错误。 创建数据库时,MySQL服务器会在它的数据目录里创建一个与该数据库同名的子目录,这个新 目录称为数据库子目录。服务器还会在那个数据库目录里创建一个db.opt文件夹保存数据库的属 性。 在MySQL中的数据库实现成包含对应数据库中表的文件的目录。因为数据库在初始创建时没有 任何表,CREATE DATABASE语句只是在MySQL数据目录下面创建一个目录。 【例2.3】创建数据库myfirst。如图2-3所示:
图2-3 创建数据库myfirst 【例2.4】利用show databases观察数据库中的内容。如图2-4所示:
图2-4 查看当前数据库
2.1.3 删除数据库DROP DATABASE
句法:DROP DATABASE [IF EXISTS] db_name 功能:DROP DATABASE删除数据库中的所有表 和数据库。要小心地使用这个命令。如图2-5所示: 【例2.5】删除数据库myfirst。 如图2-5所示:
2.1.4 选择数据库USE DATABASE
句法:USE db_name 功能:USE 语句选择一个数据库,使其成为服务器的给定连接的缺省(当前)数据库。 必须对数据库具有某种访问权限,否则不能使用它。为了使用数据库中的表而选择该数 据库实际上不是必须的,因为可以利用db_name.tbl_name 形式来引用它的表。但是,不必指定数据库 限定词引用表要方便得多。 选择一个缺省数据库并不代表在连接的持续时间内它都必须是缺省的。可发布任意数目的USE 语句在数 据库之间进行任意地切换,只要具有使用它们的权限即可。选择一个数据库也不限制您只使用该数据库 中的表。您仍然可以通过用数据库名限定表名的方法,引用其他数据库中的表。 USE db_name语句告诉MySQL使用db_name数据库作为随后的查询的缺省数据库。数据库保持到会话结 束,或发出另外一个USE语句: mysql> USE db1; mysql> SELECT count(*) FROM mytable; # select from db1.mytable mysql> USE db2; mysql> SELECT count(*) FROM mytable; # select from db2.mytable 如果你不是用USE语句,那么上面的例子应该写成: mysql> SELECT count(*) FROM db1.mytable; mysql> SELECT count(*) FROM db2.mytable; 在服务器的连接终止时,服务器关于缺省数据库的所有记忆都消失了。即如果您再次连接到该服务器, 它不会记住以前您所选择的数据库。事实上,假定MySQL 是多线程的, 可通过一个用户处理多个连接,用户可以按任何顺序连接或断开,让服务器对缺省数据库进行记忆的想 法也是没有意义的。 【例2.6】选择数据库 myfirst。 在myfirst数据库中创建表,必须先选择该数据库,输入语句如下: mysql> USE myfirst; Database changed
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
鲁琴Handout #2网络数据库技术2013-03-04网络数据库技术—创建数据库和表学会了如何键入命令后,就可以学习如何访问数据库了。
这部分的主要内容:◆命令行方式创建数据库和表◆界面创建数据库和表◆有关表结构◆MySQL的数据类型1.命令行方式创建数据库这部分主要介绍如何使用MySQL命令行客户端创建及使用一个简单的数据库。
假设要处理学生相关的信息,可以通过创建表来保存数据,以及从表中检索数据。
在这部分,我们将学习如何执行下面的操作:◆创建数据库◆创建表我们可以使用SHOW命令来显示当前服务器上存在的所有数据库。
mysql> SHOW DATABASES;Mysql数据库描述了用户的访问权限;test 数据库通常作为示例,做用户的工作空间。
不同的机器显示出的数据库是不同的;如果没有SHOW DATABASES权限的话,用这个命令是不能显示出数据库的。
如果存在test数据库,我们来访问它。
mysql> USE testDatabase changed注意:USE命令,同QUIT命令一样, 后面不需要分号(;)(当然了,如果加上;也没有关系)。
另外,USE 命令有一点是特别的:它必须写在一行上。
你可以使用test数据库(如果你可以访问它)来试验下面的命令,但是你做的任何操作都可能被同样可以访问这个数据库的其他用户改变。
所以你应该请求MySQL管理员允许你使用自己的数据库。
假设你自己的数据库名字为xscj,管理员需要执行下面的命令:mysql> GRANT ALL ON xscj.* TO 'your_mysql_name'@'your_client_host';这里,your_mysql_name 是MySQL 用户的名字,your_client_host是你现在正在工作的连接到服务器的主机的名字。
1.1 创建数据库1.1.1 创建数据库xscjmysql> CREATE DATABASE xscj;在Unix操作系统下,数据库名字区分大小写(这不同于SQL关键字),表名也区分大小写。
在Windows操作系统下,数据库名及表名不区分大小写(尽管在同一个查询语句中大小写应一致),但是在使用过程中最好使用与创建时一致的大小写。
注意:当创建数据库时,显示如下错误提示:ERROR 1044 (42000): Access denied for user 'monty'@'localhost' to database 'menagerie'这表示你的用户账号没有创建数据库的权限,我们在“MySQL访问权限”一节中再讨论这个问题。
1.1.2 选择数据库xscj创建一个数据库后,并不能直接使用这个数据库。
必须用USE命令将这个数据库变成当前活动的数据库:mysql> USE xscjDatabase changed同一个数据库只能创建一次,但是每次使用它时都要用USE命令。
另外,可以在连接mysql服务器时,用连接参数指定当前活动的数据库。
shell> mysql -h host -u user -p xscjEnter password: ********1.1.3 查询当前活动数据库的命令:SELECT DATABASE();1.1.4 创建数据库命令的完整语法格式:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name[create_specification [, create_specification] ...]其中create_specification:[DEFAULT] CHARACTER SET charset_name| [DEFAULT] COLLATE collation_name说明:语句中“[ ]”内为可选项。
提示:关于“字符集与校对规则”,请参看教材P373 附录D1.2 修改数据库数据库创建后,如果需要修改数据库的参数,可以使用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文件中。
用户必须有对数据库进行修改的权限,才可以使用ALTER DATABASE。
修改数据库的选项与创建数据库相同,功能不再重复说明。
如果语句中数据库名称忽略,则修改当前(默认)数据库。
【例】修改数据库xscj的默认字符集和校对规则。
ALTER DATABASE xscjDEFAULT CHARACTER SET gb2312DEFAULT COLLATE gb2312_chinese_ci;1.3 删除数据库已经创建的数据库需要删除,使用DROP DATABASE命令。
语法格式:DROP DATABASE [IF EXISTS] db_name其中:db_name是要删除的数据库名。
可以使用IF EXISTS子句以避免删除不存在的数据库时出现的MySQL错误信息。
注意:这个命令必须小心使用,因为它将删除指定的整个数据库,该数据库的所有表(包括其中的数据)也将永久删除。
2.命令行方式创建表2.1 创建表创建数据库很容易,但此时数据库是空的。
用SHOW TABLES命令可以看出来:mysql> SHOW TABLES;Empty set (0.00 sec)难的是确定数据库的结构:数据库中有哪些表及每个表中有哪些列。
首先要创建一个表包含每个学生的基本信息,这个表我们将其命名为xsqk,它应该包含学号,姓名,性别,出生日期,专业,联系电话。
mysql> CREATE TABLE xsqk (xh CHAR(10),xm VARCHAR(10), xbCHAR(1),csrq DATE,zy VARCHAR(30),lxdh VARCHAR(20));说明:VARCHAR (可变长度字符串)类型对于xm(姓名)列,zy(专业)列和lxdh(联系电话)列是一种好的选择,这些列的取值的长度不固定。
如果在这里类型定义不合理,MySQL 提供了一条ALTER TABLE命令来更改.xb(性别)列的取值只有两个'm'(男)and 'f'(女).csrq(出生日期)列定义为DATE(日期)型。
此时,可以用SHOW TABLES命令查看当前表的情况:可以使用DESCRIBE命令显示一下表的结构。
创建表命令的完整语法格式:CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [ ( [column_definition] , ... | [index_definition] ) ][table_option] [select_statement];其中:列定义column_definition格式如下:col_name type[NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY][COMMENT 'string'] [reference_definition]例:CREATE TABLE xsqk (xh CHAR(10) NOT NULL PRIMARY KEY,xm VARCHAR(10) NOT NULL,xb CHAR(1) NOT NULL DEFAULT 'M',csrq DATE NOT NULL,zy VARCHAR(30) NOT NULL,lxdh VARCHAR(20)) ENGINE=InnoDB;说明:在上面的例子里,每个字段都包含附加约束或修饰符,这些可以用来增加对所输入数据的约束。
“PRIMARY KEY”表示将“xh”字段定义为主键。
“DEFAULT 'M’”表示“xb”的默认值为'M’。
“ENGINE=InnoDB”表示采用的存储引擎是InnoDB,InnoDB是MySQL在Windows平台默认的存储引擎,所以“ENGINE=InnoDB”可以省略。
提示:关于“存储引擎”,请参看教材P375 附录E2.2 修改表如果创建表时,表结构定义不合理(如列类型等),MySQL 提供了一条ALTER TABLE命令来更改。
ALTER TABLE用于更改原有表的结构。
例如,可以增加或删减列,创建或取消索引,更改原有列的类型,重新命名列或表,还可以更改表的评注和表的类型。
语法格式:ALTER [IGNORE] TABLE tbl_namealter_specification [, alter_specification] ...其中alter_specification:ADD [COLUMN] column_definition [FIRST | AFTER col_name ]/*添加列*/ | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}/*修改默认值*/ | CHANGE [COLUMN] old_col_name column_definition[FIRST|AFTER col_name]/*对列重命名*/| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]/*修改列类型*/ | DROP [COLUMN] col_name/*删除列*/| RENAME [TO] new_tbl_name/*重命名该表*/| ORDER BY col_name /*排序*/| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]/*将字符集转换为二进制*/| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]/*修改默认字符集*/| table_options| 列或表中索引项的增、删、改(见第5章索引部分)说明:可以在一个ALTER TABLE命令中写入多个ADD、ALTER、DROP和CHANGE子句,中间用逗号分开。