mysql1_增删改查操作
Posted 斑驳岁月
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql1_增删改查操作相关的知识,希望对你有一定的参考价值。
# ### 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_增删改查操作的主要内容,如果未能解决你的问题,请参考以下文章