mysql 的数据库存放目录默认是 /var/lib/mysql,这个目录也被定义为 mysql 的根目录,
/usr/bin/mysqld_safe 负责启动进程
/usr/libexec/mysqld 执行文件负责连接 mysql
1.关于从本地导入表
load data local infile ‘路径’ into table 表名;
报错:ERROR 1148 (42000): The used command is not allowed with this MySQL version;
1.检查一下mysql版本号:mysql> select version();
mysql5.1或者以上的都支持load data local infile操作
2.登录是加 –local-infile 可解决问题
例: mysql –local-infile -u test -p
3.在安装时加上–enable-local-infile
例:
./configure –prefix=/usr/local/mysql –enable-local-infilemakemake install
ps:在本地的*.txt表中(要导入的),\N表示NULL.
如果用Windows中的编辑器(使用\r\n做为行的结束符)创建文件,应使用:
load data local infile ‘路径’ into table 表名
lines terminated by ‘\r\n’;
2.数据类型
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
char是一种固定长度的类型,varchar则是一种可变长度的类型
char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它
的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节).
自定义变量 @varname
SET @var_name = expr [, @var_name = expr] …
(ps:用户变量(@)和系统变量(@@))
binary保存二进制字符串,它保存的是字节而不是字符,没有字符集限制
BLOB类型的字段用于存储二进制数据
十六进制值的默认类型是字符串。如果想要确保该值能作为数字处理,可以使用CAST(…AS UNSIGNED):
可以使用b’value’符号表达位域型。value是一个用0和1写成的二进制值。位域型数值可以方便指定分配给BIT列的值
ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说>明中被明确地列举
3.sql_mode
mysql数据库的中有一个环境变量sql_mode,定义了mysql应该支持的sql语法,数据校验等
查看
select @@sql_mode;
查看系统变量
show variables like ‘sql_mode%’;
mysql5.0以上版本支持三种sql_mode模式:ANSI、TRADITIONAL和STRICT_TRANS_TABLES。
ANSI模式:宽松模式,对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整
或截断保存,报warning警告。
TRADITIONAL模式:严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错
误数据不能插入,报error错误。用于事物时,会进行事物的回滚。
STRICT_TRANS_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。
4.操作符
<> 与!=都是不等于的意思,但是一般都是用<>来代码不等于因为<>在任何SQL中都起作用>但是!=在sql2000中用到,则是语法错误,不兼容的
<=> 于 = 类似 ,<=> 可严格比较两个NULL值是否相等: ‘a’ <=> NULL 得0 NULL<=> NULL 得出 1