1. 查看当前支持的存储引擎 进入mysql> 命令: show engines;
2、查看数据库的字符集 :show variables like 'character\_set\_%'; show databases: 查看有多个数据库 。 use game ; show tables:查看当前库有多少表
3、在 Windows 命令提示符下运行:
启动: net start MySQL
停止: net stop MySQL
卸载: sc delete MySQL
4、MySQL有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:
数字类型
- 整数: tinyint、smallint、mediumint、int、bigint
- 浮点数: float、double、real、decimal
- 日期和时间: date、time、datetime、timestamp、year
字符串类型
- 字符串: char、varchar
- 文本: tinytext、text、mediumtext、longtext
- 二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob
5、登录到MySQL
进入cmd : mysql -h 主机名 -u 用户名 -p (
-h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略;
-u : 所要登录的用户名;
-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。)
6、创建一个数据库:create database samp_db character set gbk; 创建时通过 character set gbk 将数据库字符编码指定为 gbk
提示:(可以使用 show databases; 命令查看已经创建了哪些数据库。)
7、选择所要操作的数据库:
一: 在登录数据库时指定, 命令: mysql -D 所选择的数据库名 -h 主机名 -u 用户名 -p
例如登录时选择刚刚创建的数据库: mysql -D samp_db -u root -p
二: 在登录后使用 use 语句指定, 命令: use 数据库名;
use 语句可以不加分号, 执行 use samp_db 来选择刚刚创建的数据库, 选择成功后会提示: Database changed
8、创建数据库表:create table 表名称(列声明);
create table students
(
id int unsigned not null auto_increment primary key,
name char(8) not null,
tel char(13) null default "-"
);
或
打开命令提示符, 输入: mysql -D samp_db -u root -p < createtable.sql(createtable.sql:写好的数据创建)
(提示: 1.如果连接远程主机请加上 -h 指令; 2. createtable.sql 文件若不在当前工作目录下需指定文件的完整路径。)
9、向表中插入数据 : insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);
10、查询表数据
(一)、单表查询
查询表中的数据: select 列名称 from 表名称 [查询条件];
按特定条件查询:《where》关键词用于指定查询条件, 用法形式为: select 列名称 from 表名称 where 条件;
查询年龄在21岁以上的所有人信息: select * from students where age > 21;
查询名字中带有 "王" 字的所有人信息: select * from students where name like "%王%";
查询id小于5且年龄大于20的所有人信息: select * from students where id<5 and age>20
分组查询: select 列名称 from 表名称 group by 字段; (max:最大值,min:最小值,avg:平均值,sum:计算,count:多少个)
查询各性别中年龄最大的人:select sex,max(age) from students group by sex;
查询各性别年龄大20岁的人:select sex,age from students group by sex having age > 20; (分组查询的条件关键字是having)
查询排序: select 列名称 from 表名称 order by 字段 desc; (asc:表示升序ascend。desc:表示降序descend)
查询出全部信息,按年龄倒序方式排列:select * from student order by age desc;
(二)、多表查询
1)SELECT 多表查询: SELECT 字段名 FROM 表1 AS a1,表2 AS a2 … WHERE 表1.字段 = 表2.字段 AND 其它查询条件 (可为表名取个别名,方便使用表内容)
例: select a.id,b.id from tb_a AS a,tb_b AS b 或 select a.id,b.id from tab1 a,tab2 b 都是作为取表的别名
2)简单嵌套查询 : SELECT tb1.id,name,sex,date FROM tb_demo as tb1 WHERE tb1.id in(SELECT tb2.id FROM tb_demo1 as tb2 WHERE sex=2)
3) 简单表连接查询 : SELECT id FROM tb_a a [INNER] JOIN tb_b b ON a.column1 = b.column1 注(关键字 JOIN 和 ON ),结果为满足条件的tb_a内容
inner join: 为内连,结果为满足on条件的两表数据
left join : 为左连接,结果为满足on条件的左表(tb_a)数据,在tb_b表中找不到的,输出NULL
right join: 为右连接,结果得到右表(tb_b)数据。没找到的输出NULL
11、更新表中的数据:update 表名称 set 列名称=新值 where 更新条件;
12、删除表中的数据:delete from 表名称 where 删除条件;
删除id为2的行: delete from students where id=2;
删除所有年龄小于21岁的数据: delete from students where age<20;
删除表中的所有数据: delete from students;
13、创建后表的修改:
(一)添加列: alter table 表名 add 列名 列数据类型 [after 插入位置];
在表的最后追加列 address: alter table students add address char(60);
在名为 age 的列后插入列 birthday: alter table students add birthday date after age;
(二)修改列: alter table 表名 change 列名称 列新名称 新数据类型;
将表 tel 列改名为 telphone: alter table students change tel telphone char(13) default "-";
将 name 列的数据类型改为 char(16): alter table students change name name char(16) not null;
(三)修改注释:
修改student表: alter table `student` COMMENT '学生表2.0';
修改student表中的id列: alter table `student` MODIFY COLUMN `id` int COMMENT '学号';
(四)删除列: alter table 表名 drop 列名称;
删除 birthday 列: alter table students drop birthday;
(五)重命名表: 基本形式: alter table 表名 rename 新表名;
重命名 students 表为 workmates: alter table students rename workmates;
(六)删除整张表: drop table 表名;
删除 workmates 表: drop table workmates;
(七)删除整个数据库: drop database 数据库名;
删除 samp_db 数据库: drop database samp_db;
(八)修改字段类型
ALTER TABLE 表 modify column 字段名 SMALLINT unsigned;
14(一)、修改 root 用户密码
使用 mysqladmin 方式: mysqladmin -u root -p password 新密码
使用 UPDATE直接编辑user表 方式:
- mysql -u root
- use mysql =2》
- UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
- FLUSH PRIVILEGES;
14(二)、修改为只能局域网访问
- mysql -u root
- use mysql =2》
- UPDATE user SET Host= '10.1.0.%' WHERE user = 'root' and Host = "localhost";
- FLUSH PRIVILEGES;
15、数据量添加大出错 ,在mysql当装目录下找到my.in 最后加:max_allowed_packet = 6M 就可以了
16、查看数据库信息方法:
#显示mysql中所有数据库的名称 :show databases;
#显示mysql中database_name]的相关表 :show tables [ from database_name] // 此方法还没成功
#查看存储过程状态 :show procedure status
#显示表中列名称 :show columns from table_name [ from database_name ] ; 等同于》》#查询tab表结构:desc Table
:show columns from database_name.table_name;
:show full fields from Table 查询Table表结构,权限,和备注
:show create table Table 查询Table的建表结构
#显示一个用户的权限,显示结果类似于grant 命令:
show grants for user_name;
#显示表的索引 :show index from table_name
#显示一些系统特定资源的信息,例如,正在运行的线程数量:
show status [from db_name]
#显示系统变量的名称和值 :show [ global] variables
#显示系统中正在运行的所有进程,也就是当前正在执行的查询大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码
show processlist
#显示当前使用或者指定的database中的每个表的信息信息包括表类型和表的最新更新时间:
show table status
#显示服务器所支持的不同权限 :show privileges
#显示create database 语句是否能够创建指定的数据库:
show create database database_name
#显示create database 语句是否能够创建指定的数据库:
show create table table_name
#显示安装以后可用的存储引擎和默认引擎:
show engies
#显示innoDB存储引擎的状态 :show innodb status
#显示BDB存储引擎的日志 :show logs -----这个已经被遗弃了
#显示最后一个执行的语句所产生的错误、警告和通知:
show warnings
#只显示最后一个执行语句所产生的错误:
show errors
#显示安装后的可用存储引擎和默认引擎:
show [storage] engines;
#显示当前数据库中包含X的表 :show tables like '%X%' 得到当前数据库中包含X的所有表
#显示字段名字包含当前内容的值 :show variables like 'X'
X = %字段名% 显示字段的值
X = %char% 显示使用的字符集
X = 'max_connections 显示连接数
X = 'table_cache'》》Open_tables / Opened_tables * 100% =69% 理想值 (>= 85%), Open_tables / table_cache * 100% = 100% 理想值 (<= 95%)
#查看MySQL服务器运行的各种状态值:show global status;
#显示打开的表数量 :show global status like 'X';
X = open%tables% 》》 Open_tables 表示打开表的数量,Opened_tables表示打开过的表数量,如果Opened_tables数量过大,说明配置中 table_cache(5.1.3之后这个值叫做table_open_cache)值可能太小,我们查询一下服务器table_cache值
X = Thread% 进程使用情况
============================================================
mysqlshow,该指令只参显示数据库、表、列的信息
例如:mysqlshow -uroot -pXXXX mysql #显示mysql数据库的信息
例如:mysqlshow -uroot -pXXXX mysql user #显示mysql数据库中user表的信息
例如:mysqlshow -uroot -pXXXX mysql user user #显示mysql数据库中user表中的user列的信息
==========查询mysql 个的信息 ======================
(一 方式)、
在mysql中有个数据库 INFORMATION_SCHEMA ,这个数据库中有个tables表,里面有全部表的Myisam(存储)记录
use infomation_schema
select * from tables where table_name = 'tab' 查询tab表的信息
select update_time from tab where table_name ='tab' 查询tab表的修改时间
(二 方式)、
1.查看数据库表基本信息。
select * from information_schema.TABLES where information_schema.TABLES.TABLE_SCHEMA = '数据库名' and information_schema.TABLES.TABLE_NAME = '表名';
2(1).查看mysql数据库大小
SELECT sum(DATA_LENGTH)+sum(INDEX_LENGTH) FROM information_schema.TABLES where TABLE_SCHEMA='数据库名';得到的结果是以字节为单位,除1024为K,除1048576(=1024*1024)为M。
2(2).查看mysql数据库的表大小
select concat(round(sum(data_length/1024/1024),2),'MB') as data from information_schema.TABLES where table_schema='db_database' and table_name='player_data';
3.查看表的最后mysql修改时间
select TABLE_NAME,UPDATE_TIME from information_schema.TABLES where TABLE_SCHEMA='数据库名' order by UPDATE_TIME desc limit 1;
select TABLE_NAME,UPDATE_TIME from information_schema.TABLES where TABLE_SCHEMA='数据库名' and information_schema.TABLES.TABLE_NAME = '表名';
select TABLE_NAME,UPDATE_TIME from information_schema.TABLES where TABLE_SCHEMA='gamedb' and information_schema.TABLES.TABLE_NAME = 'item_change_type';
select TABLE_NAME,UPDATE_TIME from information_schema.TABLES where TABLE_SCHEMA='gamedb' and information_schema.TABLES.TABLE_NAME = 'item_change_type';
update information_schema.TABLES set UPDATE_TIME = 0 where TABLE_NAME = 'item_change_type';
(三 方式)、
1.查看数据库中的表信息
SELECT column_name AS '列名',data_type AS '数据类型',character_maximum_length AS '字符长度',numeric_precision AS '数字长度',numeric_scale AS '小数位数',is_nullable AS '是否允许非空',CASE WHEN extra = 'auto_increment' THEN 1 ELSE 0 END AS '是否自增',
column_default AS '默认值',column_comment AS '备注' FROM Information_schema.columns WHERE table_Name='test_table';
2.查看表注释
select COLUMN_NAME,column_comment from INFORMATION_SCHEMA.Columns where table_name='表名' and table_schema='数据库名' 例:
select COLUMN_NAME,column_comment from INFORMATION_SCHEMA.Columns where table_name='resource_change_type' and table_schema='gamedb'
select COLUMN_NAME,column_comment from INFORMATION_SCHEMA.Columns where table_name='turnplate_award_type' and table_schema='gamedb';
我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的我在找你的
SELECT column_name AS '列名',data_type AS '数据类型',character_maximum_length AS '字符长度',column_comment AS '备注' FROM Information
_schema.columns WHERE table_Name='god_war_title';
十八、局域网mysql连接很慢
1、可以在配置文件里面禁止MySQL进行反向DNS解析,只需在my.cnf的[mysqld]段落中加入如下行即可:(http://blog.chinaunix.net/uid-20788470-id-3118262.html)
skip-name-resolve