Mysql_use
创建数据库
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://stackoverflow.com/questions/3401982/error-with-mysql-procedures-error-1304-error-1305