-- 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;

最新文章

  1. APP多版本共存,服务端如何兼容?
  2. php 冒泡 快速 选择 插入算法 四种基本算法
  3. 机器学习 —— log-linear 模型
  4. 解决easyui datagrid加载数据时,checkbox列没有根据checkbox的值来确定是否选中
  5. Android Socket 开发技术
  6. LintCode 推断一个二叉树树是否是还有一个二叉树的子书
  7. scala调用外部命令
  8. MyBatis从入门到放弃一:从SqlSession实现增删改查
  9. 第六节,Python的科学计算包——Numpy
  10. jQuery-4.动画篇---淡入淡出效果
  11. 微信小程序开发填坑指南V1
  12. Jenkins之定时任务
  13. Nginx作为TCP负载均衡
  14. pandas.io.common.CParserError: Error tokenizing data. C error: Expected 1 fields in line 526, saw 5
  15. 关于Firedac的一点看法
  16. CS229 3.用Normal Equation拟合Liner Regression模型
  17. C++ Crypto++ RSA加密资料收集
  18. iOS 使用宏 常量 报错 expected expression
  19. 在 arc里面打印 引用计数的方法
  20. 利用Spark-mllab进行聚类,分类,回归分析的代码实现(python)

热门文章

  1. TCP超时与重传机制与拥塞避免
  2. Mybaits 查询 choose when 的使用
  3. Mybaist 注解 foreach 嵌套循环实现批量插入
  4. jquery text选择器 语法
  5. DVWA--File Inclusion(不能远程包含的问题解决)
  6. 使用oracle删除表中重复记录
  7. GC详解
  8. Linux常用命令及操作(第二弹)
  9. MongoDB与mysql的对比
  10. 《FS Book》: 如何让圣诞节邮件营销与众不同