mysqlmysql 查看数据库版本中查看当前使用的mysql 查看数据库版本是哪个数

MySQL查看与修改当前数据库编码的方法
转载 & & 投稿:mdxy-dxy
这篇文章主要介绍了MySQL查看与修改当前数据库编码的方法,需要的朋友可以参考下
MySQL中,数据库的编码是一个相当重要的问题,有时候我们需要查看一下当前数据库的编码,甚至需要修改一下数据库编码。
查看当前数据库编码的SQL语句为:
mysql& use xxx
Database changed
mysql& show variables like 'character_set_database';
+------------------------+--------+
| Variable_name&&&&&&&&& | Value& |
+------------------------+--------+
| character_set_database | latin1 |
+------------------------+--------+
1 row in set (0.00 sec)
上面,我们先切换到xxx数据库下面来,然后使用SQL语句:show variables like 'character_set_database'; 来查看了xxx数据库的编码。查询得到的结果是latin1编码。
下面,我们来修改xxx数据库的编码,把它修改为gb2312。
mysql& alter database xxx CHARACTER SET gb2312;
Query OK, 1 row affected (0.00 sec)
mysql& show variables like 'character_set_database';
+------------------------+--------+
| Variable_name&&&&&&&&& | Value& |
+------------------------+--------+
| character_set_database | gb2312 |
+------------------------+--------+
1 row in set (0.00 sec)
这里同样做了两件事情:
1、使用SQL语句:alter database xxx CHARACTER SET gb2312; 把xxx数据库的编码设置为了gb2312.
2、再次使用show variables like 'character_set_database'; 来确认一下当前xxx是什么编码。经过确认,数据库编码已经修改为gb2312了。
3、当然很多情况下都是修改为utf-8编码
关于MySQL查看并修改当前数据库编码,本文就介绍这么多,希望对大家有所帮助,谢谢!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具一、一探究竟
我想看看有多少个数据库,有多少个表,以及表里有啥东西。那么你可以这样:
图形界面:
查看多少个数据库:注意 后面带s
SHOW DATABASES;
SHOW TABLES;
#查看表中的列
SHOW COLUMNS FROM auth_
DESCRIBE auth_
describe 表名 是 show columns from 表名 的一种快捷方式。
二、修改mysql数据库密码
使用phpmyadmin,直接修改Mysql库的user 表。或者使用Navicat for Mysql 直接修改连接属性。
方法二:使用mysqladmin
#cmd,运行DOS,cd到mysql的bin文件夹,然后执行如下
D:\Mysql\bin&mysqladmin -u root -p password newPwd
#Enter password:(在此输入原密码)
#newPwd指的是新密码然后打开mysql 直接输入新密码即可
格式:mysqladmin -u用户名 -p旧密码 password 新密码。
更多详见:http://wenku.baidu.com/view/43db0b62ddccda38376bafff.html
三、创建数据库、表
SHOW语句找出服务器上当前存在什么数据库:
mysql是必需的,因为它描述用户访问权限,test数据库经常作为用户试身手的工作区。
访问数据库,使用use语句
注意USE,类似QUIT,不需要一个分号。(如果你喜欢,你可以用一个分号终止这样的语句;这无碍)。
创建数据库
mysql& CREATE DATABASE 库名;
mysql& USE 库名;
mysql& CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
create table pet(
name varchar(20),
owner varchar(20),
species varchar(20),
sex char(1),
birth date,
death date
为了验证你的表是按你期望的方式创建,使用一个DESCRIBE语句:
删除数据库:
mysql& DROP DATABASE 库名;
删除数据表:
mysql& DROP TABLE 表名;
将表中记录清空:
mysql& DELETE FROM 表名;
创建表(复杂形式):
#创建customer表:
create table customers(
id int not null auto_increment,
name char(20) not null,
address char(50) null,
city char(50) null,
age int not null,
love char(50) not null default 'No habbit',
primary key(id)
)engine=InnoDB;
#SELECT last_insert_id();这个函数可以获得返回最后一个auto_increment值.
#默认值:default 'No habbit',
#引擎类型,多为engine = InnoDB,如果省略了engine=语句,则使用默认的引擎(MyISAM)
&更改表结构:
alter table pet add des char(100) null;
alter table pet drop column
重命名表:
rename table pet to
&添加id字段
则可操作如下:
#添加id字段
alter table pet add id int not null
primary key auto_
增加外键:
实例参考:tech.ddvip.com/.html
假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息。用来保存整机产品信息的表叫做 Pc;用来保存配件供货信息的表叫做Parts。在Pc表中有一个字段,用来描述这款电脑所使用的CPU型号;在Parts 表中相应有一个字段,描述的正是CPU的型号,我们可以把它想成是全部CPU的型号列表。很显然,这个厂家生产的电脑,其使用的CPU一定是供货信息表(parts)中存在的型号。这时,两个表中就存在一种约束关系(constraint)&&Pc表中的CPU型号受到Parts 表中型号的约束。
CREATE TABLE parts (
... 字段定义 ...,
model VARCHAR(20) NOT NULL,
... 字段定义 ...
CREATE TABLE pc (
... 字段定义 ...,
cpumodel VARCHAR(20) NOT NULL,
... 字段定义 ...
既然存在在约束关系(constraint),那么就需要设置索引。
设置索引:
若要设置外键,在参照表(referencing table,即Pc表) 和被参照表 (referenced table,即parts表) 中,相对应的两个字段必须都设置索引(index)。
对Parts表:
ALTER TABLE parts ADD INDEX idx_model (model);
这句话的意思是,为 parts 表增加一个索引,索引建立在 model 字段上,给这个索引起个名字叫idx_model。
对Pc表也类似:
ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);
事实上这两个索引可以在创建表的时候就设置。这里只是为了突出其必要性。
定义外键:
下面为两张表之间建立前面所述的那种&约束&。因为pc的CPU型号必须参照parts表中的相应型号,所以我们将Pc表的cpumodel字段设置为&外键&(FOREIGN KEY),即这个键的参照值来自于其他表。
ALTER TABLE pc ADD CONSTRAINT fk_cpu_model
FOREIGN KEY (cpumodel)
REFERENCES parts(model);
第一行是说要为Pc表设置外键,给这个外键起一个名字叫做fk_cpu_model;
第二行是说将本表的cpumodel字段设置为外键;
第三行是说这个外键受到的约束来自于Parts表的model字段。
级联操作:
技术人员发现,一个月之前输入到 parts 表中的某个系列的 cpu (可能有很多款)的型号全都输错了一个字母,现在需要改正。我们希望的是,当 parts 表中那些 Referenced Column 有所变化时,相应表中的 Referencing Column 也能自动更正。
可以在定义外键的时候,在最后加入这样的关键字:
ON UPDATE CASCADE;
即在主表更新时,子表(们)产生连锁更新动作,似乎有些人喜欢把这个叫&级联&操作。
如果把这语句完整的写出来,就是:
ALTER TABLE pc ADD CONSTRAINT fk_cpu_model
FOREIGN KEY (cpumodel)
REFERENCES parts(model)
ON UPDATE CASCADE;
除了 cascade 外,还有 restrict(中文意思:限制;约束;限定 ),这里指(禁止主表变更)、SET NULL(子表相应字段设置为空)等操作。
那么我们在图形界面可以查看该表的结构:
四、&ALTER DATABASE语法
ALTER {DATABASE | SCHEMA} [db_name]
alter_specification [, alter_specification] ...
alter_specification:
[DEFAULT] CHARACTER SET charset_name
| [DEFAULT] COLLATE collation_name
ALTER DATABASE用于更改数据库的全局特性。这些特性储存在数据库目录中的db.opt文件中。要使用ALTER DATABASE,您需要获得数据库ALTER权限。
CHARACTER SET子句用于更改默认的数据库字符集。COLLATE子句用于更改默认的数据库整序。数据库名称可以忽略,此时,语句对应于默认数据库。也可以使用ALTER SCHEMA。
五、ALTER TABLE语法
参考《Mysql 5.1手册 》13.1.2.&ALTER TABLE语法
ALTER TABLE用于更改原有表的结构。例如,您可以增加或删减列,创建或取消索引,更改原有列的类型,或重新命名列或表。您还可以更改表的评注和表的类型。
您可以使用FIRST或AFTER col_name在一个表行中的某个特定位置添加列。默认把列添加到最后。您也可以在CHANGE或MODIFY语句中使用FIRST和AFTER。
阅读(...) 评论()转自微信公众号&MySQL数据库&:http://mp.weixin.qq.com/s?__biz=MzIyNjIwMzg4Ng==&mid=&idx=1&sn=e5105fdbe5da12af150276&scene=0#wechat_redirect
【全了】Mysql数据库操作常用命令
1、MySQL常用命令&
创建数据库& 选择数据库&drop database name 直接删除数据库,不提醒& 显示表& 表的详细描述&select *&Mysql命令查询一个表的记录总数(三种方法)select count(*)或者select count(*) a或者select count(*) as select 中加上distinct去除重复字段&mysqladmin drop databasename 删除数据库前,有提示。&显示当前mysql版本和当前日期&select version(),current_&
2、修改mysql中root的密码:&shell&mysql -u root -p&mysql& update user set password=password(&xueok654123&P) where user=&root&;&
mysql& flush privileges //刷新数据库&
mysql&use dbname; 打开数据库:&mysql& 显示所有数据库&mysql& 显示数据库mysql中所有的表:先use mysql;然后&mysql& 显示表mysql数据库中user表的列信息);&3、grant&创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个&mysql& grant all privileges on *.* to user@localhost identified by &something& with&增加新用户&格式:grant select on 数据库.* to 用户名@登录主机 identified by &密码&&GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY &something& WITH GRANT OPTION;&GRANT ALL PRIVILEGES ON *.* TO monty@&%& IDENTIFIED BY &something& WITH GRANT OPTION;&删除授权:&mysql& revoke all privileges on *.* from root@&%&;&mysql& delete from user where user=&root& and host=&%&;&mysql&&创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb&mysql &grant select, insert, update, delete, create,drop on fangchandb.* to custom@ it363.com identified by & passwd&&
重命名表:&mysql & alter table t1 rename t2;&
4、mysqldump&备份数据库&shell& mysqldump -h host -u root -p dbname &dbname_backup.sql&恢复数据库&shell& mysqladmin -h myhost -u root -p create dbname&shell& mysqldump -h host -u root -p dbname & dbname_backup.sql&如果只想卸出建表指令,则命令如下:&shell& mysqladmin -u root -p -d databasename & a.sql&如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下:&shell& mysqladmin -u root -p -t databasename & a.sql&
那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?&   mysqldump -T./ phptest driver&其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与mysqldump同一目录。如果不指定driver 表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。&5、可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳程序键入重定向实用程序来完成这项工作。例如,如果在文件my_file.sql 中存放有查&询,可如下执行这些查询:&
例如,如果您想将建表语句提前写在sql.txt中:&mysql & mysql -h myhost -u root -p database & sql.txt&一 . 安装与配置MYSQL&  二 . 常用mysql命令行命令&  1 .mysql的启动与停止&  启动MYSQL服务 net start mysql&  停止MYSQL服务 net stop mysql&  2 . netstat &na | findstr 3306 查看被监听的端口 , findstr用于查找后面的端口是否存在&  3 . 在命令行中登陆MYSQL控制台 , 即使用 MYSQL COMMEND LINE TOOL&   语法格式 mysql &user=root &password=123456 db_name&   或 mysql &u root &p123456 db_name&  4 . 进入MYSQL命令行工具后 , 使用 或\s 查看运行环境信息&  5 . 切换连接数据库的语法 : use new_&  6 . 显示所有数据库 :&  7 . 显示数据库中的所有表 :&  8 . 显示某个表创建时的全部信息 : show create table table_&  &  9 . 查看表的具体属性信息及表中各字段的描述&   Describe table_ 缩写形式 : desc table_&
  三 。 MySql中的SQL语句&  1 . 数据库创建 : Create database db_&  数据库删除 : Drop database db_ 删除时可先判断是否存在,写成 : drop database if exits db_name&  2 . 建表 : 创建数据表的语法 : create table table_name (字段1 数据类型 , 字段2 数据类型);&   例 : create table mytable (id int , username char(20));&   删表 : drop table table_ 例 :&&  3 . 添加数据 : Insert into 表名 [(字段1 , 字段2 , &.)] values (值1 , 值2 , &..);&  如果向表中的每个字段都插入一个值,那么前面 [ ] 括号内字段名可写也可不写&
例 : insert into mytable (id,username) values (1,&zhangsan&);&  &  4 . 查询 : 查询所有数据 : select * from table_&  查询指定字段的数据 : select 字段1 , 字段2 from table_&  例 : select id,username from mytable where id=1多表查询语句------------参照第17条实例&  &  5 . 更新指定数据 , 更新某一个字段的数据(注意,不是更新字段的名字)&  Update table_name set 字段名=&新值& [, 字段2 =&新值& , &..][where id=id_num] [order by 字段 顺序]&  例 : update mytable set username=&lisi& where id=1;&  Order语句是查询的顺序 , 如 : order by id desc(或asc) , 顺序有两种 : desc倒序(100&1,即从最新数据往后查询),asc(从1-100),Where和order语句也可用于查询select 与删除delete&  6. 删除表中的信息 :&   删除整个表中的信息 : delete from table_&   删除表中指定条件的语句 : delete from table_name where 条件语句 ; 条件语句如 : id=3;&  7. 创建数据库用户&  一次可以创建多个数据库用户如:&  CREATE USER username1 identified BY &password& , username2 IDENTIFIED BY &password&&.&  8 . 用户的权限控制:grant&   库,表级的权限控制 : 将某个库中的某个表的控制权赋予某个用户&   Grant all ON db_name.table_name TO user_name [ indentified by &password& ];&  9 . 表结构的修改&  (1)增加一个字段格式:&  alter table table_name add column (字段名 字段类型); ----此方法带括号&  (2)指定字段插入的位置:&  alter table table_name add column 字段名 字段类型 after 某字段;&  删除一个字段:&  alter table table_name drop字段名;&  (3)修改字段名称/类型&  alter table table_name change 旧字段名 新字段名 新字段的类型;&
& & &(4)改表的名字&  alter table table_name rename to new_table_&  (5)一次性清空表中的所有数据&  truncate table table_ 此方法也会使表中的取号器(ID)从1开始&  &  10 . 增加主键,外键,约束,索引。。。。(使用方法见17实例)&  ① 约束(主键Primary key、唯一性Unique、非空Not Null)&  ② 自动增张 auto_increment&  ③外键Foreign key-----与reference table_name(col_name列名)配合使用,建表时单独使用&  ④ 删除多个表中有关联的数据----设置foreign key 为set null ---具体设置参考帮助文档&  11. 查看数据库当前引擎&   SHOW CREATE TABLE table_&   修改数据库引擎&   ALTER TABLE table_name ENGINE=MyISAM | InnoDB;&&  12 . SQL语句运用实例:&  --1 建users表&  create table users (id int primary key auto_increment,nikename varchar(20) not null unique,password varchar(100) not null,address varchar(200), reg_date timestamp not null default CURRENT_TIMESTAMP);&&  --2 建articles表,在建表时设置外键&  create table articles (id int primary key auto_increment,content longtext not null,userid int,constraint foreign key (userid) references users(id) on delete set null);&  -----------------------------------------------------------------------&  --2.1 建articles表,建表时不设置外键&   create table articles (id int primary key auto_increment,content longtext not null,userid int);&  --2.2 给articles表设置外键&   alter table articles add constraint foreign key (userid) references users(id)&  ------------------------------------------------------------------------&  --3. 向users表中插入数据,同时插入多条&  insert into users (id,nikename,password,address) values (1,'lyh1','1234',null),(10,'lyh22','4321','湖北武汉'),(null,'lyh333','5678', '北京海淀');&
& & & &--4. 向article中插入三条数据&  insert into articles (id,content,userid) values (2,'hahahahahaha',11),(null,'xixixixixix',10),(13,'aiaiaiaiaiaiaiaiaiaiaiaia',1),(14,'hohoahaoaoooooooooo',10);&  --5. 进行多表查询,选择users表中ID=10的用户发布的所有留言及该用户的所有信息&  select articles.id,articles.content,users.* from users,articles where users.id=10 and articles.userid=users.id order by articles.&  --6. 查看数据库引擎类型&  sho& &  --7. 修改数据库引擎类型&  alter table users engine=MyISAM; ---因为users表中ID被设置成外键,执行此句会出错&  --8. 同表查询,已知一个条件的情况下.查询ID号大于用户lyh1的ID号的所有用户&  select a.id,a.nikename,a.address from users a,users b where b.nikename='lyh1' and a.id&b.&  ------也可写成&  select id,nikename,address from users where id&(select id from users where nikename='lyh1');&  9. 显示年龄比领导还大的员工:&  select a.name from users a,users b where a.managerid=b.id and a.age&b.&  查询编号为2的发帖人: 先查articles表,得到发帖人的编号,再根据编号查users得到的用户名。&  接着用关联查询.&  select * from articles,users得到笛卡儿积,再加order by articles.id以便观察&  使用select * from articles,users where articles.id=2 筛选出2号帖子与每个用户的组合记录&  再使用select * from articles,users where articles.id=2 and articles.userid=users.id选出users.id等于2号帖的发帖人id的记录.&
只取用户名:select user where user.id=(select userid from articles where article.id =2)&  找出年龄比小王还大的人:假设小王是28岁,先想找出年龄大于28的人&  select * from users where age&(select age from users where name='xiaowang');&  *****要查询的记录需要参照表里面的其他记录:&  select a.name from users a,users b where b.name='xiaowang' and a.age&b.age&  表里的每个用户都想pk一下.select a.nickname,b.nickname from users a,users b where a.id&b.&  更保险的语句:select a.nickname,b.nickname from (select * from users order by id) a,(se&  lect * from users order by id) b where a.id&b.&  再查询某个人发的所有帖子.&  select b.* from articles a , articles b where a.id=2 and a.userid=b.userid&  说明: 表之间存在着关系,ER概念的解释,用access中的示例数据库演示表之间的关系.只有innodb引擎才支持foreign key,mysql的任何引擎目前都不支持check约束。&  四、字符集出现错误解决办法&  出现的问题:&  mysql& update users&  -& set username='关羽'&  -& where userid=2;&  ERROR 1366 (HY000): Incorrect string value: '\xB9\xD8\xD3\xF0' for column 'usern&  ame' at row 1&  向表中插入中文字符时,出现错误。&  &  mysql& select *&  +--------+----------+&  | userid | username |&  +--------+----------+&  | 2 | ???? |&  | 3 | ???? |&  | 4 | ?&?& |&  +--------+----------+&  3 rows in set (0.00 sec)&  表中的中文字符位乱码。&
解决办法:&  使用命令:&  mysql&&  --------------&  mysql Ver 14.12 Distrib 5.0.45, for Win32 (ia32)&  &  Connection id: 8&  Current database: test&  Current user: root@localhost&  SSL: Not in use&  Using delimiter: ;&  Server version: 5.0.45-community-nt MySQL Community Edition (GPL)&  Protocol version: 10&  Connection: localhost via TCP/IP&  Server characterset: latin1&  Db characterset: latin1&  Client characterset: gbk&  Conn. characterset: gbk&  TCP port: 3306&  Uptime: 7 hours 39 min 19 sec&  Threads: 2 Questions: 174 Slow queries: 0 Opens: 57 Flush tables: 1 Open ta&  bles: 1 Queries per second avg: 0.006&  --------------&  查看mysql发现Server characterset,Db characterset的字符集设成了latin1,所以出现中文乱码。&  &  mysql&&  +----------------+&  | Tables_in_test |&  +----------------+&  | users |&  +----------------+&  1 row in set (0.00 sec)&  &  更改表的字符集。&  mysql& alter table users character set GBK;&  Query OK, 3 rows affected (0.08 sec)&
Records: 3 Duplicates: 0 Warnings: 0&  &  查看表的结构:&  mysql&&  ERROR ): You have an error in your SQL check the manual that&  corresponds to your MySQL server version for the right syntax to use near 'users&  ' at line 1&  mysql& sho&  +-------+-----------------------------------------------------------------------&  ------------------------------------------------------------------------------+&  | Table | Create Table&  |&  +-------+-----------------------------------------------------------------------&  ------------------------------------------------------------------------------+&  | users | CREATE TABLE `users` (&  `userid` int(11) default NULL,&  `username` char(20) character set latin1 default NULL&  ) ENGINE=InnoDB DEFAULT CHARSET=gbk |&  +-------+-----------------------------------------------------------------------&  ------------------------------------------------------------------------------+&  1 row in set (0.00 sec)&  &  mysql&&  +----------+----------+------+-----+---------+-------+&  | Field | Type | Null | Key | Default | Extra |&  +----------+----------+------+-----+---------+-------+&  | userid | int(11) | YES | | NULL | |&  | username | char(20) | YES | | NULL | |&  +----------+----------+------+-----+---------+-------+&  2 rows in set (0.02 sec)&  &  这时向表中插入中文然后有错误。&  mysql& insert into users values(88,'中文');&  ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column 'usern&  ame' at row 1&  mysql& insert into users values(88,'中文');&
mysql& insert into users values(88,'中文');&  ERROR 1366 (HY000): Incorrect string value: '\xD6\xD0\xCE\xC4' for column 'usern&  ame' at row 1&  &  还要更改users表的username的字符集。&  mysql& alter table users modify username char(20)&  ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'usern&  ame' at row 1&  mysql& alter table users modify username char(20)&  ERROR 1366 (HY000): Incorrect string value: '\xC0\xEE\xCB\xC4' for column 'usern&  ame' at row 1&  &  因为表中已经有数据,所以更改username字符集的操作没有成***&  清空users表中的数据&  mysql& &  Query OK, 3 rows affected (0.01 sec)&  &  从新更改user表中username的字符集&  mysql& alter table users modify username char(20)&  Query OK, 0 rows affected (0.06 sec)&  Records: 0 Duplicates: 0 Warnings: 0&  &  这时再插入中文字符,插入成***。&  mysql& insert into users values(88,'中文');&  Query OK, 1 row affected (0.01 sec)&  &  mysql& select *&  +--------+----------+&  | userid | username |&  +--------+----------+&  | 88 | 中文 |&  +--------+----------+&  1 row in set (0.00 sec)&  mysql&&
阅读(...) 评论()

我要回帖

更多关于 mysql 查看所有数据库 的文章

 

随机推荐