MySQL基本语法

MySQL学习记录

DDL : 数据库定义语句(Datebase Define Language)
DML : 数据管理语句(Datebase Manage Language)
DQL : 数据库查询语言(Datebase Query Language)

数据库定义语句(Datebase Define Language)
-- DDL语句
SHOW DATABASES; -- 列出所有数据库
CREATE DATABASE `dailytext`; -- 创建数据库
DROP DATABASE `dailyText`; -- 删除数据库
USE `dailytext`; -- 更换数据库
SHOW TABLES; -- 列出数据表
CREATE TABLE IF NOT EXISTS `person` (
	`id` INT AUTO_INCREMENT,
	`name` VARCHAR(10) NOT NULL,
	`age` INT,
	`gender` ENUM ('man','woman','other'),
	`bd` DATE,
	PRIMARY KEY (`id`)
)ENGINE=INNODB ,CHARSET=utf8 ; -- 创建表
DESC person; -- 显示表结构
ALTER TABLE persons RENAME person; -- 重命名表名
ALTER TABLE person ADD gender VARCHAR(3) DEFAULT '男' COMMENT '性别'; -- 添加字段
ALTER TABLE `person` ADD `married` ENUM('yes','no') DEFAULT NULL first/after Column_Name; -- 指定位置添加字段
ALTER TABLE `person` MODIFY `married` VARCHAR(5) DEFAULT NULL; -- 只能修改字段属性以及字段长度
ALTER TABLE `person` CHANGE `married` `marry` VARCHAR(10) DEFAULT NULL; -- 修改字段名,字段属性以及字段长度
ALTER TABLE `person` DROP `marryy`; -- 删除字段


-- delete,drop,truncate 都有删除表的作用,区别在于:
/*
 1、delete 和 truncate 仅仅删除表数据,drop 连表数据和表结构一起删除,打个比方,delete 是单杀,truncate 是团灭,drop 是把电脑摔了。
 2、delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚,打个比方,delete 是发微信说分手,后悔还可以撤回,truncate 和 drop 是直接扇耳光说滚,不能反悔。
 3、执行的速度上,drop>truncate>delete,打个比方,drop 是神舟火箭,truncate 是和谐号动车,delete 是自行车。
 */
TRUNCATE TABLE `person`; -- 删除表内容,自增列计数器清空
DELETE TABLE `person`; -- 删除表内容,自增列计数器不清空
							-- 若数据表使用InnoDB引擎,重启数据库后自增列会清零,数据保存在内存中
							-- 若数据表使用MyISAM引擎,重启数据库后自增列也不会清零,数据保存在文件中
DROP TABLE `person`; -- 删除表内容和结构
数据管理语句(Datebase Manage Language)
-- DML语句
   -- 添加一条数据
      -- 方式一
	INSERT INTO person
	VALUES (NULL,'Mariya',12,'女');
      -- 方式二
        INSERT INTO person
        (`name`,`age`,`gender`,`birthday`)
        VALUES
        ('jicka',16,'女',NOW());

   -- 修改一条数据
	UPDATE person
	SET `name`='Rick' ,`age`=13 , `gender`=DEFAULT
	WHERE `name`='Mariya' OR `age`=12; 
	
	UPDATE person
	SET age=50
	WHERE `name`='Rick';
	
	UPDATE person
	SET `birthday`='1956-02-29' -- 设置时间格式为字符串
	WHERE `name`='Rick';
	
	UPDATE person
	SET `birthday`=CURRENT_TIME
	WHERE id>1 AND id <14;
	
	
	-- 删除一条数据(自增列不清除,会继续原来的增加)
    DELETE FROM `person`
    WHERE `name`='Gazor';
数据库查询语言(Datebase Query Language)
-- DQL语句
-- 基本查询语句:
SELECT * FROM cartoon;

-- 连接查询
/* 
内连接 :显示两表都有的内容,where和on无区别,应搭配on
语法:
	select column_name 
	from A 
	inner join B 
	where/on A.column_name=B.column_name
*/
SELECT c.`name` 姓名,c.`married` 已婚,p.`age` 年龄,p.`gender` 性别1,c.`gender` 性别2
FROM `cartoon` c
INNER JOIN `person` p
ON c.`name` = p.`name`
ORDER BY c.`id`;


/* 左连接 :左表为主表(A),结果显示左表中全部信息,右表中不存在的字段名用 NULL 填充
语法: 
	select column_name 
	from A 
	left join B 
	on A.column_name=B.column_name
*/
SELECT p.`name` 姓名,p.`gender` 性别1,c.`gender` 性别2,c.`married` 已婚
FROM person p LEFT JOIN cartoon c
ON p.`name`=c.`name`;


/* 右连接 :右表为主表(A),结果显示右表中全部信息,左表中不存在的字段内容用 NULL 填充
语法: 
	select column_name 
	from A 
	right join B 
	on A.column_name=B.column_name
*/
SELECT p.`name` 姓名,p.`gender` 性别1,c.`gender` 性别2,c.`married` 已婚
FROM person p RIGHT JOIN cartoon c
ON p.`name`=c.`name`;

SELECT p.`name` 姓名,p.`gender` 性别1,c.`gender` 性别2,c.`married` 已婚
FROM cartoon c RIGHT JOIN person p
ON p.`name`=c.`name`; -- 此结果和上面左连接查询例子一致

SELECT p.`name` 姓名,p.`gender` 性别1,c.`gender` 性别2,c.`married` 已婚
FROM dailytext.`cartoon` c RIGHT JOIN shmebluk.`person` p
ON p.`name`=c.`name`; -- 可选择不同数据库的表连接,用 datebase.table_name 选择
原文地址:https://www.cnblogs.com/shmebluk/p/13099566.html