zoukankan      html  css  js  c++  java
  • 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;
    
    
  • 相关阅读:
    js计时功能
    sql缓存与WebSocket结合
    安装iis8
    WebSocket 聊天室加自制服务器
    简易web服务器
    UserControl 用户定义组件
    web.config中configSections section节 -Z
    SQL函数返回表的示例-Z
    sql with as 用法-Z
    计算机组成原理-第3章-3.1
  • 原文地址:https://www.cnblogs.com/milesma/p/12023431.html
Copyright © 2011-2022 走看看