时间:2021-07-01 10:21:17 帮助过:4人阅读
# ### mysql
ctrl + l 清屏 linux里可以用
ctrl + c 终止
shift+ins 粘贴
ctrl+ins 复制
Navicat中 F5 刷新数据库
[linux] 终端
service mysql start   启动mysql
service mysql stop    停止mysql
service mysql restart 重启mysql
[windows] 在超级管理员权限下才能使用 wind+r -> cmd
net start mysql  启动mysql
net stop  mysql  停止mysql
# ### part1
mysql -u用户名 -p密码 -hip地址  
#登录mysql,如果是用root中户登录本地mysql,可以不加-hip 直接 mysql -uroot -p
# (1) 登录到本地mysql 默认root 是最高权限账户
mysql -uroot -p123456  #这种直接加上密码的写法也可以
localhost => 127.0.0.1 本地IP地址
# (2) 退出mysql
exit 或者 \q  退出
# (3) root账户远程连接linux中的mysql 服务器
mysql -uroot -p -h192.168.40.128
# ### part2
# 查询当前登录用户是谁
select user()
# 设置密码
set password = password("123456");
# 去除密码
set password = password("");
# ### part3
# mysql 创建新用户
create user "ceshi01"@"192.168.111.222" identified by "111"; # 给具体某个ip设置账户(一般是公网ip)
create user "ceshi02"@"192.168.111.%"   identified by "222"; # 给具体某个网段下的所有ip设置一个账户
create user "ceshi03"@"%";                                   # 所有ip都能登录,不需要密码
# 通过windows链接linux的mysql:
# 1 在虚拟机->设置->硬件->网络适配器->查看是不是NAT模式(N),是NAT模式的ip创建用户才可使用
# 2 这个ip在windows用ipconfig查看,找到VMnet8下的ip为 192.168.40.1
# 3 在linux的mysql中创建用户 create user"test02"@"192.168.40.1" identified by "111"
# 最后一个"111"代表test02用户的登录密码
# 另外:VMnet1 中的ip 是仅主机模式的ip(这里我们不用)
# 然后用windows连接linux中的数据库并用test02用户登录时,用 mysql -utest02 -p -h192.168.40.128
# 注意这个登录ip是linux中利用ifconfig查看到的ip
create user"test02"@"192.168.40.1" identified by "111" #在root账户中创建用户
mysql -utest02 -p -h192.168.40.128 # 在windows里用test02登录
# 查看用户权限(用root账户查看,别的账户可能没权限)
show grants for "test02"@"192.168.40.1"
# GRANT USAGE ON *.* TO ‘test02‘@‘192.168.40.1‘  可以看到USAGE没有任何权限
"""
# 权限:
select  查询数据库的权限
insert  插入数据库的权限
update  更新数据库的权限
delete  删除数据库的权限
*  代表所有
\G 代表垂直分布查看
"""
# 给test02账户授予查询权限, .左边是所有库, .右边是所有表,即所有库所有表
"""授予权限之后刷新一下权限,然后test02用户退出重登一下"""
grant select on *.* to "test02"@"192.168.40.1" identified by "111"
# all代表所有权限
grant all on *.* to "test02"@"192.168.40.1" identified by "111"
# 查看所有数据库
show databases
# 删除账户
drop user "test01"@"192.168.40.1"
# 刷新权限
flush privileges
# ### part4
"""
在linux里搜索新建的数据库db1在哪儿
sudo find /  -name db1
先切换到root用户中 sudo su root,因为chenjiaqi用户权限不够,所以切到root用户进入mysql
cd /var/lib/mysql
能看到对应的数据库
"""
# (1) 操作[数据库] (文件夹)
增
	# 创建数据库
	create database db1 charset utf8 #这里db1是库名,charset指定数据库所用的编码集
查
	# 查看数据库列表
	show databases
	# 查看数据库的建库语句
	show create database db1
	#看到了创建库的语句 CREATE DATABASE `db1` 即可以用相同的语句创建数据库db2
	# ` 这个符号是~这个键
改
	# alter 更改数据库的字符集
	alter database db1 charset gbk
删
	# 删除数据库db1
	drop database db1;
# (2) 操作[表结构] (文件) 
# 一般在表结构下操作需要带table并且写表名;在记录下操作不用带table,只用写表名
"""进入数据库 use 库名;"""
"""mysql里面str字符串型用char表示"""
增
	# int 整型 char字符
	# 表名(字段名1 类型1,字段名2 类型2...)
	create table t1(id int , name char) #这里t1是表名
	
	# 从建表语句中可以看到CREATE TABLE `t1`可创建类似的t2表
查
	# 查询所有数据表
	show tables
	# 查看建表语句
	show create table t1;
	# 查看表结构
	desc t1 #describe描述 -> 查看表结构
"""
CREATE TABLE `t2` (
  `id` int(11) DEFAULT NULL,
  `name` char(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
"""
改
	# modify 只能改变数据类型和是否可以为null 即null(yes/no)
	alter table t1 modify name char(5)
	# change 连带字段名和数据类型一起改变
	alter table t1 change name NAME char(4)
	alter table t1 change NAME name char(5)
	# add    添加字段
	alter table t1 add age int;
	# drop   删除字段 column 列
	alter table t1 drop column age;
	# rename 更改表名 
	alter table t1 rename t1_1;
	
删
	# 删除表t1_1
	drop table t1_1
# (3) 操作记录 (文件内容 也就是表内容)
"""mysql null 相当于 python None"""
增:
	# 一次插入一条数据
	insert into t1(id,name) values(1,"xboy1")
	# 一次插入多条数据
	insert into t1(id,name) values(2,"xboy2"),(3,"xboy3"),(4,"xboy4")
	# 不指定具体字段,默认把所有字段值插入一遍
	insert into t1 values(5,"xboy5")
	# 可以具体指定某个字段进行插入
	insert into t1(name) values("xboy6")
	
查:
	# * 代表所有
	select * from t1;
	select id,name from t1;
	
改:
	# update 表名 set 字段=值 where 条件
	update t1 set name = "王文" where id = 1
	# 如果不加条件,所有数据都改了
	update t1 set name = "王文"
	
删:  """好像除了删除记录用delete其他都用drop"""
	# 删除id为1的这条数据
	delete from t1 where id = 2
	delete from t1 
	# 重置数据表 (包括重置id)
	truncate table t1;
# ### part5 mysql常用数据类型
# 整型 
tinyint 1个字节(8位,0000 0000-1111 1111即0-255) 有符号(符号位占一位)(-128到127) 
	无符号(unsigned) (0到255) 小整型值
int 4个字节,有符号(-21亿 ~ 21亿 左右 ),无符号(0 ~ 42亿 左右),大整型值,精度范围更广
# 超过设定值存入没事,超过大小存入直接报错	
	create table t1(id int , sex tinyint);
	insert into t1 values(2200000000,128);
	insert into t1 values(2100000000,127);
# 浮点型
float(255位,30位)   单精度(长度最长255位,小数部分最长30位 -> 整数部分最长225位)
double(255位,30位)  双精度(长度最长255位,小数部分最长30位)
decimal(65位,30位)  金钱类型,使用字符串的形式保存小数(和上面一样)
	create table t2(  f1 float(5,2) , f2 double(5,2) , f3 decimal(5,2) );
	"""其中float(5,2)代表总长度最长5位,小数部分最长2位"""
	insert into t2 values(1.55555555,1.55555555,1.55555555) # 长度超过设定值,四舍五入存入
	
	"""float,double和decimal不加括号,分别默认保留5位小数,16位小数,整数部分,存在四舍五入"""
	create table t3( f1 float , f2 double , f3 decimal )
	insert into t3 values(1.8288888888888888888888888888888888,1.8288888888888888888888888888888888,1.8288888888888888888888888888888888)
	create table t3_3(f1 float(5,2));
	"""首先定义了float(5,2),如果插入的值的整数部分就超过了3位(5-2),会报错,小数部分超过2位,四舍五入"""
	insert into t3_3 values(12.5678); #  12.57
# 字符串 char(255) varchar(21845) -> 最大长度255位,最大长度21845位
char(11)       定长: 固定开辟11个长度的空间(手机号,身份证),速度比较快
varchar(11)    变长: 最大开启字符长度为11的空间(文章评论,0~255字符,短信), 相比较于char类型,速度稍慢,但节省内存空间
text           文本类型,针对于 文章,论文,小说
	create table t4( c char(11) ,v varchar(11) , t text );
	insert into t4 values("1111","地方","sldfjsdkfjlskdfjksdfksdjklfsjklf");
	select concat(c,":",v,":",t) from t4; #效果如下
	+----------------------------------------------+
	| concat(c,":",v,":",t)                        |
	+----------------------------------------------+
	| 1111:地方:sldfjsdkfjlskdfjksdfksdjklfsjklf   |
	+----------------------------------------------+
	# 原本效果: select * from t4;
	+------+--------+----------------------------------+
	| c    | v      | t                                |
	+------+--------+----------------------------------+
	| 1111 | 地方   | sldfjsdkfjlskdfjksdfksdjklfsjklf |
	+------+--------+----------------------------------+
# mysql 
# ### concat 拼接 concat(参数1,参数2,参数3 ... ) 把所有参数按需求拼接在一起
# 枚举 和 集合
	enum  枚举: 从一组数据中选一个(性别)
	set   集合: 从一组数据中选多个(自动去重)
	create table t5(
	id int,name char(10),
	money float(6,2),
	sex enum("man","woman"),
	hobby set("eat","drink","piao","du","chou")
	)
	# 正常写法
	insert into t5(id,name,money,sex,hobby) values(1,"zhangsan",9.9,"woman","piao,du,chou")
	# 自动去重
	insert into t5(id,name,money,sex,hobby) values(1,"zhangsan",9.9,"woman","chou,drink,drink,drink,drink,drink")
# ### 配置linux 中 utf8编码集
# (1) find / -name my.cnf 
# (2) 找到之后,发现是链接,打开mysql.cnf 找到其中真正引入的路径
	!includedir /etc/mysql/conf.d/       (客户端配置)
	!includedir /etc/mysql/mysql.conf.d/ (服务端配置)
# (3) nano /etc/mysql/conf.d/mysql.cnf  default-character-set=utf8 添加到文件中
#    nano /etc/mysql/mysql.conf.d/mysqld.cnf  character-set-server=utf8添加到文件中
# (4) 重启 service mysql restart
mysql1_增删改查操作
标签:最大 管理 sig double 有符号 cal top character 记录