MySQL 常用命令和基础语法
-- mysql 命令
SHOW DATABASES; #查看目前系统中存在的数据库
use database_name; #切换数据库
SHOW TABLES; #显示当前数据库下面的所有可用的表
SELECT * FROM table_name; #显示该表中的所有数据
DESC table_name; #显示该表的结构
EXIT; #退出MYSQL命令行操作
-- DDL-数据定义语句
#创建数据库
CREATE DATABASE [IF NOT EXISTS] DATABASE_name;
#修改数据库字符集
ALTER DATABASE DATABASE_name
CHARACTER SET = charset_name;
#删除数据库
DROP DATABASE DATABASE_name;
#创建表
CREATE TABLE table_name(
col_name data_type CONSTRAINT,
col_name data_type CONSTRAINT,
col_name data_type CONSTRAINT
) [ENGINE = ENGINE_name | [DEFAULT] CHARACTER SET [=] charset_name];
-- 表的常用操作
SHOW TABLES; #显示当前数据库中的表
DESC table_name; #查看表的结构
DROP TABLE table_name; #删除表
CREATE TABLE new_table_name LIKE copied_table_name; #只复制一张表的结构
CREATE TABLE new_table_name AS (SELECT * FROM copied_table_name);#复制一张表的结构及数据
ALTER TABLE table_name RENAME [AS|TO] new_table_name; #重命名表
ALTER TABLE table_name ADD [COLUMN] col_name col_definition; #为表添加一个新列
ALTER TABLE table_name CHANGE [COLUMN] old_col_name new_col_name col_definition;#修改列名及列类型
ALTER TABLE table_name MODIFY [COLUMN] col_name col_definiton; #只修改列类型
ALTER TABLE table_name DROP [COLUMN] col_name; #删除列
-- 创建主键的方法
#直接在字段定义后面声明主键
CREATE TABLE demo(
id INT PRIMARY KEY,
......
);
#用constraint声明主键
CREATE TABLE demo(
id INT,
......,
CONSTRAINT pk_demo PRIMARY KEY (id) #外键命名规范:pk_table_name
);
CREATE TABLE demo(
id INT
`name` VARCHAR(10),
......,
PRIMARY KEY (id,`name`) #复合主键
);
#用ALTER语句补充声明主键
ALTER TABLE demo ADD CONSTRAINT pk_demo PRIMARY KEY (sid);
#删除主键的方法
ALTER TABLE demo DROP PRIMARY KEY;
-- 创建外键的方法
CREATE TABLE demo(
cid INT PRIMARY KEY,
sid INT,
FOREIGN KEY (sid) REFERENCES demo (sid)
);
#通过constraint添加外键
ALTER TABLE demo ADD CONSTRAINT fk_1 FOREIGN KEY (sid) REFERENCES demo (sid)
ON DELETE CASCADE ON UPDATE CASCADE;
/*
CASCADE: 从父表中删除或更新对应的行,同时自动的删除或更新子表中匹配的行。
ON DELETE CASCADE 和 on UPDATE CASCADE 都被 InnoDB 所支持。
SET NULL: 从父表中删除或更新对应的行,同时将子表中的外键列设为空。
这些在外键列没有被设为 NOT NULL 时才有效。
ON DELETE SET NULL 和 ON UPDATE SET NULL 都被支持。
NO action:默认为restrict,拒绝删除或者更新父表
*/
#删除外键的方法
ALTER TABLE table_name DROP FOREIGN KEY fk_name;
-- 自增长 auto_increment
CREATE TABLE demo(
id INT auto_increment PRIMARY KEY,
`name` VARCHAR(10),
......ALTER);
-- 唯一约束 UNIQUE
-- 非空约束 NOT NULL
-- 检查约束
CREATE TABLE demo(
......,
sex SET('男','女'),
payment ENUM('货到付款','在线支付')
);
-- 默认值约束
CREATE TABLE demo(
tel VARCHAR(50) DEFAULT 'default'
);
/*
数据库三大范式
第一范式:确保每列保持原子性
第二范式:确保每行的唯一性
第三范式:确保每列都和主键列直接相关,而不是间接相关
*/
-- DML-数据操纵语句
#插入数据
INSERT INTO table_name [col_name] VALUES (value1,value2,...);
-- 插入多行数据的方法
#从其他表从选择相应的内容插入到新表
INSERT INTO table_name (col_name) SELECT col_name FROM source_table_name;
#利用多条insert语句批量处理
INSERT INTO table_name (col1_name,col2_name,...)
VALUES
(col1_value,col2_value,...),
(col1_value,col2_value,...),
(col1_value,col2_value,...),
(col1_value,col2_value,...);
#修改数据
UPDATE table_name SET col_name = new_value WHERE update_condition;
#删除数据
DELETE FROM table_name [WHERE delete_condition]; #按条件删除一条或多条记录
TRUNCATE TABLE table_name; #清空全表数据,并重置自动增长值,无法用于有外键约束的表
-- DQL-数据查询语句
SELECT col_name FROM table_name WHERE select_condition GROUP BY col_name ORDER BY col_name LIMIT 0,1;
/*
mysql 变量
mysql中,变量分为三类,局部变量,会话变量,全局变量。
局部变量主要用在函数以及存储过程中,
定义:declare c int default 0;
调用:select c;
记住变量名前不需要加@;
会话变量仅对当前客户端连接有效,
定义:set @var := ‘abc’;
调用:select name = @var;
记住变量前加一个@;
全局变量法力无边,什么时候都有效。
定义:set @@var := ‘abc’;
调用:select name = @@var;
记住变量前加2个@
*/
-- 分支语句
#条件结构
IF THEN
ELSEIF THEN
ELSE
END IF;
#CASE
DECLARE i INT DEFAULT 1;
CASE i
WHEN 1 THEN ...
WHEN 2 THEN ...
ELSE
END CASE;
-- 循环语句
#REPEAT
REPEAT
action
UNTIL condition_
END REPEAT;
#WHILE
WHILE condition_
DO
aciton
END WHILE;
#LOOP
a:LOOP
action
IF ? THEN ITERATE a; #ITERATE 相当于 CONTINUE
ELSE LEAVE a; #LEAVE 相当于 break
END LOOP a;
-- PROCEDURE 类型 in out inout
#语法结构
CREATE PROCEDURE proce_name(i INT)
BEGIN
END;
-- FUNCTION
#语法结构
CREATE FUNCTION func_name(i int)
RETURNS data_type
BEGIN
END;
-- 游标
#创建游标
DECLARE cursor_name CURSOR FOR select_statement;
#开启游标
OPEN cursor_name;
#读取
FETCH [from] cursor_name INTO var_name [,var_name]...
#关闭
CLOSE cursor_name;
#实例
CREATE PROCEDURE cursorTest()
BEGIN
-- 定义变量
DECLARE done INT DEFAULT FALSE;
DECLARE idd INT;
DECLARE namea VARCHAR(20);
-- 定义游标
DECLARE test_cursor CURSOR FOR SELECT id,`name` FROM test;
-- 定义条件处理器:当出现not found 的异常后执行set done=true
DECLARE CONTINUE HANDLER for NOT found SET done = true;
-- 开启游标
OPEN test_cursor;
a:WHILE true DO
-- 读取
FETCH test_cursor INTO idd,namea;
IF done THEN
LEAVE a;
ELSE
SELECT idd,namea;
END IF;
END WHILE a;
CLOSE test_cursor;
END;
-- 触发器
#基本语法结构
CREATE [DEFINER = {USER | CURRENT_USER}]
TRIGGER trigger_name
trigger_time #trigger_time:{BEFORE | AFTER}
trigger_event #trigger_event:{INSERT | UPDATE |DELETE}
ON table_name FOR EACH ROW
[BEGIN]
trigger_body
[END;]
-- 事务
SET @autocommit = OFF;
#SAVEPOINT
SAVEPOINT sp_name;
#ROLLBACK
ROLLBACK TO sp_name;
#COMMIT
COMMIT;
MySQL 常用命令和基础语法的更多相关文章
- 这些Mysql常用命令你是否还记得?
前言 记录mysql常用命令操作 基础操作 命令行登录mysql mysql -u用户名 -p用户密码 为表增加创建时间和更新时间 ALTER TABLE order_info_tbl ADD CO ...
- MYSQL常用命令集合(转载)
文章出处:http://www.cnblogs.com/q1ng/p/4474501.html 1.导出整个数据库mysqldump -u 用户名 -p --default-character-set ...
- MYSQL常用命令集合
1.导出整个数据库 mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1) mysqld ...
- Mysql常用命令 详细整理版
Mysql常用命令 show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop database na ...
- MySql常用命令集
MySql 常用命令集 Mysql常用命令 show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop ...
- MYSQL常用命令(转载)
1.导出整个数据库 mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1)mysqldu ...
- MYSQL常用命令——【转】
MYSQL常用命令 1.导出整个数据库mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin ...
- MYSQL常用命令(转)
1.导出整个数据库mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1)mysqldum ...
- MySQL 常用命令大全
Mysql常用命令行大全 第一招.mysql服务的启动和停止 net stop mysql net start mysql 第二招.登陆mysql 语法如下: mysql -u用户名 -p用户密码 键 ...
随机推荐
- JAVA》eclipse——(一)jdk的下载、安装与配置
http://www.cnblogs.com/best/p/6275334.html 注:这是一位老师的博客随笔链接,不是我的,里面有详细的说明,分享给大家,如果想看其他关于IT的知识,可以访问 ht ...
- 04-01 Django之模板层
Django之模板层 一 模板简介 在刚刚介绍完的视图层中我们提到,浏览器发送的请求信息会转发给视图函数进行处理,而视图函数在经过一系列处理后必须要有返回信息给浏览器.如果我们要返回html标签.cs ...
- Word:表格前添加新行 + 删除表格后的空行
本文适用于Word 2007 + Windows 7,造冰箱的大熊猫@cnblogs 2018/8/3 近日新学(百度到)两条新Word操作,记录下来以备查询 1.在表格前添加新行 场景:有没有遇到过 ...
- Springboot 解决跨域请求
Cors处理 跨域请求 细粒度 直接在controller层上 添加@CrossOrigin注解 @PostMapping("/") @CrossOrigin(value = &q ...
- Linux命令-文本编辑(二)
Linux命令-文本编辑(二) Linux mtype命令 mtype为mtools工具指令,模拟MS-DOS的type指令,可显示MS-DOS文件的内容. 语法: mtype [-st][文件] 参 ...
- 利用H5缓存机制实现点击按钮第一次与之后再点击分别跳转不同页面
昨天碰到这样一个需求,要求点击按钮第一次跳转到a页面,之后再点击它就跳转到b页面.这个问题我首先就想到了利用H5的缓存sessionstorage来实现,SessionStorage用于本地存储一个会 ...
- win7,win10 系统上搭建testlink1.9.18环境实操步骤
Windows7,10系统上安装TestLink1.9.18(基于xampp) 写于:2018.11.28 二次排版微调:2019.01.01 如遇本文资料缺失,可点击百度网盘查看原始资料. 链接:h ...
- Understanding the Transform Function in Pandas
Understanding the Transform Function in Pandas 来源 What is transform? 我在 Python Data Science Handbook ...
- 展示组件(Presentational component)和容器组件(Container component)之间有何不同
展示组件关心组件看起来是什么.展示专门通过 props 接受数据和回调,并且几乎不会有自身的状态,但当展示组件拥有自身的状态时,通常也只关心 UI 状态而不是数据的状态.(子组件)容器组件则更关心组件 ...
- leetcode 正则表达式匹配
类似题目:通配符匹配 动态规划解法: 1. p[j] == s[i]: dp[i][j] = dp[i-1][j-1] 2. p[j] == ".": dp[i][j] = dp[ ...