@nemos
2017-05-06T02:46:48.000000Z
字数 4087
阅读 830
web
有次想把关键字都 改成小写然后改到一半忘记了。
关键字大小写混乱就先不要管了。
导出数据
$ mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
$ /etc/init.d/mysql restart
$ /etc/init.d/mysql start|stop|restart|reload|force-reload
$ mysql #直接进入MySQL环境,出现 mysql> 提示符
$ mysqladmin -u root password 'ps'; #创建root密码
$ mysql -u root -p #使用root登陆
=号表示后面跟一个参数可以用空格分离,但不需要打出来
-D --database=name #打开指定的数据库
--delimiter=name #指定分隔符
-h --host=name #服务器名称
-p --password[=name] #密码
-P --port=# #端口号
--prompt=name #设置提示符
-u --user=name #用户名
-v --version #输出版本信息并退出
说明 | 提示符(可组合使用) |
---|---|
shell环境下 | --prompt \h |
mysql环境下 | prompt \h |
完整日期 | \D |
当前数据库 | \d |
服务器名称 | \h |
当前用户 | \u |
select exp [, exp...]
[
from tb_ref
[where]
[group by]
[having]
[order by]
[limit]
]
select name from person; #从person表中选择name字段
select name, age from person; #从person表中选择name和age字段,顺序将影响结果集
select name as nm from person #字段取别名,只影响结果集
select * from person order by age DESC; #将查询结果降序排列
select * from person limit 2; #限制查询集数量
select sex from person group by sex; #按字段进行分组,分组的条件字段必须出现在选择中
select sex, age from person group by sex having age>1; #指定条件分组
select sex from person group by sex having count(id)>=2; #使用聚合函数指定条件
嵌套在查询语句中的查询语句
select name from person where = (select MAX(age) from person); #找到一个年龄最大的人
insert persons(name) select owner from pets; #插入查询结果
create table o_person (name) select owner from pets; #创建查询结果
# 表连接,如果字段名重名可以用as处理
tb_ref {[INNER | CROSS] JOIN | {LEFT|RIGHT} [OUTER] JOIN} tb_ref ON condi_exp;
persons INNER JOIN pets on name = onwer;
# 将两张表连接更新记录
UPDATA persons INNER JOIN pets on name = onwer SET pet = type_id;
# 插入数据
insert [INTO] tb [(col1, col2,...)] VALUES(val1, val2...), (val1, val2);
# 更新数据
UPDATE [LOW_PRIORITY] [IGNORE] tb_ref SET col={exp|DEFAULT} [,...] [where condition];
# 删除记录
DELETE from tb [where condition]
# 添加单列
ALTER TABLE tb ADD [COLUMN] col col_def [FIRST | AFTER col];
# 添加多列
ALTER TABLE tb ADD [COLUMN] (col col_def, ...);
# 删除列
ALTER TABLE tb DROP [COLUMN] col;
# 修改列名称和定义
ALTER TABLE tb CHANGE [COLUMN] old_col new_col col_def [FIRST | AFTER col];
# 修改列定义
ALTER TABLE tb MODIFY [COLUMN] col col_def [FIRST | AFTER col];
# 对col字段建立名为index的索引
ALTER TABLE tb ADD INDEX index (col);
ALTER TABLE `table_name` ADD KEY ( `column` )
# 添加主键约束
ALTER TABLE tb ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col);
# 删除主键约束
ALTER TABLE tb DROP PRIMARY KEY;
# 添加唯一约束
ALTER TABLE tb ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index] [index_type] (index_col, ...);
# 删除唯一约束
ALTER TABLE tb DROP {INDEX|KEY} index;
# 添加外键约束
ALTER TABLE tb ADD [CONSTRAINT [symbol]] FOREIGN KEY [index] [index_type] (index_col, ...) ref_def;
# 删除外键约束
ALTER TABLE tb DROP FOREIGN KEY fk_symbol;
# 添加删除默认约束
ALTER TABLE tb [COLUMN] col {SET DEFAULT literal | DROP DEFAULT};
select VERSION(); #当前服务器版本
select NOW(); #显示当前时间
select USER(); #显示当前用户
exit;quit; #退出数据库
# 创建数据库
create {DATABASE | SCHEMA} [IF NOT EXISTS] db [DEFAULT] CHARACTER SET [=] charset;
# 修改数据库
ALTER {DATABASE | SCHEMA} [db] [DEFAULT] CHARACTER SET [=] charset;
# 显示数据库
SHOW {DATABASES | SCHEMAS} [LIKE 'pattern' | where expr];
# 显示创建数据库信息
SHOW create DATABASE db;
# 删除数据库
DROP {DATABASE\|SCHEMA} [IF EXISTS] db;
# 进入数据库
USE db;
# 显示进入的数据库
select DATABASE();
# 创建数据表
create TABLE [IF NOT EXITS] tb(col_name data_type,...);
# 显示表的创建语句
SHOW create TABLE tb;
# 修改数据表名称
ALTER TABLE tb RENAME [TO|AS] new_tb;
RENAME TABLE tb TO new_tb [, tb2 TO new_tb2];
# 查看数据表列表
SHOW TABLES [from db] [LIKE 'pattern' | where expr];
# 显示数据表的结构
SHOW COLUMNS from tb;
定义列时使用
类型 | 说明 |
---|---|
NOT NULL |
非空约束 |
AUTO_INCREMENT |
必须和主键一起使用,从1开始,每次递增1 |
PRIMARY KEY |
主键约束,自动为NOT NULL,每个数据表只能有一个 |
UNIQUE KEY |
唯一约束,可以为NULL,一个表可以有多个 |
DEFAULT |
默认约束 |
FOREIGN KEY |
外键约束,外键列与参照列必须使用相似的数据类型,且创建索引 |
外键约束类型
类型 | 说明 |
---|---|
CASCADE |
父表删除或更新时,自动删除或更新子表中匹配的列 |
SET NULL |
父表更新或删除时,设置子表中的外键列为NULL |
RESTRICT |
拒绝对父表的删除或更新操作 |
NO ACTION |
标准SQL关键字,在MySQL中与RESTRICT相同 |
对一个数据列建立的约束为列级约束,可以在列定义前后声明
对多个数据列建立的约束为表级约束,只能在列定义后声明
整型分有无符号,可在数据类型后加UNSIGNED指定无符号类型
类型 | 大小(byte) |
---|---|
TINYINT |
1 |
SMALLINT |
2 |
MEDIUMINT |
3 |
INT |
4 |
BIGINT |
8 |
FLOAT |
4 |
DOUBLE |
8 |
DECIMAL(m,d) |
依赖m,d.将一个数像字符串那样存储,每个字符占一个字节 |
类型 | 大小 | 说明 |
---|---|---|
定长 | 固定长度的字串,在右边补齐空格,达到指定的长度。搜索值时,后缀的空格将被删除。 | |
变长 | 一个可变长度的字串,其中的后缀空格在存储值时被删除。 | |
CHAR |
0-255字节 | 定长字符串 |
VARCHAR |
0-65535 字节 | 变长字符串 |
TINYTEXT |
0.25k | 短文本字符串 |
TEXT |
64k | 长文本数据 |
MEDIUMTEXT |
16M | 中等长度文本数据 |
LONGTEXT |
4G | 极大文本数据 |
TINYBLOB |
0.25k | 不超过 255 个字符的二进制字符串 |
BLOB |
64K | 二进制形式的长文本数据 |
MEDIUMBLOB |
16M | 二进制形式的中等长度文本数据 |
LONGBLOB |
4G | 二进制形式的极大文本数据 |
类型 | 格式 |
---|---|
DATETIME |
YYYY-MM-DD HH:MM:SS |
DATE |
YYYY-MM-DD |
TIMESTAMP |
YYYYMMDDHHMMSS,YYMMDDHHMMSS,YYYYMMDD,YYMMDD |
TIME |
HH:MM:SS |
YEAR |
YYYY |
类型 | 说明 |
---|---|
BIT |
同TINYINT(1) |
BOOL |
同TINYINT(1) |
INTEGER |
同INT |
REAL |
同DOUBLE |
DEC |
同DECIMAL |
NUMERIC |
同DECIMAL |
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
show variables like '%secure%';
cd xxx