mysql数据库优化课程---2、命令其实也就是那几个单词
mysql数据库优化课程---2、命令其实也就是那几个单词
一、总结
一句话总结:
比如show,use,alter
1、开启和关闭mysql服务?
Windows下:net start/stop mysql
Linux下:service mysql start | stop | restart | status
Windows下开启和关闭mysql服务
1 net start mysql # 开启mysql服务
2 net stop mysql # 关闭mysql服务
没有重启mysql服务这个命令。
Linux下
1 service mysql start | stop | restart | status
- start 启动服务
- stop 停止服务
- restart 重启服务
- status 查看服务状态
2、登录mysql数据库?
mysql -h localhost -uroot -p + 输入密码
1 mysql -h hostname -u username -p
如何hostname是本机的话,要替换为127.0.0.1或者是localhost
例子:mysql -h localhost -uroot -p
这样输完之后会换行让你输密码,我们也可以直接把密码写在-p后面,当然这样不安全。
3、查看当前所有存在的数据库?
show databases; // show出来, 不止一个数据库这里我们要加s
1 show databases; // show出来, 不止一个数据库这里我们要加s
4、创建数据库?
create database database_name; // create是创建, 由于一次只能创建一个数据库, 这里database不加s, 最后接上数据库名称
1 create database database_name; // create是创建, 由于一次只能创建一个数据库, 这里database不加s, 最后接上数据库名称
5、删除数据库?
drop database database_name; // 注意这里的删除用的是drop, 而不是delete
1 drop database database_name; // 注意这里的删除用的是drop, 而不是delete
使用drop database命令要特别谨慎,采用这种方式删除之后数据库中存储的所有数据表和数据会一同被删除,而且无法恢复。数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作,不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。
6、选择当前数据库?
use database_name;
数据表属于数据库,在对表进行任何操作前都要受限选择数据库,否则报错"No database selected"。
1 use database_name;
7、主键约束有哪些需要注意?
主键约束要求主键列的数据唯一,而且不允许为空,可唯一标识一条记录,结合外键还可定义不同数据表的关系,加快查询速度。
主键和记录之间的关系如同身份证和人之间的关系,一一对应。
主键有两种:单字段主键和多字段联合主键。
8、修改字段名?
alter table <表名> change <旧字段名> <新字段名> <新数据类型>;
1 alter table <表名> change <旧字段名> <新字段名> <新数据类型>;
新的数据类型是指修改后的数据类型,如果不需要修改数据类型可以将其设置为和原来一毛一样,但就是不能为空。
1 alter table tb_dept1 change location loc varchar(50);
不同数据类型在机器中的存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据。
因此当数据表中已经有数据时,不要轻易修改数据类型。
9、添加字段?
alter table tb_dept1 add column1 varchar(12) not null;
1 alter table <表名> add <新字段名> <数据类型> [约束条件] [first | after 已存在的字段名];
如果不设置first或者after参数,则默认将新加的字段设置为数据标的最后一列。
示例:
1 alter table tb_dept1 add managerId INT(10);
2 alter table tb_dept1 add column1 varchar(12) not null;
3 alter table tb_dept1 add column2 int(11) first;
4 alter table tb_dept1 add column3 int(11) after name;
10、更改表的存储引擎?
alter table tb_dept1 engine = myisam;
1 alter table <表名> engine = <更改后的存储引擎名>;
2 alter table tb_dept1 engine = myisam;
二、MySQL基本命令和操作
开启和关闭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数据库优化课程---2、命令其实也就是那几个单词的更多相关文章
- mysql数据库优化课程---16、mysql慢查询和优化表空间
mysql数据库优化课程---16.mysql慢查询和优化表空间 一.总结 一句话总结: a.慢查询的话找到存储慢查询的那个日志文件 b.优化表空间的话可以用optimize table sales; ...
- mysql数据库优化课程---15、mysql优化步骤
mysql数据库优化课程---15.mysql优化步骤 一.总结 一句话总结:索引优化最立竿见影 1.mysql中最常用最立竿见影的优化是什么? 索引优化 索引优化,不然有多少行要扫描多少次,1亿行大 ...
- mysql数据库优化课程---14、常用的sql技巧
mysql数据库优化课程---14.常用的sql技巧 一.总结 一句话总结:其实就是sql中那些函数的使用 1.mysql中函数如何使用? 选择字段 其实就是作用域select的选择字段 3.转大写: ...
- mysql数据库优化课程---13、mysql基础操作
mysql数据库优化课程---13.mysql基础操作 一.总结 一句话总结:mysql复制表,索引,视图 1.mysql如何复制表? like select * 1.复制表结构 create tab ...
- mysql数据库优化课程---9、php用什么写的
mysql数据库优化课程---9.php用什么写的 一.总结 一句话总结:php是用c语言写的,所以php里面的那些模块什么都是c语言 c 1.php用什么写的? c php是用c语言写的,所以php ...
- mysql数据库优化课程---4、mysql字段属性
mysql数据库优化课程---4.mysql字段属性 一.总结 一句话总结: mysql字段:没有被淘汰的必然有其存在的合理性(也就是有优点),比如char类型 1.为什么char类型没有被淘汰? c ...
- mysql数据库优化课程---18、mysql服务器优化
mysql数据库优化课程---18.mysql服务器优化 一.总结 一句话总结: 1.四种字符集问题:字符集都设置为utf-82.slow log慢查询日志问题3.root密码丢失 1.mysql存在 ...
- mysql数据库优化课程---17、mysql索引优化
mysql数据库优化课程---17.mysql索引优化 一.总结 一句话总结:一些字段可能会使索引失效,比如like,or等 1.check表监测的使用场景是什么? 视图 视图建立在两个表上, 删除了 ...
- mysql数据库优化课程---12、mysql嵌套和链接查询
mysql数据库优化课程---12.mysql嵌套和链接查询 一.总结 一句话总结:查询user表中存在的所有班级的信息? in distinct mysql> select * from cl ...
随机推荐
- JS 插件 fastclick.js 解决手机端click点击延迟
FastClick 是一个简单,易于使用的JS库用于消除在移动浏览器上触发click事件与一个物理Tap(敲击)之间的300延迟. 对于非移动浏览器不启作用,禁用缩放标签. <meta name ...
- GIS学习和开发的在线资源
1.OpenGIS Consortium标准,http://www.opengeospatial.org.著名的OGC标准是每个GIS开发者最后都不得不学习的,或深或浅. 2.SharpMap,Pro ...
- 前端 初级篇(HTML)
HTML 概述: HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就 ...
- Swift进阶 - 12个技巧
听说你已经学习Swift几个月了,有没有想更进一步成为Swift高手的想法?我这里有11招秘技,各位施主且听我慢慢道来,结个善缘. 1. 扩展(Extension) 任务: 求数字的平方. // 菜鸟 ...
- 【LeetCode】 子字符串思路
在一些求字串含有固定字符最短串,含有不同字符最长子串等问题中,利用 vector<int> map(128, 0)可以解决 题一:最短给定子串 Minimum Window Substri ...
- Linux Shell基础 Shell基本知识
概述 在 Linux 的脚本中,只要是基于 Bash语法写的Shell脚本第一行必须是"#!/bin/bash",用来声明此文件是一个脚本. 运行方式 Shell 脚本的运行主要有 ...
- [Papers]Finding Advertising Keywords on Web Pages
参考资料: Finding Advertising Keywords on Web Pages ,Wen-tau Yih,Joshua Goodman, Vitor R. Carvalho
- Android Opencv NativeCameraView error in 5.0 lollipop versions (Bug #4185)
https://github.com/opencv/opencv/wiki http://code.opencv.org/issues/4185 Hello, I finally get a ride ...
- Java变量修饰符volatile
volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以 ...
- node中session存储与销毁,及session的生命周期
1.首先在使用session之前需要先配置session的过期时间等,在入口文件app.js中 app.use(express.session({ cookie: { maxAge: config.g ...