数据库操作
增add
- # 创建一个数据库
- mysql> create database 数据库名;
- # 创建数据库并加入符集
- mysql> create database xiang charset utf-8;
- # 创建表
- create table table_name (column_name column_type);
-
create table student( stu_id INT AUTO_INCREMENT, name CHAR(32) NOT NULL, age INT NOT NULL, register_date DATE, PRIMARY KEY ( stu_id ) );
注: create table 表名( stu_id列名 INT整数字类型 AUTO_INCREMENT自增(每创建一条ID就增加), name列名 CHAR(32)32字节 NOT NULL不能为空, age列名 INT征数字类型 NOT NULL不能为空, register_data DATE日期类型, PRIMARY KEY(stu_id)把stu_id列设置为唯一的主键, ); 注:PRIMARY KEY(stu_id)主键设置后默认就已经不能为空,所以stu_id不需要重复设置null。
- # 插入表内数据
- mysql> insert into student(name) values("Xiangsikai");
- 注:insert into 表名 (插入字段1,2,3) values(插入值1,2,3,)
- # 添加一个表内的字段
- mysql> alter table student add sex enum("M","F");
- 注:alter table 表名 add 字段 enum("M","F");选择内容M,F
删del
- # 删除一个数据库
- mysql> drop database xiang;
- # 删除表内的列数据
- delete from student where name="xsk";
- 注:delete删除 from 表名 where匹配动作
- # 删除一个表内的字段
- mysql> alter table student drop age;
- 注:alter table student drop 删除字段名。
- # 清空表(残留框架)
- mysql>truncate table 表名;
- # 删除表(完全删除)
- mysql>drop table 表名;
改update
- # 修改表内列字段下的指定数据
- mysql> update student set name="xsk",age=33 where id=4;
- 注:update 表名 set修改数据 字段="xsk" where指定修改条件 id=4
- # 修改表内字段下批量数据
- update student set name="xsk",age=33 where id>1 and id<6;
- 注:where后加如条件 id>大于 and与 id<小于
- # 修改字段的数据类型modify
- mysql> alter table xxx modify name CHAR(50);
- 注:alter table 表名 modify 字段名 修改的数据类型;
- # 修改字段的数据类型与字段名
- mysql> alter table xxx change name name1 CHAR(60);
- 注:alter table 表名 change 字段名 修改的字段名 修改的数据类型;
- # 修改表名
- mysql> alter table student rename to xxx;
- 注:alter table 表名 rename to 要修改的表名。
- # 临时修改数据库模块数值
- mysql>set global 模块 = 数值;
查select
- # 查询数据库
- mysql> show databases;
- # 查看用户数据库权限
- mysql> show grants for '用户名'@'地址';
- # 查看数据库字符集
- mysql> show create database 数据库名;
-
+----------+----------------------------------------------------------------+ | Database | Create Database | +----------+----------------------------------------------------------------+ | xiang | CREATE DATABASE `xiang` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+----------------------------------------------------------------+ 1 row in set (0.00 sec) 注:默认字符集是 latin1 只支持英文,utf-8支持中文。
- # 查看数据库版本
- mysql> select version();
- # 查看当前用户
- mysql> select user();
- #查看所有用户
- mysql> select user,host from mysql.user;
- # 查看mysql状态
- mysql>show status;
- # 查看mysql定义参数
- mysql>show variables\G;
- # 查看mysql模块
- mysql> show variables like '%timeout%';
- # 查看mysql工作队列
- mysql> show processlist;
- # 查看数据库表
- mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
....
| user |
+---------------------------+
28 rows in set (0.00 sec)
注:Tables_in_mysql #表名
- # 查看表的结构
- mysql> desc 表名;
- # 查看表内数据
- mysql> select * from user;
- # 查看数据库表多少列
- mysql>select count(*) from 数据库.表名;
- # 将数据竖着打印
- mysql> select * from user\G
-
*************************** 1. row *************************** Host: localhost User: root Password: *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 Select_priv: Y Insert_priv: Y Update_priv: Y .... max_updates: 0 max_connections: 0 max_user_connections: 0 plugin: mysql_native_password authentication_string: password_expired: N 7 rows in set (0.00 sec) ERROR: No query specified
- # 查询表中筛选行
- mysql> select * from student limit 2 offset 2;
-
注:limit查看行数,offset重多少行开始查询。
- # 查询列表中数据 进行模糊查询
- mysql> select * from student where register_data like "2018-04%";
- 注:where 列名 like后面跟字符 “字符”
- # 查看表各个字段属性
- mysql> show columns from user;
-
+------------------------+-----------------------------------+------+-----+-----------------------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+-----------------------------------+------+-----+-----------------------+-------+ | Host | char(60) | NO | PRI | | | | User | char(16) | NO | PRI | | | | Password | char(41) | NO | | | | | Select_priv | enum('N','Y') | NO | | N | | .... +------------------------+-----------------------------------+------+-----+-----------------------+-------+
注: Field 列名 Host #列名称 Type 类型 char(规定长度) #字符串 int(规定长度) #整数字 enum(N,Y) #只能选择yes no Null 是否可以为空 NO #不可为空 YES #可以为空 Key 主键 IPR #主键,两个字段是复合键 Default 填一个默认值 Extra 额外的参数
- #筛选查看mysql表列字段
- mysql> select 列字段 from 表名;
- mysql> select User from user;
-
+-------+ | User | +-------+ | root | | root | | | | root | | user1 | | | | root | +-------+
- # 查看表结构的创建记录
- mysql> show create table 表名;
- # 查看用户表内字段权限
- mysql> select * from user\G
- # 查询表中筛选字段数据
- mysql> select * from student where id =1 and age <23;
- 注:where id等于1 and与 age字段 <小于23 的数据。and 可以多次使用。
-
操作符描述实例=等号,检测两个值是否相等,如果相等返回true(A = B) 返回false。<>, !=不等于,检测两个值是否相等,如果不相等返回true(A != B) 返回 true。>大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true(A > B) 返回false。<小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true(A < B) 返回 true。>=大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true(A >= B) 返回false。<=小于等于号,检测左边的值是否小于于或等于右边的值, 如果左边的值小于或等于右边的值返回true(A <= B) 返回 true。 注:使用主键来作为 WHERE 子句的条件查询是非常快速的。
- # 表降序排列
- mysql> select * from student order by id desc;
- 注:by后根的是指定排序的列名
- # 表升序排列
- mysql> select * from student order by id;
- 注:by后根的是指定排序的列名
- # 统计分组统计,统计某个列名内重复数据个数,并组合成组
- mysql> select name,count(*) as xsk_num from student group by name;
-
注: select name,count(*)统计数量的列名 as 指定排序数量名称(可不填默认 count(*)) from 表名 group by 指定字段的组名。
+------------+----------+ | name | xsk_num | +------------+----------+ | Xiangsikai | 7 | | xsk | 2 | +------------+----------+
- # 统计某列同名值总和,与统计出后的和
- mysql> select coalesce(name,"age_num"),sum(age) from student group by name with rollup;
-
注: select coalesce(对应名的字段(NULL),"定义名")修改对应总和的对应值 sum(字段)统计对应同名的字段值相加 from 表名 group by with rollup 求出所有值的总和;
+--------------------------+----------+ | coalesce(name,"age_num") | sum(age) | +--------------------------+----------+ | Xiangsikai | 168 | | xsk | 44 | | age_num | 212 | +--------------------------+----------+
其他操作
- # mysql下创建授权用户
- mysql> grant all on test.* to 'xsk'@'localhost' identified by '123456';
-
注: GRANT #命令 # 赋值权限 SELECT #查 INSERT #插入 UPDATE #修改 DELETE #删除 CREATE #创建 DROP #删除 ALL #给所有权限 on # 赋值给那个数据库 *.* # 所有数据库.所有表 test.* # 指定单个数据库下所有的表 to # 权限赋值给哪个用户 'xsk' # xsk 用户 @ # 可以在哪个机器上访问 '%' # 所有机器 localhost #本地 identified # 设置用户密码 by # 后面根密码 ‘123456’; # 设置密码
- # mysql下创建无授权用户
- mysql>grant all on *.* to 用户名 identified by '密码';
- # 更改密码
- mysql> UPDATE 数据库.用户名 SET password=PASSWORD("新密码") WHETE user='username';
- # 修改当前用户密码
- mysql> SET PASSWORD = PASSWORD('mypass');
- # 刷新
- mysql> flush privileges;
- # 进入数据库
- mysql> use 数据库名;
- # 修复表
- mysql> repair table 表名;
- # 删除用户权限
- mysql> drop user 用户名@'权限';
状态查询
- # 查看当前数据库的连接情况
- mysql> show full processlist;
- mysql> show processlist;
- # 查看所有用户的总连接数
- mysql> show variables like '%max_connections%';
- # 查看每一个用户的最大连接数
- mysql> show variables like '%max_user_connections%';
- # 查看当前连接中各个用户的连接数
- mysql> select USER , count(*) from information_schema.processlist group by USER;
- # 查看当前连接中各个IP的连接数
- mysql> select SUBSTRING_INDEX(host,':',1) as ip , count(*) from information_schema.processlist group by ip;
- # 查看当前连接中连接时间最长的的连接
- mysql> select host,user,time,state,info from information_schema.processlist order by time desc limit 10;
- # 查询线上Mysql数据库的连接数配置
- mysql> show variables like '%conn%';