开启和关闭mysql服务

Windows下开启和关闭mysql服务

 net start mysql        # 开启mysql服务
net stop mysql # 关闭mysql服务

没有重启mysql服务这个命令。

Linux下

 service mysql start | stop | restart | status
  • start        启动服务
  • stop        停止服务
  • restart     重启服务
  • status      查看服务状态

登录mysql数据库

 mysql -h hostname -u username -p

如何hostname是本机的话,要替换为127.0.0.1或者是localhost

例子:mysql -h localhost -uroot -p

这样输完之后会换行让你输密码,我们也可以直接把密码写在-p后面,当然这样不安全。

更改root密码

 /usr/bin/mysqladmin -u root password ''

执行完这条命令后,root的密码改为123456。

添加新的用户

先用root登进数据库,然后

 mysql > GRANT ALL PRIVILEGES ON *.* TO jack@localhost IDENTIFIED BY '' WITH GRANT OPTION;

格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码";

 mysql > flush privileges;         //刷新系统权限表

这是最基本的命令,反正还有好多选项,这个先作为一个了解。

修改登录密码

在登陆进数据库之后,可通过来修改密码

 set password  = password('');

查看当前所有存在的数据库

 show databases;            // show出来, 不止一个数据库这里我们要加s

创建数据库

 create database database_name;         // create是创建, 由于一次只能创建一个数据库, 这里database不加s, 最后接上数据库名称

查看创建好的数据库

 show create database database_name\G

如果数据库创建成功则会显示数据库的创建信息

删除数据库

 drop database database_name;          // 注意这里的删除用的是drop, 而不是delete

使用drop database命令要特别谨慎,采用这种方式删除之后数据库中存储的所有数据表和数据会一同被删除,而且无法恢复。数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作,不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。

查看数据库的存储引擎

 show engines\G

Support列表示某种引擎是否能用,YES表示可以使用,NO表示不能使用,DEFAULT表示该引擎为当前默认引擎。常见的mysql引擎有:

InnoDB,MyISAM,Memory,Merge,Archive,Federated,CSV,BLACKHOLE

选择当前数据库

数据表属于数据库,在对表进行任何操作前都要受限选择数据库,否则报错"No database selected"。

 use database_name;

查看默认引擎

 show variables like 'storage_engine';

创建数据表

 create table <表名> (
字段名1, 数据类型 [列级别约束条件][默认值],
字段名1, 数据类型 [列级别约束条件][默认值],
...
[表级别约束条件] );

示例:

 create table tb_emp1 (
id INT(11),
name VARCHAR(25),
deptId INT(11),
salary FLOAT
);

查看数据表

 show tables;

创建主键约束

主键约束要求主键列的数据唯一,而且不允许为空,可唯一标识一条记录,结合外键还可定义不同数据表的关系,加快查询速度。

主键和记录之间的关系如同身份证和人之间的关系,一一对应。

主键有两种:单字段主键和多字段联合主键。

单字段主键

定义列时顺带就指定了主键,示例:

 create table tb_emp2 (
id INT(11) primary key,
name varchar(25),
deptID INT(11),
salary float
);

所有列都定义完了之后,在决定主键是哪个,示例:

 create table tb_emp3 (
id INT(11),
name varchar(25),
deptId int(11),
salary float,
primary key(id)
);

这两种方式的执行结果都是一样的,都会在id字段上设置主键约束

多字段联合主键

 primay key(字段1, 字段2, ..., 字段n)

示例:

 create table tb_emp4 (
name varchar(25),
deptId INT(11),
salary float,
primary key(name, deptId)
);

使用外键约束

外键用来在两个表的数据之间建立链接,它可以是一列或者多列。

一个表可以有一个或者多个外键。

一个表的外键可以为空值,若不为空,则每一个外键值必须等于另一个表中主键的某个值。

外键:首先是表中的一个字段,可以不是本表的主键,但对应着另外一个表的主键。

外键的作用主要是保证数据引用的完整性,定义外键后,不允许删除在另一个表中据欧关联关系的行。

例如部门表tb_dept的主键是id,在员工表tb_emp5中有一个键deptId与这个id关联。

主表(父表)主键所在那个表

从表(子表)外键所在的表

创建外键的语法规则如下:

 [constraint <外键名>] foreign key 字段名1[, 字段名2, ...] references <主表名> 主键列1[, 主键列2, ...]

一个表中不能有相同名称的外键,示例:创建部门表tb_dept1

 create table tb_dept1 (
id int(11) primary key,
name varchar(22) not null,
location varchar(50)
);

定义数据表tb_emp5,让它的键deptId作为外键关联到tb_dept1的主键id

 create table tb_emp5 (
id int(11) primary key,
name varchar(25),
deptId int(11),
salary float,
constraint fk_emp_dept1 foreign key(deptId) references tb_dept1(id)
);

子表的外键必须关联父表的主键,且关联字段的数据类型必须匹配,如果类型不一样就会报错。

使用非空约束

指字段的值不能为空值,如果用户在添加数据时没有指定值,就会报错。

使用非空约束的语法:字段名 数据类型 not null;示例:

 create table tb_emp6 (
id int(11) primary key,
name varchar(25) not null,
deptId int(11),
salary float
);

使用唯一性约束

唯一性约束要求该列唯一,允许出现空值,但是只能出现一个空值

唯一性约束的语法规则,定义完列之后直接定义唯一性约束

 字段名 数据类型 unique

示例:

 create table tb_dept2 (
id int(11) primary key,
name varchar(22) unique,
location varchar(50)
);

定义完所有列之后指定唯一约束:

[constraint <约束名>] unique (<字段名>)

示例:

 create table tb_dept3 (
id int(11) primary key,
name varchar(22),
location varchar(50),
constraint sth unique(name)
);

unique和primay key的区别在于:

一个表中可以有多个字段声明为unique,但是只有一个primary key的声明;

声明为primay key的列不允许有null值,而unique允许null值存在。

使用默认约束

默认约束指定某列的默认值,如果插入新的记录没有为其赋值时,便会自动给该字段赋予默认值。

默认约束的语法规则:

 字段名 数据类型 default 默认值

示例:

 create table tb_emp7 (
id int(11) primary key,
name varchar(25) not null,
deptId int(11) default 1111,
salary float
);

设置表的属性值自动增加

mysql中auto_increment的初始值是1,每新增一条记录,字段值自动加1.

如果突然插了一个很大的id,那么id自动增是怎么增的呢?

一个表只能由一个字段使用auto_increment约束,且字段必须为主键的一部分,可以是任何整数类型。

自动增加语法规则如下:

 字段名 数据类型 auto_increment

示例:

 create table tb_emp8 (
id int(11) primary key auto_increment,
name varchar(25) not null,
deptId int(11),
salary float
);

查看数据表结构

 describe 表名;
desc 表名;

查看表结构详细语句

 show create table 表名\G

这里用\G使得信息更加规整

mysql主要使用alter table语句修改表

修改表名

 alter table <旧表名> rename [to] <新表名>;

修改表名并不修改表结构

修改字段的数据类型

把字段的数据类型转化为另一种数据类型

 alter table <表名> modify <字段名> <数据类型>

示例:

alter table tb_dept1 modify name varchar(30);

要是同时修改多个字段数据类型怎么办?

修改字段名

 alter table <表名> change <旧字段名> <新字段名> <新数据类型>;

新的数据类型是指修改后的数据类型,如果不需要修改数据类型可以将其设置为和原来一毛一样,但就是不能为空。

 alter table tb_dept1 change location loc varchar(50);

不同数据类型在机器中的存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据。

因此当数据表中已经有数据时,不要轻易修改数据类型。

添加字段

 alter table <表名> add <新字段名> <数据类型> [约束条件] [first | after 已存在的字段名];

如果不设置first或者after参数,则默认将新加的字段设置为数据标的最后一列。

示例:

 alter table tb_dept1 add managerId INT(10);
alter table tb_dept1 add column1 varchar(12) not null;
alter table tb_dept1 add column2 int(11) first;
alter table tb_dept1 add column3 int(11) after name;

删除字段

 alter table <表名> drop <字段名>;
alter table tb_dept1 drop column2;

修改字段的排列位置

 alter table <表名> modify <字段1> <数据类型> first | after <字段2>;
alter table tb_dept1 modify column1 varchar(12) first;
alter table tb_dept1 modify column1 varchar(12) after location;

更改表的存储引擎

 alter table <表名> engine = <更改后的存储引擎名>;
alter table tb_dept1 engine = myisam;

删除表的外键约束

 alter table <表名> drop foreign key <外键约束名>;

外键约束名是在定义表时constraint关键字后面的参数。示例:受限创建表tb_emp9

 create table tb_emp9 (
id int(11) primary key,
name varchar(25),
deptId int(11),
salary float,
constraint fk_emp_dept foeign key (deptId) references tb_dept1(id)
);
alter table tb_emp9 drop foreign key fk_emp_dept;
show create table tb_emp9 \G

删除数据表

将数据库中已经存在的表从数据库中删除,删除表的同时表的定义和表中的数据都会被删除。

 drop table一次可以删除一个或者多个表
drop table [if exists] 表1, 表2, ..., 表n;

删除被其他表关联的主表

数据表存在外键的情况下,如果直接删除父表,结果会报错。

这样会破坏表的参照完整性,如果必须要删除可以先删除子表,再删除父表。

如果要保留子表,删除父表,则首先要解除子表的外键,然后删除父表。

示例:在数据库中创建两个关联的表,首先创建表tb_dept2:

 create table tb_dept2 (
id int(11) primary key,
name varchar(22),
location varchar(50)
);

接下来创建tb_emp

 create table tb_emp (
id int(11) primary key,
name varchar(25),
deptId int(11),
salary float,
constraint fk_emp_dept foreign key(deptId) references tb_dept2(id)
);

MySQL基本命令和操作的更多相关文章

  1. MySQL基本命令操作及数据库基本概念

    MySQL基本命令操作及数据库基本概念 1.数据库的基本概念 2.主流数据库介绍 3.关系型非关系型数据库介绍 4.Mysql 安装方法 5.Mysql 基本操作命令 1.数据库的基本概念: 数据库的 ...

  2. MySQL基本命令语法之select

    目录 MySQL基本命令语法之select 查询去重以及常数 空值与着重号 着重号 空值 运算符 算术运算符 比较运算符 符号型 非符号型 逻辑运算符 优先级 排序分页 排序 分页 拓展 多表查询 等 ...

  3. zabbix数据库mariadb从服务器迁移到云mysql数据库的操作

    zabbix数据库mariadb从本机迁移到云mysql数据库的操作 1.将zabbix数据库导出,并导入到云数据库中 由于数据库较大,如果直接使用shell会话中断会导致数据库导出或者导入失败,使用 ...

  4. DBA必备:MySQL数据库常用操作和技巧

    DBA必备:MySQL数据库常用操作和技巧 2011-02-25 15:31 kaduo it168 字号:T | T MySQL数据库可以说是DBA们最常见和常用的数据库之一,为了方便大家使用,老M ...

  5. Git基本命令行操作 (转)

    Git远程操作详解   作者: 阮一峰 Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和 ...

  6. mysql没有delete操作,那是delete from操作,

    1.mysql没有delete操作,那是delete from操作, 2.DELETE FROM table_name [WHERE Clause]

  7. MySQL查询in操作 查询结果按in集合顺序显示(转)

    MySQL 查询in操作,查询结果按in集合顺序显示的实现代码,需要的朋友可以参考下. MySQL 查询in操作,查询结果按in集合顺序显示 复制代码代码如下: select * from test ...

  8. php笔记08:数据库编程---使用php的MySQL扩展库操作MySQL数据库

    1.使用php的MySQL扩展库操作MySQL数据库: php有3种方式操作MySQL数据库 (1)mysql扩展库 (2)mysqli扩展库 (3)pdo     mysql扩展库与mysql数据库 ...

  9. linux下mysql数据库的操作

    本文主要针对linux下mysql数据库的安装,以及数据库的创建和简单的数据库操作进行说明. ①.Mysql数据库的安装: 数据库的安装分为源码安装和rpm安装. 当然对于老手来说需要进行一些自定义的 ...

随机推荐

  1. function声明的深刻含义和jquery属性注入区别

    在js中有两类对象 1.json对象,仅仅代表对象而已 2.function声明的对象 (1) 它定义了构造器  可以用new 对象 来初始化 数据对象 (2) 它指明对象是一个函数对象  通过后面加 ...

  2. Java compiler level does not match解决方法(转)

    本文转自:https://www.cnblogs.com/lauer0246/p/5740572.html#undefined 从别的地方导入一个项目的时候,经常会遇到eclipse/Myeclips ...

  3. 给定随机数列求第k大的数字

    原来STL我还是有很多不知道的地方 STL 采用的算法是: 当数组长度 <= 3时, 采用插入排序. 当长度 > 3时, 采用快排 Partition 的思想,也就是说类似快速排序(这里不 ...

  4. 避免全表扫描的sql优化

    对查询进行优化,应尽量避免全表扫描,首先应考虑在where 及order by 涉及的列上建立索引:  .尝试下面的技巧以避免优化器错选了表扫描: ·   使用ANALYZE TABLE tbl_na ...

  5. 方法$.data()和$.('#test').on()的使用

    1.on() 方法的使用 在选择元素上绑定一个或多个事件的事件处理函数. on()方法绑定事件处理程序到当前选定的jQuery对象中的元素.在jQuery 1.7中,.on()方法 提供绑定事件处理程 ...

  6. oracle导表小结

    事件描述:从A主机oracle服务器导出.sql文件到B主机,发现1.导入存在乱码 2.提示USERS表空没有权限(A B主机均为window系统) 1.针对第一点乱码 首先确认系统的默认字符编码GB ...

  7. shutdown 与 close 函数 的区别

    假设server和client 已经建立了连接,server调用了close, 发送FIN 段给client(其实不一定会发送FIN段,后面再说),此时server不能再通过socket发送和接收数据 ...

  8. js 数据结构-栈与队列

    /*[客栈的盘子/月井里的货物,后进先出]栈顶:最先入口/出口的位置栈底:最慢最晚出栈的位置*/ function Stack() { var item = []; //推(将货物推入月井) this ...

  9. nginx配置文件中location说明

    1 nginx配置文件 文件结构 ... #全局块 events { #events块 ...} http #http块 { ... #http全局块 server #server块 { ... #s ...

  10. Hadoop本地库介绍及相关问题解决方法汇总

    1.hadoop本地库的作用是什么?2.哪两个压缩编码器必须使用hadoop本地库才能运行?3.hadoop的使用方法?4.hadoop本地库与系统版本不一致会引起什么错误?5.$ export HA ...