连接命令一般是这样写的
mysql -h$ip -P$port -u$user -p 比如:mysql -h127.0.0.1 -P3306 -uroot -p
-h 指定连接的主机地址;-P 指定连接端口号;-u 指定用户名 -p指定用户名密码
这是操作数据库和表的定义的。
创建
--标准语法 create database 数据库名; --创建数据库,判断不存在,再创建(数据库已存在的话,就不能再创建同名的数据库) create databases if not exists 数据库名称; --创建数据库,并指定字符集 create database 数据库名 character set 字符集名称;
查询
--查看所有数据库 show databases; --查看当前使用的是哪个数据库 select database(); --查询某个数据库的字符集/创建语句 show create database 数据库名称; 例子: --加'\G'是为了数据显示的好看,不加也行的。 mysql> show create database test\G; *************************** 1. row *************************** Database: test Create Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ 1 row in set (0.00 sec)
修改
--修改数据库的字符集 alter database 数据库名称 character set 字符集名称; --没有命令修改数据库名字的
删除
--删除数据库 drop database 数据库名称; --判断数据库是否存在,存在再删除 drop database if exists 数据库名称; 例子:删除不存在的数据库 mysql> drop database aa; ERROR 1008 (HY000): Can't drop database 'aa'; database doesn't exist
使用
--使用数据库 use 数据库名称
创建
--创建表 create table 表名(列名1 数据类型1,列名2 数据类型2... 列名n 数据类型n); --复制表 create table 表名 like 被复制的表名; 例子: create table mytest(id int not null primary key,name varchar(10),age int not null);
查询
--查看该数据库的所有表 show tables; --查看表的所有字段 desc 表名; --查看创建表的语句和字符集 show create table 表名; --查看表的具体信息 show table status from 库名 like '表名'; 例子: mysql> show create table mytest\G; *************************** 1. row *************************** Table: mytest Create Table: CREATE TABLE `mytest` ( `id` int NOT NULL, `name` varchar(10) DEFAULT NULL, `age` int NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 1 row in set (0.00 sec) mysql> show table status from test like 'mytest'\G; *************************** 1. row *************************** Name: mytest Engine: InnoDB Version: 10 Row_format: Dynamic Rows: 0 Avg_row_length: 0 Data_length: 16384 Max_data_length: 0 Index_length: 0 Data_free: 0 Auto_increment: NULL Create_time: 2024-01-26 19:06:33 Update_time: NULL Check_time: NULL Collation: utf8mb4_0900_ai_ci Checksum: NULL Create_options: Comment: 1 row in set (0.00 sec)
修改:(使用atler)
--修改表名 alter table 表名 rename to 新的表名; --添加字段(列) alter table 表名 add 列名 数据类型 约束; --修改列的数据类型 alter table 表名 change 列名 新列名 新数据类型; 比如:alter table myname change name nickname varchar(100); --删除字段(列) alter table 表名 drop 字段名; --修改表的字符集 alter table 表名 character set 字符集名称;
删除
--删除表 drop table 表名; --判断表是否存在,存在就删除 (因为删除不存在的表,会报错) drop table if exists 表名 ;
这是主要针对表中的数据的。
添加数据
--标准语法 insert into 表名(列名1,列名2,...) values(值1,值2,...); --默认给全部列添加数据 insert into 表名 values(值1,值2,值3,...); --批量添加 insert into 表名 values(值1,值2,值3,...),(值1,值2,值3,...),(值1,值2,值3,...); 注意:插入数据时,字段名顺序 与 值顺序 要一一对应 例子: mysql> insert into mytest values(1,'wo',11); Query OK, 1 row affected (0.01 sec) mysql> insert into mytest(id,age) values(3,41); Query OK, 1 row affected (0.01 sec) mysql> insert into mytest(id,age) values(4,41),(5,23),(6,29); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> insert into mytest values(7,'中高',55),(9,'上',50); Query OK, 2 rows affected (0.01 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from mytest; +----+--------+-----+ | id | name | age | +----+--------+-----+ | 1 | wo | 11 | | 3 | NULL | 41 | | 4 | NULL | 41 | | 5 | NULL | 23 | | 6 | NULL | 29 | | 7 | 中高 | 55 | | 9 | 上 | 50 | +----+--------+-----+ 7 rows in set (0.01 sec)
删除数据
--删除表数据(可以带有条件) delete from 表名 [where 条件] 例子: mysql> delete from mytest where id=1; Query OK, 1 row affected (0.01 sec) mysql> delete from mytest; Query OK, 6 rows affected (0.01 sec)
修改数据
--修改数据 update 表名 set 字段1 = 值1, 字段2 = 值2,... [where 条件]; --注意: 修改语句的条件可以有,也可以没有,如果不加任何条件,则会将表中所有记录全部修改 例子: mysql> update mytest set age=15 where age=41; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> update mytest set age=15 where id=5; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> update mytest set age=15; Query OK, 1 row affected (0.00 sec) Rows matched: 3 Changed: 1 Warnings: 0
--查找整个表的所有数据 select * from 表名 --查找表的某些字段,并带有条件 select 列名1,列名2... from 表名 where 条件
管理用户,权限
--查看所有的用户 select * from mysql.user; # mysql是数据库,user是表名 --创建用户 create user '用户名'@'主机名' identified by '密码'; --修改用户密码 alter user '用户名'@'主机名' identified with mysql_native_password by '新密码'; --有些MySQL客户端并未完全支持MySQL 8.0的caching_sha2_password加密方式,而MySQL 8.0中默认是caching_sha2_password加密方式。所以要想那些登录失败的客户端可以通过登录,升级客户端或者把密码修改成是mysql_native_password加密方式。 --删除用户 drop user '用户名'@'主机名'; --权限相关的 --查询权限 show grants for '用户名'@'主机名' ; --授予权限 grant 权限列表 on 数据库名.表名 to '用户名'@'主机名'; --撤销权限 revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名'; --查看用户的加密方式 mysql> select host,user,plugin from mysql.user; +-----------+------------------+-----------------------+ | host | user | plugin | +-----------+------------------+-----------------------+ | % | root | caching_sha2_password | | localhost | itcast | mysql_native_password | | localhost | mysql.infoschema | caching_sha2_password | | localhost | mysql.session | caching_sha2_password | | localhost | mysql.sys | caching_sha2_password | | localhost | root | caching_sha2_password | +-----------+------------------+-----------------------+
注意: