创建数据库 CREATE DATABASE IF NOT EXISTS vctest DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 2. CREATE DATABASE IF NOT EXISTS mytestdb;

删除数据库 drop database test1; 2. DROP DATABASE IF EXISTS mytestdb;

查看All DB show databases;

导入sql source test.sql


select

use vctest
select city, phone, country from `offices`;

SELECT语句由以下列表中所述的几个子句组成:

语句中的SELECT和FROM语句是必须的,其他部分是可选的。

  • SELECT之后是逗号分隔列或星号(*)的列表,表示要返回所有列。
  • FROM指定要查询数据的表或视图。
  • JOIN根据某些连接条件从其他表中获取数据。
  • WHERE过滤结果集中的行。
  • GROUP BY将一组行组合成小分组,并对每个小分组应用聚合函数。
  • HAVING过滤器基于GROUP BY子句定义的小分组。
  • ORDER BY指定用于排序的列的列表。
  • LIMIT限制返回行的数量。

即使WHERE子句出现在语句的末尾,但MySQL会首先使用WHERE子句中的表达式来选择匹配的行。

SELECT
    lastname, firstname, jobtitle
FROM
    employees
WHERE
    jobtitle = 'Sales Rep';

INSERT 创建表

CREATE TABLE [IF NOT EXISTS] table_name(
        column_list
) engine=table_type;

CREATE TABLE IF NOT EXISTS user (
    uid INT(11) AUTO_INCREMENT, 
    username VARCHAR(45) NOT NULL, 
    registration_time DATE DEFAULT NULL, 
    PRIMARY KEY(uid) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 首先,指定要在CREATE TABLE子句之后创建的表的名称。表名在数据库中必须是唯一的。 IF NOT EXISTS是语句的可选部分,允许您检查正在创建的表是否已存在于数据库中。 如果是这种情况,MySQL将忽略整个语句,不会创建任何新的表。 强烈建议在每个CREATE TABLE语句中使用IF NOT EXISTS来防止创建已存在的新表而产生错误。
  • 其次,在column_list部分指定表的列表。字段的列用逗号(,)分隔。我们将在下一节中向您展示如何更详细地列(字段)定义。
  • 第三,需要为engine子句中的表指定存储引擎。可以使用任何存储引擎,如:InnoDB,MyISAM,HEAP,EXAMPLE,CSV,ARCHIVE,MERGE, FEDERATED或NDBCLUSTER。如果不明确声明存储引擎,MySQL将默认使用InnoDB。

查看表的列属性

1. show columns from user;

2. desc user;

ALTER TABLE语句来设置列的自动递增属性

ALTER TABLE tasks
CHANGE COLUMN task_id task_id INT(11) NOT NULL AUTO_INCREMENT;

添加新列

ALTER TABLE vendors
ADD COLUMN phone VARCHAR(15) AFTER name;

ALTER TABLE tasks
ADD COLUMN complete DECIMAL(2,1) NULL
AFTER description;

修改列的属性

原来表dictionary的一列enword的属性为VARCHAR(32),修改为VARCHAR(64)  NOT NULL.
ALTER TABLE table_name MODIFY COLUMN column_name VARCHAR(64) NOT NULL;

删除列

ALTER TABLE tasks
DROP COLUMN description;

重命名表

ALTER TABLE tasks
RENAME TO work_items;

2. RENAME TABLE old_table_name TO new_table_name;

插入数据

INSERT INTO tasks(subject,start_date,end_date,description) //插入到tasks表中
VALUES('Learn MySQL INSERT','2017-07-21','2017-07-22','Start learning..');

插入多行

INSERT INTO table(column1,column2...)
VALUES (value1,value2,...),
       (value1,value2,...),
       (value1, value2,...);

插入日期出错

#https://blog.csdn.net/weixin_50518271/article/details/113761164
select @@SQL_MODE
SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'NO_ZERO_DATE', '');

复制表结构

CREATE TABLE tasks_bak LIKE tasks;

INSERT INTO tasks_bak
SELECT * FROM tasks;

MySQL INSERT与ON DUPLICATE KEY UPDATE

INSERT INTO tasks(task_id,subject,start_date,end_date,description)
VALUES (4,'Test ON DUPLICATE KEY UPDATE','2017-01-01','2017-01-02','Next Priority')
ON DUPLICATE KEY UPDATE
   task_id = task_id + 1,
   subject = 'Test ON DUPLICATE KEY UPDATE';

等同于UPDATE语句

UPDATE tasks
SET
    task_id = task_id + 1,
    subject = 'Test ON DUPLICATE KEY UPDATE'
WHERE
    task_id = 4;

UPDATE

UPDATE employees
SET
    lastname = 'NKS',
    email = 'mary.new@yiibai.com'
WHERE
    employeeNumber = 1056;

随机选择一个职位是Sales Rep的员工

SELECT
    employeeNumber
FROM
    employees
WHERE
    jobtitle = 'Sales Rep'
ORDER BY RAND()
LIMIT 1;

需要更新customers表中的销售代表员工编号(employeeNumber)列

UPDATE customers
SET
    salesRepEmployeeNumber = (SELECT
            employeeNumber
        FROM
            employees
        WHERE
            jobtitle = 'Sales Rep'
        LIMIT 1)
WHERE
    salesRepEmployeeNumber IS NULL;

备份数据库

https://www.yiibai.com/mysql/how-to-backup-database-using-mysqldump.html


DELETE

删除表 DROP TABLE IF EXISTS tasks;

删除指定条件

DELETE FROM employees
WHERE
    officeCode = 4;

删除表中所有行 delete from employees;

删除指定行数

DELETE FROM customers
ORDER BY customerName
LIMIT 10; //10行

删除五个法国客户

DELETE FROM customers
WHERE country = 'France'
ORDER BY creditLimit
LIMIT 5;

创建函数

DELIMITER //

CREATE PROCEDURE get_employee(IN p_id INT)

begin
 SELECT first_name
 ,last_name
 ,dept_name
 FROM employees
 INNER JOIN departments using (department_id)
 WHERE id = p_id;
END;
//

DELIMITER;

运行 CALL get_employee(1);


Mysql技巧 https://www.yiibai.com/mysql/mysqltips.html

MySQL存储过程 https://www.yiibai.com/mysql/stored-procedure.html

Re:

https://www.yiibai.com/mysql

https://stackoverflow.com/questions/3401982/error-with-mysql-procedures-error-1304-error-1305

https://blog.csdn.net/yuxin6866/article/details/52722913