SQL:Structured Query Language,是结构化查询语言,用于管理关系数据库管理系统。
SQL作用:访问和处理数据库,包括数据插入、查询、更新和删除。
结构化查询语言SQL包括:数据定义语言(DDL),数据查询语言(DQL),数据操纵语言(DML),数据控制语言(DCL)
以下记录一些MySQL基本操作和数据类型以便查阅方便。
用于定义数据库中表、字段、索引等对象的结构和属性的语言。
#1数据定义语言(DDL)
#1.1数据库
#1.1.1创建数据库
CREATE DATABASE my_database;
#1.1.2使用数据库
USE my_database;
#1.1.3删除数据库
DROP DATABASE my_database;
#1.2表
#1.2.1创建表:
CREATE TABLE users (
id INT NOT NULL,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(100) NOT NULL,
primary key(id)
);
#1.2.2创建表(带自增主键和默认值):
CREATE TABLE addresses (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
street VARCHAR(100) NOT NULL,
city VARCHAR(50) NOT NULL,
state VARCHAR(50) NOT NULL,
zip_code VARCHAR(10) NOT NULL,
country VARCHAR(50) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);
#1.2.3删除表:
DROP TABLE addresses;
#1.3索引
#1.3.1创建索引
CREATE INDEX idx_users_email ON users (email);
#1.3.2删除索引
DROP INDEX idx_users_email;
#1.4视图
#1.4.1创建视图
CREATE VIEW user_addresses AS
SELECT users.id AS user_id,
users.username AS user_name,
addresses.city,
addresses.country
FROM users
JOIN addresses ON users.id = addresses.user_id;
#1.4.2删除视图
DROP VIEW user_addresses;
数据分析最常用,用于查询需要的数据。
#2数据查询语言(DQL)
#2.1查询所有记录
SELECT * FROM table_name;
#2.2使用逻辑运算符
SELECT * FROM table_name
WHERE condition1 AND condition2;
SELECT * FROM table_name
WHERE condition1 OR condition2;
#2.3排序查询结果:
SELECT * FROM table_name
ORDER BY column_name;
SELECT * FROM table_name
ORDER BY column_name DESC;
#2.4使用聚合函数进行计算:
SELECT COUNT(*) FROM table_name;
SELECT SUM(column_name) FROM table_name;
SELECT AVG(column_name) FROM table_name;
SELECT MAX(column_name) FROM table_name;
SELECT MIN(column_name) FROM table_name;
#2.5分组查询:
SELECT column1, SUM(column2) FROM table_name
GROUP BY column1;
#2.6连接多个表查询:
SELECT * FROM
table1 JOIN table2
ON table1.column = table2.column;
#2.7使用子查询:
SELECT column1 FROM table_name
WHERE column2 IN (SELECT column2 FROM table2);
#2.8使用通配符模糊查询
#2.8.1使用通配符%
#2.8.1.1查询以abc为开头的数据
SELECT * FROM table_name
WHERE column_name LIKE 'abc%';
#2.8.1.2查询以abc为结尾的数据
SELECT * FROM table_name
WHERE column_name LIKE '%abc';
#2.8.1.3查询包含abc的数据
SELECT * FROM table_name
WHERE column_name LIKE '%abc%';
#2.8.1.4查询如XXaXXbcXX的数据
SELECT * FROM table_name
WHERE column_name LIKE '%a%bc%';
#2.8.2使用通配符_
#2.8.2.1查询以abc为开头的四位数据
SELECT * FROM table_name
WHERE column_name LIKE 'abc_';
用于对数据库中的数据进行添加、修改和删除操作。
#3数据操纵语言(DML)
#3.1数据
#3.1.1添加数据(INSERT):
INSERT INTO table_name (column1, column2, column3)
VALUES (value1, value2, value3);
#3.1.2修改数据(UPDATE):
UPDATE table_name
SET column1 = value1, column2 = value2 WHERE condition;
#3.1.3删除数据(DELETE):
DELETE FROM table_name WHERE condition;
#3.2表
#3.2.1删除表(删除数据和表结构)
DROP TABLE table_name;
#3.2.2删除表(删除数据,保留表结构)
DELETE FROM table_name
#3.3列
#3.3.1添加列
ALTER TABLE table_name ADD column_name data_type;
#3.3.2修改列
ALTER TABLE table_name MODIFY column_name data_type;
#3.4约束
#3.4.1添加约束(例如主键和外键):
ALTER TABLE table_name
ADD PRIMARY KEY (column_name);
ALTER TABLE table_name
ADD FOREIGN KEY (column_name) REFERENCES another_table(another_column);
#3.4.2删除约束:
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
#3.5索引
#3.5.1添加索引:
CREATE INDEX index_name ON table_name (column_name);
#3.5.2删除索引:
DROP INDEX index_name;
控制对数据库的访问权限。它允许数据库管理员授予、撤销和修改用户对数据库对象的访问权限。
#创建角色
CREATE ROLE role1;
#创建用户
CREATE USER user1 IDENTIFIED BY 'password1';
#授予角色权限
GRANT role1 TO user1;
#查询用户权限
SELECT * FROM dba_users;
#删除角色
DROP ROLE role1;
#删除用户
DROP USER user1;
以下内容参考自:MySQL 数据类型 | 菜鸟教程 (runoob.com)
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 Bytes | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 Bytes | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 Bytes | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT或INTEGER | 4 Bytes | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 Bytes | (-9,223,372,036,854,775,808, 9 223 372 036 854 775 807) |
(0,18 446 744 073 709 551 615) | 极大整数值 |
FLOAT (不推荐) |
4 Bytes | (-3.402 823 466 E+38,-1.175 494 351 E-38), 0, (1.175 494 351 E-38,3.402 823 466 351 E+38) |
0,(1.175 494 351 E-38,3.402 823 466 E+38) | 单精度 浮点数值 |
DOUBLE (不推荐) |
8 Bytes | (-1.797 693 134 862 315 7 E+308, -2.225 073 858 507 201 4 E-308),0, (2.225 073 858 507 201 4 E-308, 1.797 693 134 862 315 7 E+308) |
0,(2.225 073 858 507 201 4 E-308, 1.797 693 134 862 315 7 E+308) |
双精度 浮点数值 |
DECIMAL (推荐使用) |
DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 依赖于M和D的值 | 依赖于M和D的值 | 小数值 |
类型 | 大小 ( bytes) |
范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8 | '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59' | YYYY-MM-DD hh:mm:ss | 混合日期和时间值 |
类型 | 大小 | 用途 |
---|---|---|
CHAR | 0-255 bytes | 定长字符串 |
VARCHAR (推荐直接使用) |
0-65535 bytes | 可变长度字符串 |
TINYBLOB | 0-255 bytes | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65 535 bytes | 二进制形式的长文本数据 |
TEXT | 0-65 535 bytes | 长文本数据 |
MEDIUMBLOB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
4.json
json数组
json对象