[关闭]
@nemos 2017-05-06T02:46:48.000000Z 字数 4087 阅读 830

mysql

web


有次想把关键字都 改成小写然后改到一半忘记了。
关键字大小写混乱就先不要管了。

管理

数据

导出数据

  1. $ mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

服务

  1. $ /etc/init.d/mysql restart
  2. $ /etc/init.d/mysql start|stop|restart|reload|force-reload

admin

  1. $ mysql #直接进入MySQL环境,出现 mysql> 提示符
  2. $ mysqladmin -u root password 'ps'; #创建root密码
  3. $ mysql -u root -p #使用root登陆

Mysql参数

  1. =号表示后面跟一个参数可以用空格分离,但不需要打出来
  2. -D --database=name #打开指定的数据库
  3. --delimiter=name #指定分隔符
  4. -h --host=name #服务器名称
  5. -p --password[=name] #密码
  6. -P --port=# #端口号
  7. --prompt=name #设置提示符
  8. -u --user=name #用户名
  9. -v --version #输出版本信息并退出

修改提示符

说明 提示符(可组合使用)
shell环境下 --prompt \h
mysql环境下 prompt \h
完整日期 \D
当前数据库 \d
服务器名称 \h
当前用户 \u

命令

查询

  1. select exp [, exp...]
  2. [
  3. from tb_ref
  4. [where]
  5. [group by]
  6. [having]
  7. [order by]
  8. [limit]
  9. ]
  10. select name from person; #从person表中选择name字段
  11. select name, age from person; #从person表中选择name和age字段,顺序将影响结果集
  12. select name as nm from person #字段取别名,只影响结果集
  13. select * from person order by age DESC; #将查询结果降序排列
  14. select * from person limit 2; #限制查询集数量

分组

  1. select sex from person group by sex; #按字段进行分组,分组的条件字段必须出现在选择中
  2. select sex, age from person group by sex having age>1; #指定条件分组
  3. select sex from person group by sex having count(id)>=2 #使用聚合函数指定条件

子查询

嵌套在查询语句中的查询语句

  1. select name from person where = (select MAX(age) from person); #找到一个年龄最大的人
  2. insert persons(name) select owner from pets; #插入查询结果
  3. create table o_person (name) select owner from pets; #创建查询结果

连接

  1. # 表连接,如果字段名重名可以用as处理
  2. tb_ref {[INNER | CROSS] JOIN | {LEFT|RIGHT} [OUTER] JOIN} tb_ref ON condi_exp;
  3. persons INNER JOIN pets on name = onwer;
  4. # 将两张表连接更新记录
  5. UPDATA persons INNER JOIN pets on name = onwer SET pet = type_id;

记录操作

  1. # 插入数据
  2. insert [INTO] tb [(col1, col2,...)] VALUES(val1, val2...), (val1, val2);
  3. # 更新数据
  4. UPDATE [LOW_PRIORITY] [IGNORE] tb_ref SET col={exp|DEFAULT} [,...] [where condition];
  5. # 删除记录
  6. DELETE from tb [where condition]

列操作

  1. # 添加单列
  2. ALTER TABLE tb ADD [COLUMN] col col_def [FIRST | AFTER col];
  3. # 添加多列
  4. ALTER TABLE tb ADD [COLUMN] (col col_def, ...);
  5. # 删除列
  6. ALTER TABLE tb DROP [COLUMN] col;
  7. # 修改列名称和定义
  8. ALTER TABLE tb CHANGE [COLUMN] old_col new_col col_def [FIRST | AFTER col];
  9. # 修改列定义
  10. ALTER TABLE tb MODIFY [COLUMN] col col_def [FIRST | AFTER col];
  11. # 对col字段建立名为index的索引
  12. ALTER TABLE tb ADD INDEX index (col);
  13. ALTER TABLE `table_name` ADD KEY ( `column` )

修改约束

  1. # 添加主键约束
  2. ALTER TABLE tb ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col);
  3. # 删除主键约束
  4. ALTER TABLE tb DROP PRIMARY KEY;
  5. # 添加唯一约束
  6. ALTER TABLE tb ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index] [index_type] (index_col, ...);
  7. # 删除唯一约束
  8. ALTER TABLE tb DROP {INDEX|KEY} index;
  9. # 添加外键约束
  10. ALTER TABLE tb ADD [CONSTRAINT [symbol]] FOREIGN KEY [index] [index_type] (index_col, ...) ref_def;
  11. # 删除外键约束
  12. ALTER TABLE tb DROP FOREIGN KEY fk_symbol;
  13. # 添加删除默认约束
  14. ALTER TABLE tb [COLUMN] col {SET DEFAULT literal | DROP DEFAULT};

全局

  1. select VERSION(); #当前服务器版本
  2. select NOW(); #显示当前时间
  3. select USER(); #显示当前用户
  4. exit;quit; #退出数据库

数据库操作

  1. # 创建数据库
  2. create {DATABASE | SCHEMA} [IF NOT EXISTS] db [DEFAULT] CHARACTER SET [=] charset;
  3. # 修改数据库
  4. ALTER {DATABASE | SCHEMA} [db] [DEFAULT] CHARACTER SET [=] charset;
  5. # 显示数据库
  6. SHOW {DATABASES | SCHEMAS} [LIKE 'pattern' | where expr];
  7. # 显示创建数据库信息
  8. SHOW create DATABASE db;
  9. # 删除数据库
  10. DROP {DATABASE\|SCHEMA} [IF EXISTS] db;
  11. # 进入数据库
  12. USE db;
  13. # 显示进入的数据库
  14. select DATABASE();

表操作

  1. # 创建数据表
  2. create TABLE [IF NOT EXITS] tb(col_name data_type,...);
  3. # 显示表的创建语句
  4. SHOW create TABLE tb;
  5. # 修改数据表名称
  6. ALTER TABLE tb RENAME [TO|AS] new_tb;
  7. RENAME TABLE tb TO new_tb [, tb2 TO new_tb2];
  8. # 查看数据表列表
  9. SHOW TABLES [from db] [LIKE 'pattern' | where expr];
  10. # 显示数据表的结构
  11. 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

solution

不能导入外部数据问题

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
show variables like '%secure%';
cd xxx

参考

慕课的视频


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注