查看数据库服务器的版本
select version();
创建数据库
create database dbname character_set=utf8 collate=utf8_general_ci
删除数据库
drop database dbname;
选择使用的数据库
mysql>use dbname;
察看数据库中存在的表名
mysql>show tables;
mysql>show tables from schema_name;
创建数据库表
create table tbname (column_name column_type contraints,......)
mysql中的表,是以文件的形式存储在文件夹下的。
/var/lib/mysql/表名.frm
创建表时,可以为每个字段指定不同的字符集和collation(排序规则)
察看创建表的ddl语句
show create table tbname \G;
删除表
drop table tbname;
修改表
alter table tbname modify column_name newtype;
alter table tbname add column_name column_type;
alter table tbname drop column colname;
alter table tbname change col_name_old col_name_new;
alter table tbname add col_name col_type after col_name2;
alter table tbname add col_name col_type before col_name2;
alter table tbname modify age init(3) first;
alter table tbname rename tbname_new;
收回insert权限
grant select, insert on test.* to 'uname'@'localhost' identified by 'pwd';
revoke insert on test.* from 'uname'@'localhost';
察看系统变量
show variables like 'time_zone';
修改mysql的时区
set time_zone='+9:00';
数据类型
如果表示年月日:date
年月日时分秒 :datetime
时分秒 : time
系统时间 :timestamp
只表示年 :year
MySQL的客户端工具
1. mysql
没有进入mysql的客户端程序时,可以使用下面的方式执行sql文。
mysq < xxx.sql (初始化参数可以在c:/windows/my.ini里进行配置)
使用重定向的方式,当sql出错时会中断下面的执行。为了继续执行文件中 后面的内容。可以通过添加force选项来实现。
mysql --force < xxxx.sql
my.ini
----------------------
[client]
user=root
password=xxxxx
进入mysql的客户端后,可以执行在.sql文件的内容。如果sql中有错误的内容需要当发生错误的时候终止下面内容的执行.则启动mysql客户端的时候加上下面的参数。mysql --abort-source-on-error
mysql>source xxxx.sql;
mysql -e "show databases"; (不用登陆,直接访问)
离开mysql客户端:exit quit \q
改变数据库:use dbname | \u dbname (注意后面没有任何符号)
1. mysqladmin
mysqladmin create dbname
mysqladmin drop dbname
mysqladmin extended-status
mysqladmin password pwd
mysqladmin ping --p --host=xxx.xxx.xxx.xx
mysqladmin status --sleep=1 --count=2
mysqladmin status --debug-info
字符集的设定
http://www.nowamagic.net/librarys/veda/detail/138
常见问题:
ERROR 1366 (HY000): Incorrect string value
保证数据库字符集和建表的字符集一样,并支持输入的字符.
数据库级别指定字符集
在my.cnf文件中进行设点字符集,并且在建数据库和表时保持一致。
my.cnf中设定以下几个属性值就好了。
[client] default-character-set=utf8
[mysql] default-character-set=utf8
[mysqld] character_set_server=utf8 character_set_filesystem=utf8 |
通过设定系统变量来设定默认的字符集。
set character_set_server=utf8
set collation_server=utf8_general_bi
个别数据库指定字符集
创建数据库的时候指定字符集和collation,这样创建表的时候,如果不指定,就用创建数据库指定的字符集和collation来创建表。
show variables 和 set 命令,默认是session级别的命令。
show session variables
show global variables
set global xxx=yyy
set @@global xxx=yyy
set session xxx=yyy
set @@session xxx=yyy
1)查看默认的字符集
SHOW VARIABLES LIKE 'character%'
SHOW VARIABLES LIKE 'collation%'
2)修改字符集
2.1>在服务器级别修改字符集 (修改my.cnf文件或者通过命令行进行设点)
2.2>在数据库的级别修改字符集(创建数据库的时候指定)
set global | session character_set_server=utf8
使用set命令设定的变量,当数据库重新启动后就失效了。
SHOW VARIABLES LIKE 'character%'
SHOW VARIABLES LIKE 'collation%'
Set character_set_system=utf8 (always set this value, because mysql server default)
set character_set_server=utf8
set character_set_results=utf8
set character_set_database=utf8
set character_set_connection=utf8 当前connect传输的字符集
set character_set_client=utf8 客户端使用的字符集的设定
set character_set_results=utf8
set collation_connection=utf8_general_ci
set collation_database=utf8_general_ci
set collation_server=utf8_general_ci
SHOW VARIABLES LIKE 'character%'
SHOW VARIABLES LIKE 'collation%'
Set character_set_system=utf8 (always set this value, because mysql server default)
set character_set_server=utf8
set character_set_results=utf8
set character_set_database=utf8
set character_set_connection=utf8 当前connect传输的字符集
set character_set_client=utf8 客户端使用的字符集的设定
set character_set_results=utf8
set collation_connection=utf8_general_ci
set collation_database=utf8_general_ci
set collation_server=utf8_general_ci
如果客户端使用的是ASCII连接到数据库,但想把所有的statement转化为utf8的行式,
这样character_set_client=ASCII
character_set_connection=utf8
character_set_result:返回给客户端的字符集结果
通常情况下,character_set_client和character_set_result应该设成一致的。
SELECT collation_name, is_default FROM information_schema.collations WHERE character_set_name = 'UTF8';