显示表的相关信息
1 show table status like '表名称' \G; 2 3 mysql> show table status like 'user' \G; 4 *************************** 1. row *************************** 5 Name: user #表名 6 Engine: InnoDB #表的存储引擎 在旧版本中,该列的名字叫做 Type,而不是 Engine。 7 Version: 10 #表的.frm文件的版本号 8 Row_format: Dynamic #行的格式。对于 MyISAM 表,可选的值为 Dynamic、Fixed 或者 Compressed。 9 Rows: 0 #表中的行数。对于 MyISAM 和其他的一些存储引擎,该值是精确的,但对于 InnoDB,该值是估计值。 10 Avg_row_length: 0 #平均每行包含的字节数。 11 Data_length: 16384 #表数据的大小(以字节为单位)。 12 Max_data_length: 0 #表数据的最大容量,该值和存储引擎有关。 13 Index_length: 0 #索引的大小(以字节为单位)。 14 Data_free: 0 #对于 MyISAM 表,表示已分配但目前没有使用的空间。这部分空间包括了之前删除 的行,一级后续可以被 insert 利用到的空间。 15 Auto_increment: 1 #下一个 auto_increment 的值。 16 Create_time: 2022-09-23 10:42:13 #表的创建时间。 17 Update_time: NULL #表数据的最后修改时间。 18 Check_time: NULL #使用 check table 命令货值 myisamchk 工具最后一次检查表的时间。 19 Collation: utf8_general_ci #表默认字符集和字符列排序规则。 20 Checksum: NULL 如果启用,保存的是整个表的实时校验和。 21 Create_options: 22 Comment: 创建表指定的其他选项。 23 1 row in set (0.01 sec) 24 25 ERROR: 26 No query specified 27 28 \G 的作用是将表的内容横向变成纵向 字段非常多的情况下使用方便查看
查询库中全部数据表
1 show SHOW TABLES; #查询当前库中所有数据表
查询数据表创建的语句
1 SHOW CREATE TABLE `数据表名`; 2 3 mysql> show create table user\G; #查询user数据表创建语句 4 *************************** 1. row *************************** 5 Table: user 6 Create Table: CREATE TABLE `user` ( 7 `id` int(11) NOT NULL AUTO_INCREMENT, 8 `user` varchar(16) NOT NULL COMMENT '用户名', 9 `password` varchar(16) DEFAULT '123456' COMMENT '密码如果不填默认123456', 10 PRIMARY KEY (`id`) 11 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 12 1 row in set (0.02 sec) 13 14 ERROR: 15 No query specified 16
数据表的类型
1 INNODB 默认使用 2 MYISAM 早些年使用
常规使用操作:
MYISAM 节约空间 速度快
INNODB 安全性高 事务的处理 多表多操作
在物理存在的位置
yum安装的MySQL数据都存在 /var/lib/mysql 目录下
存储位置可在my.cnf里面修改
数据操作
插入数据
1 insert into name (id,name,age) values (NULL,'小乐',18);
id name age 是字段
查询表中数据
1 #select 格式 2 select 表达式 from 表; 3 数据库中的表达式:文本值 列 Null 函数 计算表达式 系统变量... 4 5 6 7 #查询表中全部数据 8 select * from 数据表名; 9 10 #查询表中指定字段数据 11 select usmysql> select user from `user`; 12 +--------+ 13 | user | 14 +--------+ 15 | xiaole | 16 | xiaole | 17 | xiaole | 18 | xiaole | 19 | aille | 20 | le | 21 | xiao | 22 +--------+ 23 7 rows in set (0.02 sec) 24 er from `user`; 25 26 #给查询的字段的结果起一个别名 27 mysql> select user as 用户名,password as 密码 from `user`; 使用as 给查询字段的结果起别名 28 +-----------+-----------+ 29 | 用户名 | 密码 | 30 +-----------+-----------+ 31 | xiaole | xiaole521 | 32 | xiaole | xiaole520 | 33 | xiaole | xiaole | 34 | xiaole | 123456 | 35 | aille | xiaole521 | 36 | le | xiaole520 | 37 | xiao | 123456789 | 38 +-----------+-----------+ 39 7 rows in set (0.01 sec) 40 41 #concat 将多个字符串连接成一个字符串 42 mysql> select concat('用户名:',user) as 用户名, concat('密码:',password) as 密码 from user; 43 +------------------+------------------+ 44 | 用户名 | 密码 | 45 +------------------+------------------+ 46 | 用户名:xiaole | 密码:xiaole521 | 47 | 用户名:xiaole | 密码:xiaole520 | 48 | 用户名:xiaole | 密码:xiaole | 49 | 用户名:xiaole | 密码:123456 | 50 | 用户名:aille | 密码:xiaole521 | 51 | 用户名:le | 密码:xiaole520 | 52 | 用户名:xiao | 密码:123456789 | 53 +------------------+------------------+ 54 7 rows in set (0.01 sec) 55 56 #指定条件 查询 57 mysql> select * from `user` where user='xiaole'; 58 +----+--------+-----------+ 59 | id | user | password | 60 +----+--------+-----------+ 61 | 1 | xiaole | xiaole521 | 62 | 2 | xiaole | xiaole520 | 63 | 3 | xiaole | xiaole | 64 | 4 | xiaole | 123456 | 65 +----+--------+-----------+ 66 4 rows in set (0.01 sec) 67 68 # distinct 去重 把查询到重复的结果去掉 69 mysql> select distinct user from user; 70 +--------+ 71 | user | 72 +--------+ 73 | xiaole | 74 | aille | 75 | le | 76 | xiao | 77 +--------+ 78 4 rows in set (0.01 sec) 79 80 #查询MySQL的版本 81 select version(); 82 83 mysql> select version(); 84 +------------+ 85 | version() | 86 +------------+ 87 | 5.7.37-log | 88 +------------+ 89 1 row in set (0.01 sec) 90 91 #查询自增的步长 92 select @@auto_increment_increment; 93 mysql> select @@auto_increment_increment; (变量) 94 +----------------------------+ 95 | @@auto_increment_increment | 96 +----------------------------+ 97 | 1 | 98 +----------------------------+ 99 1 row in set (0.02 sec) 100 101 102 #查询的结果加1 103 mysql> select age +1 as 年龄 from user; 给查询出来的年龄+1 104 +--------+ 105 | 年龄 | 106 +--------+ 107 | 1 | 108 | 1 | 109 | 1 | 110 | 1 | 111 | 1 | 112 | 1 | 113 | 1 | 114 | 1 | 115 +--------+ 116 8 rows in set (0.02 sec) 117 118 #模糊查询 between 查询user表age字段值30到100之间的数据 119 120 mysql> select * from user where age between 30 and 100; 121 +----+--------+-----------+-----+ 122 | id | user | password | age | 123 +----+--------+-----------+-----+ 124 | 3 | xiaole | xiaole | 30 | 125 | 4 | xiaole | 123456 | 35 | 126 | 5 | aille | xiaole521 | 60 | 127 | 6 | le | xiaole520 | 55 | 128 | 7 | xiao | 123456789 | 100 | 129 | 8 | xiaole | 123456 | 70 | 130 +----+--------+-----------+-----+ 131 6 rows in set (0.01 sec) 132 133 134
联表查询join
1 INNER JOIN 内连接查询 2 3 SELECT u.user,score FROM `user` AS u INNER JOIN `sorce` AS s WHERE u.user = s.user
WHERE 子句
条件筛选
作用:检索符合条件的值
1 select * from name where id=1;#查询name表name字段id=1的值 2 select * from name where age>16;#查询name表name字段id大于16的值 3 select * from name where name='小乐' and age=18;#查询name字段等于小乐并且age等于18的值 4 select * from name where name='小乐' or age=18;#查询name字段等于小乐或者age等于18的值 5 select * from name where not name='小乐';#查询除了name字段等于小乐的所有值 6 select * from name where name like '%乐%';#查询name字段中包含乐的值 7 select * from name where age in (18,11);#查询age字段中包含18 11 的值