SQL基础语法
原生SQL的CRUD
数值类型
整数
类型 字节 范围 最大长度(+/-占一位) tinyint 1 2^8^ 4 smallint 2 2^16^ 6 mediumint 3 2^24^ 8 int 4 2^32^ 11 bigint 8 2^64^ 20 浮点数
类型 字节 范围 float 4 2^32^ double 8 2^64^ decimal 可变 可变 字符串
类型 最大长度 说明 char(n) 255字符 固定长度n,存储加密后的密码 varchar(n) 65535字符 动态长度,实际存储的字节数要加1/2 tinytext 2^8^字节 短文本字符串 text 2^16^字节 文章内容、产品描述、日志 mdiumtext 2^24^字节 大型文章、书籍章节 longtext 2^32^字节 整个电子书、巨量日志数据 日期和时间类型
类型 格式 date YYYY-MM-DD time HH:MM:SS datetime YYYY-MM-DD HH:MM:SS year YYYY
CURD操作
DATABASE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19-- 增
create database class
character set utf8mb4
collate utf8mb4_unicode_ci; --ci是case insensitive意识,输入sql语法对于数据大小写都视为一个对象
-- 删
drop database if exists class; --不加条件删除不存在数据库会报错
-- 改
ALTER DATABASE class CHARACTER SET utf8mb4;
-- 查
show databases;
-- 使用
use class;
-- 位置
select database();TABLE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28-- 增
CREATE TABLE user(
id INT(2) zerofill UNSIGNED AUTO_INCREMENT PRIMARY KEY, --int(2)不是限制存储范围,而是宽度至少,比如5 -> 05,要配合zerofill才能看到效果,zerofill紧跟int(2)后面
username VARCHAR(50) NOT NULL UNIQUE,
email VARCHAR(30) UNIQUE,
password VARCHAR(30) NOT NULL,
age TINYINT UNSIGNED,
`created at` DATETIME DEFAULT '2025-03-29 11:11:11' --``标识符,''或者""字符串
);
-- 删
drop table if exists users;
-- 查
show users;
desc users;
-- 添加/删除新列
ALTER TABLE users ADD/DROP age INT;
-- 修改原有列的类型
ALTER TABLE users MODIFY username VARCHAR(100);
-- 重命名列
ALTER TABLE users CHANGE username user_name VARCHAR(100);
-- 重命名表
ALTER TABLE users RENAME TO customers;DATA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20-- 增
1.明确给的值插入
insert into users (username,email,passwd,age,created_at)
values('zjy','2013369261@qq.com','zjyhhh666',19,'2025-03-29 10:10:10'),
('serein','zjy2013369261@gamil.com','zjyhhh666',19,'2025-03-29 10:10:10');
2. 查询结果插入
INSERT INTO users (username) SELECT username FROM users;
-- 删
delete from users where id=1;
-- 改
update users set name='serein' where username='zjy';
-- 查
select username,passwd from users where id=1;
select * from users order by age desc,id asc; --优先age降序,一样的话id升序排序
select count(*) from users; --总共多少行,包含null
select count(username) from users; --不包含null
select * from users limit 2; --查询前两条
select * from users limit 2,3; --跳过2条,查询3条
运算符
| != | in |
|---|---|
| = | or |
| < | and |
| > | is null |
| >= | between |
| <= | like |
| not |
注:
- null不等于空字符串
- like基本使用:select * from users where name like ‘%jy%’ –查询中间包含’jy‘的
分组函数
| count() | min() |
|---|---|
| avg() | sum() |
| max() |
注:括号里面写列名
索引
1 | --查看 |
事务和锁
1 | 1. 事务 |
评论
