MySQL
MySQL教程
MySQL命令提示符之简单语句
语句打错可以输入\c来结束输入
-
连接MySQL
打开DOS窗口:windows键+r 后输入 cmd 打开命令提示符
利用Cd命令 打开安装目录具体到\bin文件夹
操作实例:
比如我的bin文件夹的地址为
C:\Program Files\MySQL\MySQL Server 8.0\bin
接下来在DOS窗口中输入
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
然后回车
连接本机上的MySQL
mysql -u username -p password (注意:u与username,p与 password 之间可以不用加空格,可在 -p后接着输入 password,也可在 -p 后回车,在输入 password,推荐后者安全性高 密码会有密文保护)
操作实例
假设本地上的MySQL 的用户名为 :root 密码为:123456,输入以下命令
mysql -uroot -p123456
连接远程主机上的MySQL
mysql -h IP -u username -p password
操作实例
假设远程主机的IP为:110.110.110.110,用户名为 :root 密码为:123456,则输入以下命令
mysql -h 110.110.110.110 -u root -p 123456(注意:h与IP地址,u与username,p与 password 之间可以不用加空格,可在 -p后接着输入 password,也可在 -p 后回车,在输入 password,推荐后者安全性高 密码会有密文保护)
-
密码操作
首先在DOS下进入目录···\bin
mysqladmin -u usernam -p 旧密码 -password 新密码
有两种情况:
1.有用户名但是没有设置密码,想给用户加上一个密码
比如我的用户名为 root ,想添加的密码为 123456
mysqladmin -u root -password 123456 (因为该用户没有旧密码,所以可以省略 -p 旧密码 一项)
2.有用户名有密码,想给用户换一个密码
将上面设置的密码123456 改成 root
mysqladmin -u root -p 123456 password root
-
新增用户
grant on命令用于增加新用户并控制其权限。
grant operator[具体操作,多个操作用,隔开] on 数据库.* to 用户名@登录主机 identified by “密码”; operator操作名:[select](查询) [insert](插入) [updata](修改) [delete](删除)
- 增加一个用户test1,密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用root用户连入MySQL,然后键入以下命令:
grant select,insert,update,delete on *.* to [email=test1@'']test1@''[/email] Identified by “abc”;
但增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法如下。
- 增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MySQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MySQL主机上的web页来访问了。
grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “abc”;
如果你不想test2有密码,可以再打一个命令将密码消掉。
grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “”;
-
查看所有的库
show databases;
-
选择某一个库
use 库名;
-
查看某一个库下面所有的表
/*前提:在选完库后才能进行此操作*/ show tables;
-
创建一个库
create database 库名 [charset 编码名称]; []内的内容为选填
-
删除一个库
drop database 库名;
-
删除一个表
drop table 表名;
-
声明字符集
set names 字符集名字;
-
建表语句
建表的过程就是一个声明字段的过程 create table + 表名( ) /*例如:*/ create table class( id int primary key auto_increment, sname varchar(10) not null default '', gender char(1) not null default '', company varchar(20) not null default '', salary decimal(6,2) not null default 0.00, fanbu smallint not null default 0 )engine myisam charset utf8;
-
查看表的结构
desc 表名;
-
给表改个名
rename table old to newname;
-
清空表的数据
truncate 表名;
-
delete与truncate是有区别的
truncate: 相当于删除原来的表再建一张与之前同样结构的表,操作后得到一张全新表。 delete: 在当前表下的行的层面上进行操作, 如果决定全部清空,选用 truncate 操作速度更快
-
表的增删改查
假设我们现在有一个表结构,接下来我们就针对此表进行实例讲解
表名为class
id sname gender company salary 1 张三 男 百度 8888 2 李四 男 腾讯 10000 3 王五 男 阿里 11000 增操作之 insert 语法
增操作(insert): 口诀:往哪张表,表的那几列,增添什么值。(注意:列与值一一对应) insert into 表的名字 (每个列的名称用,隔开) values (和前面括号中的列的个数和属性相对应,每个值用,隔开); 插入多个行信息的操作为: insert into 表的名字 (···) values (···),(···),(···),···,···;
实例:
在表名为class的表中增加2个人刘备,关羽的信息,由于两人工作的保密制度不要求增加公司名字
insert into class(id,sname,gender,salary) values(4,'刘备','男',8800),(5,'关羽','男',8000);
插入完之后
id sname gender company salary 1 张三 男 百度 8888 2 李四 男 腾讯 10000 3 王五 男 阿里 11000 4 刘备 男 8800 关羽 男 8000 删操作之 delete 语法
删除操作(delete): 口诀:删那张表,删表的那几行(注意:删除操作的基本单位为 '行') delete from 表名 where +[表达式];(注意表达式为真就执行操作,否则不执行) 如果不加 where 语句来指定某一行,比如: delete from class; 则表名为class下的所有行全被删除
实例操作:
1.假如我们不喜欢王五这个人去世了(难过),我们想要删除他的信息。
我们来分析一下王五的信息中有那些属性是其他人没有的,比如id,sanme 还有salary,我们可以利用这些独 一无二的特性来指定删除王五的信息,利用where来指定
where + 表达式 所以删除王五的指令为: delete from class where id = 3;
2.假如我们想要同时删除刚才添加的两个人的信息
delete from class where id >=3 and id <= 4;
(注意where 后的表达式一定是要你想操作的那个行的特有的,不要和其他行重复)
id sname gender company salary 1 张三 男 百度 8888 2 李四 男 腾讯 10000 改操作之 update 语法
改操作(update): 口诀:改哪张表,表的那几行,改成什么值。(注意:列与值一一对应) update 表的名字 set 列的名称 = 改的内容 where 表达式为真就执行,可以利用这个特性来更改改某一行; 更改某一行多个列的操作: update 表的名字 set 列的名称 = 改的内容,set 列的名称 = 改的内容,set 列的名称 = 改的内容,··· where 表达式为真就执行,可以利用这个特性来更改改某一行; 如果没有 where 语句来特指哪一行,如: update class set gender = '男'; 则会把当前表里的 gender 这一列的内容全部变为 男
实例操作:
因为张三去了一趟泰国,回来后换了个名字‘Linda’,并且换了一家公司'星火娱乐',所以我想更改张三的信息。利用唯一性使用where语句来指定行
update class set sanme = 'Linda',set gender = '女',set company = '星火娱乐' where id = 1;
(注意where 后的表达式一定是要你想操作的那个行的特有的,不要和其他行重复)
id sname gender company salary 1 Linda 女 百度 8888 2 李四 男 腾讯 10000 查操作之 select 语法
查操作 (select): 口诀:查那张表,查表的那几列,查表的第几行(注意第几行用 where 语句来实现) 语法: select 列名称(有多个用,隔开) from 表名 where + 表达式;(注意:表达式一定要是能够筛选出你所需要的行) 比如你想查找 李四的信息 要给出一个能够代表李四这一行的表达式。 查询一个表的所有行所有列: select * from 表名; 查询部分行的所有列: select * from 表名 where + 表达式; 查询部分列的所有行的信息: select 列名(有多个用,隔开) from 表名; 查询部分列的部分行的信息: select 列名(有多个用,隔开) from 表名 where + 表达式; (注意:如果查询后显示乱码,利用 set nams + 字节编码; [字节编码可以右键查看dos窗口的的编码情况])
实例操作
查询李四的sname,company,salary这三列的信息。
select sname,company,salary from class where id =2;
sname company salary 李四 腾讯 10000 (注意where 后的表达式一定是要你想操作的那个行的特有的,不要和其他行重复)
-
tee 命令
tee + 地址
保存操作过的指令
-
MySQL三大列类型
数值型
整型
tinyint
占据空间 1 字节
存储范围 -128 - 127 /0 - 255
samllint
占据空间 2 字节
存储范围 -32768 -- 32767 / 0 -- 65535
mediumint
占据空间 3 字节
存储范围 -8388608 --- 8388607 /0 -- 16777215
int
占据空间 4 字节
存储范围 -2147483648 --- 2147483647 / 0--4294967295
bigint
占据空间 8 字节
存储范围 -92233720368547755808 --- 92233720368547755807
0----18446744073709551615
(注意不加声明时,默认有符号)
unsigned (无符号)
int 类型 声明 参数
M()unsigned zerofill (注意M与zerofill 同时出现才有意义)
zerofill 默认 unsigned
bigint(2) zerofill not full default 0
浮点型/定点型
float(M,D)浮点
decimal(M,D) 定点
M叫做‘精度’----->小数的总位数
D是’标度‘代表小数点右边的位数
unsigned 声明无符号
float 能存 10^38 10^-38 如果M<=24 占4个字节 ,否则占8字节
定点是把整数和小数分开来存,比float准确
字符型
char
char(6) 定长字符串
存储时长度不够 空格来补,取出时再把右侧空格删掉,如果你输入的时候右侧本身就有空格,会发生丢失。
varchar 变长字符串
存储时会在前面加入字节来存储字符串长度
类型 宽度 可存字节 实际字符 实占空间 利用率 查询速度 char M M i M i/M<=100% 快 varchar M M i i字符+(1-2)字节 i/(i+[1-2])<100% 比char慢 char(M) varchar(M)限制的是字符长度,限制的不是字节
char(2)charset utf8 可以保存2个utf8字符,比如‘中国’
text
文本类型,可以存比较大的文本段,搜索速度稍慢,因此,如果不是特别大的内容·建议用char,或是varchar来代替 text 不用加默认值(加了也没用)
blob
二进制类型,用来存储图像,音频等二进制信息
意义:二进制,0-255都有可能出现,blob在于防止因为字符集的问题导致信息丢失,比如一张图片中有0xFF字节这个ascll字符集认为非法,在入库的时候被过滤了
日期时间类
类型 说明 标准格式 范围 所占空间 date 日期 yyyy-mm-dd 1000-01-01--->9999-12-31 3字节 time 时间 HH:MM:SS -838:59:59 ---- 838 :59:59 3字节 datetime 日期时间 yy-mm-dd HH:MM:SS 1000-01-01 00:00:00 到 9999:12:31 23:59:59 8字节 year 年份类型 YYYY 和 YY 1901-2155 1字节 timestamp 自动取出系统当前时间 default:current_timestamp -
连接字符串
concat
只是个人看视频的笔记,不喜勿碰,若有错误还请指出