MySQL数据库(三)

时间:2023-03-09 17:09:46
MySQL数据库(三)

1. 创建表
create table student(
id int unsigned not null auto_increment primary key,
name varchar(8) not null,
sex char(4) not null
)engine=InnoDB default charset='utf8';
注意不存在utf-8。

MySQL自增型字段的值从1开始递增,且步长为1。设置自增型字段的语法格式如下。 
字段名 数据类型 auto_increment

-- 设置主键(Primary Key)约束
-- 如果一个表的主键是多个字段的组合(例如字段名1与字段名2共同组成主键),定义完所有的字段后,使用下面的语法规则将(字段名1, 字段名2)设置为复合主键。
-- primary key (字段名1, 字段名2)

create table student(
id int unsigned not null ,
name varchar(8) not null,
sex char(4) not null,
primary key (id,name)
)engine=InnoDB default charset='utf8';

2.复制一个表
方法一:在create table语句的末尾添加like子句,可以将源表的表结构复制到 新表中,语法格式如下。
-- create table 新表名
like 源表;

create table newstudent like student;

方法二:在create table语句的末尾添加一个select语句,可以实现表结构的复制,甚至可以将源表的表记录拷贝到新表中。下面的语法格式将源表的表结构以及源表的所有记录拷贝到新表中。
-- create table 新表名 select * from 源表
;

create table newstudents select * from student;

3.添加约束条件
-- alter table 表名 add constraint 约束名 约束类型 (字段名)
例:如果没有主键,添加主键约束。
alter table student add constraint sid primary key (id);

例:添加外键约束
alter table ss add constraint aa foreign key (ip) references s (id);
·删除约束条件
删除表的主键约束条件语法格式比较简单,语法格式如下。

alter table 表名 drop primary key

4.mysql在cmd中乱码问题
MySQL是默认utf8编码的,所建数据库也是设置utf8编码,使用程序可以新增中文数据,在cmd中使用SQL语句新增数据则报类似Incorrect string value: '\xB2\xE2\xCA\xD4' for column 'title' at row 1错误,而使用SQL语句查询出之前程序所新增中文数据都是乱码的。

右击在cmd界面上面边框→属性→选项 ,查看cmd的编码方式是是GBK,并不是utf-8。

其实数据库内部是没有乱码的,只是和cmd的编码方式不一样,在cmd呈现出来的中文数据才是乱码的,也造成了新增不了中文数据的情况。

使用MySQL的图形界面管理工具则不存在此问题了。

直接在mysql>下输入 set names gbk; 即可解决问题。