day37:MySQL基本操作
目录
part1:登录mysql的完整语法
# (1) 登录mysql语法 默认root账户 是系统最高权限用户 mysql -uroot -p 127.0.0.1 =>localhost 本地ip地址 # (2) 退出mysql exit 或者 \q # (3) 远程连接mysql服务器 mysql -uroot -p -h192.168.65.135
part2:查询用户/设置密码/去除密码
# 查询当前登录的用户是谁 select user() # 设置密码 set password = password("123456") # 去除密码 set password = password("")
part3:给ip/网段/所有ip设置账号密码
# 给具体某个ip设置账号密码,用来访问数据库(公网ip) create user 'ceshi100'@'192.168.65.1' identified by '333'; # 给具体某个网段下的所有ip设置共同的账号密码,用来访问数据库(公网ip) %代表任意的ip 0~255 create user 'ceshi101'@'192.168.174.%' identified by '444'; # 所有的ip都可以登录到服务器数据库中 create user 'ceshi102'@'%' identified by '555';
part4:查看权限
# 刷新权限,立刻生效 flush privileges # 查看哪个ip哪个用户的权限 '''USAGE 没有任何权限''' show grants for 'ceshi102'@'%'; +--------------------------------------+ | Grants for ceshi102@% | +--------------------------------------+ | GRANT USAGE ON *.* TO 'ceshi102'@'%' | +--------------------------------------+
part5:添加权限/删除权限/删除用户
grant 权限 on 数据库.表名 to '用户名'%'ip地址' identified by '密码' """ # 主要权限 select 查看数据表的权限 insert 插入数据表的权限 update 更新数据表的权限 delete 删除数据表的权限 drop 删除数据库的权限 * 代表所有 """ grant select,drop on *.* to 'ceshi102'@'%' identified by "333" # all 代表所有权限 grant all on *.* to 'ceshi102'@'%' identified by "333" # 移除权限 # 单个 revoke drop on *.* from 'ceshi102'@'%' # 所有 revoke all on *.* from 'ceshi102'@'%' # 删除用户 drop user 'ceshi102'@'%'
part6:操作数据库:database
# (1) 操作[数据库] (文件夹) '''增''' # 创建一个数据库 create database db0824 charset utf8; '''查''' # 查看所有数据库 show databases
# 查看建立数据库的语句 show create database db0824 # CREATE DATABASE `db0824` /*!40100 DEFAULT CHARACTER SET utf8 */ '''改''' alter database db0824_1 charset gbk '''删''' drop database db0824_1;
part7:操作表:table
# (2) 操作[数据表] (文件) # 先选择数据库 use 数据库名 '''增''' # 字段名1 类型1 ,字段名2 类型2 , ... ... create table t1(id int , name char); '''查''' # 查看所有表 show tables; # 查看建表语句 配合\G 可以垂直显示 show create table t1; """ Create Table: CREATE TABLE `t1_1` ( `id` int(11) DEFAULT NULL, `name` char(1) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 """ # 查看表结构 desc t1 '''改''' # modify 只能改变数据类型 alter table t1 modify name char(5) # change 连字段名 + 类型一起改变 alter table t1 change name newname char(4) # add 添加字段 alter table t1 add age int; # drop 删除字段 column列 alter table t1 drop column age # rename 更改表名 alter table t1 rename t1_2 '''删''' drop table t1_2;
part8:操作表中的数据(记录)
# (3) 操作[记录] (文件中的数据) '''增''' # 一次插入一条数据 '''insert into 表名(字段1,字段2,...) values(值1,值2, .... )''' insert into t1_1(id,name) values(1,"xboy1"); # 一次插入多条数据 insert into t1_1(id,name) values(2,"xboy2"),(3,"xboy3"),(4,"xboy4"); # 不指定具体字段插入(默认把所有字段对应的值插一遍) insert into t1_1 values(5,'xboy5'); # 指定单个字段插入数据 insert into t1_1(name) values('xboy6'); '''查''' # * 代表所有 select * from t1_1; # 指定字段进行查询 select id,name from t1_1; '''改''' # update 表名 set 字段=值 where 条件 update t1_1 set name="王闻你真帅" where id = 1 # 切记更改时,加上条件,否则全都改掉了 update t1_1 set name="王闻你真帅" '''删''' # 指定id=2的这条数据删除 delete from t1_1 where id = 1 # 如果不加条件,删除所有数据 delete from t1_1 # 重置数据表 (删除数据 + 重置id) truncate table t1_1;
part9:MySQL中数据类型
1.整型
tinyint 1个字节 有符号(-128 ~ 127) 无符号(unsigned) (0 ~ 255) 小整型值
int 4个字节 有符号(-21亿 ~ 21亿 左右) 无符号(unsigned) (0 ~ 42亿) 大整型值
create table t1(id int , age tinyint ); insert into t1 values(2200000000,1) # error insert into t1 values(2100000000,1) insert into t1 values(2100000000,128) # error insert into t1 values(2100000000,127)
2.浮点型
float(255,30) 单精度,总长度最多255位,小数长度最多30位,整数长度最多225位
double(255,30) 双精度,总长度最多255位,小数长度最多30位,整数长度最多225位
decimal(65,30) 金钱类型,使用字符串的形式保存小数,总长度最多65位,小数长度最多30位,整数长度最多35位
"""默认存在四舍五入""" create table t2(f1 float(5,2) , f2 double(5,2) , f3 decimal(5,2)); insert into t2 values(1.77777777777777777777777777,1.77777777777777777777777777,1.77777777777777777777777777);
存储结果如下图所示
"""float 默认小数保留5位,double小数位截取16位,decimal(10,0) 默认保留整数,存在四舍五入""" create table t3(f1 float,f2 double ,f3 decimal); insert into t3 values(1.77777777777777777777777777,1.77777777777777777777777777,1.77777777777777777777777777);
存储结果如下图所示
3.字符串类型
char 字符长度 255个
varchar 字符长度 21845个 (注意:总字节数不超过65535)
char(11) 定长 : 固定开辟11个字符长度的空间(手机号,身份证号,银行卡), 开辟空间速度上char速度更快
varchar(11) 变长 : 最多开辟11个字符长度的空间(评论,消息留言,地址), 开辟速度相较于char慢一点.
text 文本类型,存论文,小说,文章..
create table t5(c char(11), v varchar(11) , t text); insert into t5 values('22222',"33333","44444"); insert into t5 values('22222',"33333333333333333333","44444"); # error # concat 拼接任意长度的字符串 select concat(c,":",v,":",t) from t5; # mysql 中函数 select user() select concat() select concat(参数1,参数2,参数3 , ... ) 把所有的参数拼接在一起
concat拼接后的结果如下图所示
part10:枚举和集合
enum 枚举 : 从列出来的数据当中选一个,比如性别
set 集合 : 从列出来的数据当中选多个(自动去重),比如爱好
create table t6( id int, name varchar(10), money float(6,3), sex enum("男性","女性","禽兽","人妖","雌雄同体","半兽人","阿凡达"), hobby set("吃肉","抽烟","喝酒","喝假酒") ); # 正常 insert into t6(id , name ,money , sex , hobby) values(1,"克拉伊买买提",56.7891,"半兽人","喝假酒,抽烟"); # 自动去重 insert into t6(id , name ,money , sex , hobby) values(1,"克拉伊买买提",56.7891,"半兽人","喝假酒,抽烟,抽烟,抽烟,抽烟");
存储结果如下图所示