MySQL的简介、启动及其DDL

  MySQL的各项配置:

  默认会启用TCP/IP网络;

  默认客户端/服务器端口:3306;

  将数据库的BIN目录写入Windows的的path环境变量;

  默认不允许root用户在其他机器上远程登录;

  MySQL正在使用的配置文件:my.ini,可以通过my.ini修改一些配置:

  default-character-set=utf8            客户端默认字符集;

  character-set-server=utf8        服务器默认字符集,即创建数据库和表的默认字符集;

  port=3306                 my.ini中有两个,即客户端和服务器端都指定为3306; 

  default-storage-engine=INNODB       默认存储引擎

 

  1、SQL

  SQL全称是结构化查询语言,是关系数据库的标准语言。

  根据功能划分,SQL语言主要由以下几部分组成。

  • DML——数据操纵语言,用来插入、修改和删除数据库中的数据。
  • DDL——数据定义语言,建立数据库、数据库对象和定义其列。
  • DQL——数据查询语言,对数据库中的数据进行查询
  • DCL——数据控制语言,控制数据库组件的存取许可,存取权限等。如GRANT、REVOKE。

 

  2、windows中启动、登录MySQL

  (MySQL在默认的情况下查询是不区分大小写的,在配置修改后,需要重启服务才有效)

  DOS启动服务:

  net start mysql                 启动MYSQL服务

  net stop mysql                  停止MYSQL服务

 

  命令行登陆:(也可以通过MySQL自带的MySQL Command Line Client)

  mysql –u root –p  (接下里会提示输入密码)

  ps:如果是连接到另外的机器上,则需要加入一个参数:-h 机器IP

 

  3、显示基本信息:

  status;                                显示当前MySQL服务的运行状态

  select version();                显示当前MySQL版本

  select current_date;        显示当前日期(大小写通用)

  select now();                      显示当前日期、时间

  select database();             显示当前正在使用的数据库

  help content      查看帮助文档目录列表

 

  4、通过DDL进行数据库操作

  show databases;                                        显示所有数据库

  create database <database name>;          创建数据库

  drop database <database name>              直接删除数据库,不提醒

  mysql admin drop <database name>         删除数据库前,有提示

  use <database name>;                              选择数据库

  show tables;                                               显示数据库中的所有表

 

  5、创建表

/*建表的语法*/
create table [if not exist] Tablename(
    字段一  数据类型 [字段属性|约束] [索引] [注释] ,
    字段二  数据类型 [字段属性|约束] [索引] [注释] ,
    .........
    )[表类型][表字符集][注释]

/*创建一个InnoDB类型,字符集为utf-8,备注为“test Table”的表*/
/*在这里,我惊喜地发现,单引号、双引号可以使用在comment关键字中!!*/
create table test(id int(4))engine=innodb,charset=utf8,comment="test Table";

 

  通过使用MySQL WorkBench,终于找到了标准语法:

/*在5.7版本中,数据库名称、表的名称都可以用``包围,加强表达,也可以不加*/
CREATE TABLE `myschool`.`test`(`id` INT(4) NOT NULL DEFAULT 1 COMMENT '测试编号',  PRIMARY KEY (`id`));

/*现在创建一个有各种属性的表*/
/*id类型为int()4,非空,默认值为1,名为测试编号*/
/*这里指定PK的方式为在定义完所有字段后指定*/
CREATE TABLE `myschool`.`mytsest` (
  `id` INT(4) NOT NULL DEFAULT 1 COMMENT '测试编号',
  PRIMARY KEY (`id`))
    ENGINE = MyISAM
    DEFAULT CHARACTER SET = utf8
    COMMENT = '测试表';

/*我还发现,自增AI和默认Default是冲突的,至少这里是,可能因为AI指定了默认值*/

 

   SQL为字段提供了各种约束和属性来保证数据的完整性。

  其中主键约束是十分重要的约束,可以使用数据库表中的某一字段or几个字段来唯一标识所有记录。

  (1)单字段主键

/*在定义字段的同时指定主键*/
create table student(
    studentNumb INT(4) PRIMARY KEY,
    .....
    )

/*在定义完所有字段后指定主键*/
create table student(
    studentNumb INT(4),
    studentName VARCHAR(45),
    ....
    PRIMARY KEY(id)
    )

  (2)多字段联合主键

/*主键由多字段组成*/
create table student(
    id INT(4),
    name VARCHAR(11),
    ...
    PRIMARY KEY(id,name)
    )

 (3)为表添加注释、设置编码格式

create table student(
    id INT(4) COMMENT '编号',
    name VARCHAR(11),
    ...
    PRIMARY KEY(id,name)
    )ENGINE=InnoDB,CHARSET=UTF-8,COMMENT ='学生表' 

  

  6、查看表

  show tables;

  describe <table name>;                            展示表的结构

  desc <table name>;                                  展示表的结构

  select * from <table name>                               显示表中的内容

  DOS窗口默认字符集为GBK格式,如果当前MySQL的默认编码格式非GBK,可能会乱码,可以在输出信息之前执行以下语句:

 set names gbk;

 

  7、修改表结构

  首先,可以执行“HELP ALTER TABLE”查看各种需改表结构的语句

  (1)修改表名

alter table student rename studentinfo;

  (2)添加字段(默认添加到末尾)

/*经过检验,本版本中,新增字段时的字段名无需添加引号(单、双都会报错)*/
alter table student add province varchar(30);

/*指定新增字段的位置,可以使用MySQL提供的关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)*/
alter table student add city varchar(20) after province;

  (3)修改字段——修改字段名和字段属性

/*只修改字段的属性*/
/*把字段province的类型从varchar(30)改为varchar(20)*/
alter table student modify province varchar(20);

/*name为修改后的字段名,同时可以修改字段属性,也可以和原有的一致,但是不能为空*/
alter table student CHANGE country city char(20) not null;
/*在我的机器上,这个语句报错不能执行。因为我在第一次定义country字段时,只设置了字段类型一个属性,NN属性并没有设置;现在修改后,我新增了NN属性,报错!*/

alter table student change country city varchar(20);
/*修改后,执行成功!country属性名改为了city*/
/*此外,目前为止,所有为名字添加引号的操作都是不必要的,甚至都是报错。这与书本的实例完全不同*/

  (4)删除字段——将table中的某个字段从表中移除

/*数据表中只剩余一个字段则无法使用DROP来删除字段*/
alter table student drop city;

  (5)添加主键约束

/*语法如下*/
alter table <TableName> add constraint <主键名> primary key <表名>(<主键字段>);

/*将grade表中的gradeId设置为主键*/
alter table grade add constraint  pk_grade primary key grade(gradeId);

  (6)添加外键约束

/*语法如下*/
alter table <TableName> add constraint <外键名> foreign key <外键字段>references <关联表名>(<关联字段>);

/*设置student表的gradeID字段与grade表的gradeId字段建立主外键关联*/
alter table student add constraint fk_student foreign key gradeId references grade(gradeId);

/*InnoDB类型的表才支持主、外键约束,因此保证相关表都为InnoDB型*/
/*对于MyISAM类型的表,可以通过建立逻辑关系保证数据的完整性和一致性*/  

  

  8、删除表

  delete from <table name>;                                清空表中内容

  drop table if exists <table name>      删除表(操作之前确认是否有重要数据,可以先备份)

 

  9、使用MySQL系统帮助文档

  help contents;

  再使用help命令查看相关的具体内容。

 

posted @ 2018-01-30 17:09  爆炸的果核  阅读(279)  评论(0编辑  收藏  举报