(二)MySQL基本操作

1、mysql登录:

参数 备注
-D, --database=name 打开指定数据库
--delimiter = name 指定分隔符
-h, --host = name 服务器名称
-p, --password[=name] 密码
-P --port=# 端口
--prompt=name 设置提示符
-u, --user=name 用户名
-V, --version 输出版本信息并且退出

example:

mysql -u root -h 192.168.0.109 -P 3306 -p

2、修改提示符:

登录后,默认提示符为 mysql>

修改提示符:

mysql> prompt \u@\h \d>
PROMPT set to '\u@\h \d>'
root@192.168.0.109 (none)>
  • \D:完整的日期
  • \d:当前数据库
  • \h:当前主体host
  • \u:当前用户

3、常用命令和语法规范

-- 显示当前服务器版本
SELECT VERSION();
-- 显示当前日期时间
SELECT NOW();
-- 当前用户
SELECT USER();
-- 查看数据库
SHOW DATABASES;
-- 查看警告信息
root@192.168.0.109 (none)>SHOW WARNINGS;
+-------+------+----------------------------------------------+
| Level | Code | Message                                      |
+-------+------+----------------------------------------------+
| Error | 1007 | Can't create database 'sys'; database exists |
+-------+------+----------------------------------------------+

4、数据库操作:

  • 数据库创建
-- 语法
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name;
-- 示例
CREATE DATABASE IF NOT EXISTS example_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
  • 数据库删除
-- 语法
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;
-- 示例
DROP DATABASE IF EXISTS t1;
  • 修改数据库编码
ALTER DATABASE t1 CHARACTER SET gbk;
  • 查看建库语句
-- 查看建库语句
root@192.168.0.109 (none)>SHOW CREATE DATABASE t1;
+----------+-------------------------------------------------------------+
| Database | Create Database                                             |
+----------+-------------------------------------------------------------+
| t1       | CREATE DATABASE `t1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------+

表:

  • 建表:
-- 语法
CREATE TABLE [IF NOT EXISTS] table_name (
	column_name data_type[size] [DEFAULT] COMMENT '备注',
    ...
) COMMENT = '表注释' ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 示例
CREATE TABLE `example`.`Untitled`  (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(20) NOT NULL COMMENT '名称',
  `age` TINYINT(4) UNSIGNED NOT NULL DEFAULT 18 COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE = InnoDB COMMENT = '学生信息';
  • 查看数据表列表:
SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr];
  • 查看表结构:
SHOW COLUMNS FROM student;
DESC table_name;
root@192.168.0.109 example_db>SHOW COLUMNS FROM student;
+-------+---------------------+------+-----+---------+----------------+
| Field | Type                | Null | Key | Default | Extra          |
+-------+---------------------+------+-----+---------+----------------+
| id    | INT(11)             | NO   | PRI | NULL    | auto_increment |
| name  | VARCHAR(200)        | YES  |     | NULL    |                |
| age   | tinyINT(3) unsigned | YES  |     | NULL    |                |
+-------+---------------------+------+-----+---------+----------------+
root@192.168.0.109 example_db>DESC dept;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| deptno | int(11)     | NO   | PRI | NULL    | auto_increment |
| dname  | varchar(50) | YES  |     | NULL    |                |
| loc    | varchar(20) | YES  |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+
  • 查看建表语句
root@192.168.0.109 example_db>SHOW CREATE TABLE emp;
| Table | Create Table|
| emp   | CREATE TABLE `emp` (
  `empno` int(11) NOT NULL AUTO_INCREMENT,
  `ename` varchar(20) DEFAULT NULL COMMENT '员工姓名',
  `job` varchar(20) DEFAULT NULL COMMENT '岗位',
  `mgr` int(11) DEFAULT NULL COMMENT '直接领??编号',
  `hiredate` date DEFAULT NULL COMMENT '雇佣日期,入职日?',
  `sal` int(11) DEFAULT NULL COMMENT '????',
  `comm` int(11) DEFAULT NULL COMMENT '提成',
  `deptno` int(11) NOT NULL COMMENT '部门编号',
  PRIMARY KEY (`empno`),
  KEY `deptno` (`deptno`),
  CONSTRAINT `emp_ibfk_1` FOREIGN KEY (`deptno`) REFERENCES `dept` (`deptno`)
) ENGINE=InnoDB AUTO_INCREMENT=7935 DEFAULT CHARSET=utf8mb4 |
  • 修改表
-- 修改表名称
ALTER TABLE emp RENAME new_name;
-- 修改字段类型
ALTER TABLE emp MODIFY ename VARCHAR(30);
-- 修改字段名称
ALTER TABLE emp CHANGE empno id BIGINT(20);
-- 增加字段:ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2];
ALTER TABLE emp ADD emp_desc VARCHAR(20) NOT NULL AFTER id;
-- 删除字段
ALTER TABLE emp DROP emp_desc;
-- 更改表的存储引擎:ALTER TABLE 表名 ENGINE = 存储引擎名;
ALTER TABLE emp ENGINE = MYISAM;
  • 删除表
DROP TABLE emp;
  • 格式化表
TRUNCATE TABLE emp;

5、数据增删改

  • 插入:
INSERT [INTO] tbl_name [(col_name,...)] VALUES(val,...);
-- 批量插入
INSERT [INTO] tbl_name [(col_name,...)] VALUES(val,...), VALUES(val,...), VALUES(val,...);
  • 删除:
DELETE FROM tbl_name [WHERE expr];
  • 更新:
UPDATE tbl_name SET column = value,... [WHERE expr];
-- 批量更新
UPDATE tbl_name 
    SET filed = CASE id 
        WHEN 1 THEN 'value'
        WHEN 2 THEN 'value'
        WHEN 3 THEN 'value'
    END
WHERE id IN (1,2,3);
-- 批量更新
UPDATE categories 
    SET display_order = CASE id 
        WHEN 1 THEN 3 
        WHEN 2 THEN 4 
        WHEN 3 THEN 5 
    END, 
    title = CASE id 
        WHEN 1 THEN 'New Title 1'
        WHEN 2 THEN 'New Title 2'
        WHEN 3 THEN 'New Title 3'
    END
WHERE id IN (1,2,3)

6、约束:

约束条件 说明
PRIMARY KEY 标识该属性为该表的主键,可以唯一的标识对应的元组
FOREIGN KEY 标识该属性为该表的外键,是与之联系某表的主键
NOT NULL 标识该属性不能为空
UNIQUE 标识该属性的值是唯一的
AUTO_INCREMENT 标识该属性的值是自动增加,这是MySQL的SQL语句的特色
DEFAULT 为该属性设置默认值

7、存储引擎

SHOW ENGINES;
  • Support:MySQL是否支持该引擎
  • Comment:评价说明
  • Transaction:是否支持事务
  • XA:分布式事务二阶段提交(强一致性)
  • Savepoints:参数表示是否支持保存点,以方便事务的回滚操作
Engine Support Comment Transactions XA Savepoints
InnoDB DEFAULT Supports transactions, row-level locking, and foreign keys YES YES YES
MRG_MYISAM YES Collection of identical MyISAM tables NO NO NO
MEMORY YES Hash based, stored in memory, useful for temporary tables NO NO NO
BLACKHOLE YES /dev/null storage engine (anything you write to it disappears) NO NO NO
MyISAM YES MyISAM storage engine NO NO NO
CSV YES CSV storage engine NO NO NO
ARCHIVE YES Archive storage engine NO NO NO
PERFORMANCE_SCHEMA YES Performance Schema NO NO NO
FEDERATED NO Federated MySQL storage engine NULL NULL NULL
posted @ 2019-03-17 18:06  zuier~  阅读(258)  评论(0编辑  收藏  举报