创建数据库:
- create database 数据库名;
- # 例:创建一个名为Bookstore数据库
- create database Bookstore;
例:创建一个名为Bookstore的数据库,采用字符集gb2312和校对规则gb2312_chinese_ci
- create database Bookstore
- default character set gb2312
- collate gb2312_chinese_ci;
MySQL按以下规则选择数据库字符集和数据库的校对规则:
1、如果指定了 CHARACTER SET X和COLLATE Y,那么采用字符集X和校对规则Y。
2、如果指定了 CHARACTER SET X而没有指定COLLATE Y,那么采用CHARACTER SET X和CHARACTER SET X的默认校对规则。
3、如果没有指定,那么采用服务器字符集和服务器校对规则。
打开数据库:
USE 数据库名;
修改数据库:
例:修改数据库Pet的默认字符集为latinl,校对规则为lantinl_swedish_ci
- alter database Pet
- default character set lantinl
- default collate latinl_swedish_ci;
删除数据库:
drop database 数据库名;
显示数据库:
show databases;
创建表:
例:设已经创建了数据库表Bookstore,在该数据库中创建图书目录表BookPRIMARY KEY表示将“学号”字段定义为主键。engine=InnoDB表示采用的存储引擎是InnoDB,InnoDB是MySQL在Windows平台默认的存储引擎,因此engine=InnoDB可以省略
- use Bookstore;
- create table book(图书编号 char(20) not null PRIMARY KEY,
- 图书类别 varchar(20) not null
- 书名 varchar(40) not null,
- 作者 char(10) not null)engine=InnoDB;
修改表:
例:在表d1中增加新的一列a
ALTER TABLE d1 ADD COLUMN a TINYINT NULL;
例:把一个INTEGER列的名称从a变更到b
ALTER TABLE d1 CHANGE a b INTEGER;
例:把一个列的数据类型改为bigint
ALTER TABLE d1 MODIFY b bigint NOT NULL;
注意:若表中该列所存数据的数据类型与将要修改的列的数据类型冲突,则发生错误。例如,原来char类型的列要修改成Int类型,而原来列值中有字符型数据a,则无法修改。
例:修改表名。将表a改名为b
ALTER TABLE a RENAME TO b;
假设已经在数据库Bookstore中创建了表book,表中存在“书名”列。在表book中增加“浏览次数”列并将表中的“书名”删除
ALTER TABLE除了用于更改原有表的结构外,也可以用于修改表名。
- USE Bookstore;
- ALTER TABLE book
- ADD 浏览次数 tinyint NULL,
- DROP COLUMN 书名;
假设数据库Bookstore中已经存在tablel表,将tablel表重命名为student
修改表名除了ALTER TABLE命令外,还可以用RENAME TABLE语句来更改表。
- USE Bookstore;
- ALTER TABLE tablel
- RENAME TO student;
RENAME TABLE语句可以同时更改多个表的名字
假设数据库Bookstore中已经存在table2表和table3表,将table2表重命名为orders,table3表重命名为orderlist。
- USE Bookstore;
- RENAME TABLE table2 TO orders,table3 TO orderlist;
复制表:
假设数据库Bookstore中有一个表Book,创建于Book表结构相同的名为book_copy1的拷贝
CREATE TABLE book_copy1 LIKE Book;
若在复制结构的同时还要复制其数据,需要使用AS关键字,使用SELECT语句对需要复制的数据进行选择。
- CREATE TABLE book_copy2
- AS
- (SELECT * FROM Book);
删除表:
例:删除表test
DROP TABLE IF EXISTS test;
显示数据表文件:
SHOW TABLES;
例:显示Bookstore数据库建立的数据表文件
- USE Bookstore;
- SHOW TABLES;
显示数据表结构:
例:查看Book表的列的信息
DESCRIBE Book;
查看Book表图书编号列的信息
DESC Book 图书编号;
字符串类型:char和varchar
char和varchar类似,但他们保存和检索的方式不同,其最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
char和varchar类型声明的长度表示用户要保存的最大字符数。
char列的长度固定为创建表时声明的长度。长度可以为0~255的任何值。当保存char值时,在他们的右边填充空格以达到指定的长度。当检索到char值时,尾部的空格被删除掉。
varchar列中的值为可变长字符串。长度可以指定为0~65535之间的值。varchar的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65532字节。同char对比,varchar值保存时只保存需要的字符数,另加一个字节来记录长度。若列声明的长度超过255,则使用两个字节。varchar值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL。
若分配给char或varchar列的值超过列的最大长度,则对值进行裁剪以使其适合。若被裁剪的字符不是空格,则会产生一条警告。
blob和text类型
blob列被视为二进制字符串(字节字符串)。blob列没有字符集,其排序和比较基于列值字节的数值。这种类型数据用于存储声音、视频、图像等数据。例如,图书数据处理中的图书封面、会员照片可以设定为blob类型。
text列被视为非二进制字符串(字符字符串)。text列有一个字符集,并且根据字符集的校对规则对值进行排序和比较。在实际应用中如个人履历、奖惩情况、职业说明、内容简介等信息可设定为text的数据类型。例如,图书数据处理中的内容简介可以设定为text类型。
在text或blob列的存储或检索过程中不存在大小写转换。blob和text列不能有默认值。
blob或text对象的最大值由其类型确定,但在客户端和服务器之间实际可以传递的最大值由可用内存数量和通信缓存区大小确定。用户可以通过更改max_allowed_packet变量的值更改消息缓存区的大小,但必须同时修改服务器和客户端程序。
日期和时间类型
1、date类型,表示日期,输入数据的格式是:yyyy-mm-dd。支持的范围是1000-01-01到9999-12-31。
2、time类型,表示时间,输入数据的格式是:hh:mm:ss。time值的范围可以从-838:59:59到838:59:59。小时部分的数据如此大的原因是time类型不仅可以用于表示一天的时间(必须小于24小时),还可能为某个事件过去的时间或两个事件之间的时间间隔(可以大于24小时,甚至可以为负)。
3、datetime类型,表示日期时间,格式是:yyyy-mm-dd hh:mm:ss。支持的范围为1000-01-01 00:00:00到9999-12-31 23:59:59。