SQL相关命令


前期准备:

  1. 这将创建一个名为 my_database 的数据库。
    CREATE DATABASE my_database;
    查询所有数据库:
    SHOW DATABASES;
    创建表:
    #在创建表之前,确保使用 USE 命令选择要操作的数据库:
    USE my_database;

使用 CREATE TABLE 命令创建一个新的表。表需要指定表名和列定义:

	CREATE TABLE user (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
# 这将创建一个名为 user 的表,包含 id、username、email 和 created_at 四个列。

SHOW TABLES;
使用以下命令显示数据库中的所有表:

一、复制

把user表的数据复制到新表user_copy

1.复制表和数据(有字段,有数据,无索引等)

CREATE TABLE user_copy as SELECT * FROM  `user`

把select查询语句的结果建一个新表

2.复制表 (只有字段,无数据,无索引等)

CREATE TABLE `user_copy` as SELECT * FROM user WHERE 1=2

3.复制表结构(可以复制旧表的主键、索引、Extra(auto_increment,字符集编码及排序)、注释、分区等属性。但是不包含触发器、外键等)

CREATE TABLE user_copy LIKE `user`

复制完整结构和数据

CREATE table  user_copy LIKE `user`; INSERT INTO user_copy SELECT * FROM `user`

二、查询

查询语句一般不区分大小写
select:查询语句关键字,必须写
* 表示查询表里所有字段,或者写字段名如 id等
from:关键字,从哪个表里查询数据如`user`,也可以不带 `
user:被查询等表
where:关键字,后面接查询等条件(等式、不等式等)

1.条件查询(where)

SELECT * FROM `user` WHERE id =1
id 等于1
还有其他比较运算符:比如 =、!=、>、<、>=、<= 等。

2.模糊查询(like)

SELECT * FROM `user` WHERE name like '12%'
name 以12开头(12,12aaa,12-asdf,12@,12·,121212等)
其他还有: LIKE、NOT LIKE、IN、NOT IN 等。

3.范围查询(BETWEEN)

SELECT * FROM `user` WHERE id BETWEEN 1 and 123
id 在1和123之间,包括1和123
其他还有:NOT BETWEEN

4.正则查询(REGEXP)

SELECT * FROM `user` WHERE id REGEXP '^1'
REGEXP后接正则表达式(一种语法)
其他还有:NOT REGEXP

5.空值查询(NULL)

```SELECT * FROM user WHERE id is NULL``
NULL 表示空,没有任何数据,不是字符串‘NULL’
其他还有:IS NOT NULL。

三、约束

1.非空约束

alter table `user` MODIFY phone int not null  # 设置'phone'为非空
alter table `user` MODIFY phone int null  # 设置'phone'为空

2.唯一约束

alter table `user` add UNIQUE (phone)  # 设置'phone'为唯一索引
ALTER TABLE `user` DROP INDEX phone # 删除唯一索引

3.主键约束

ALTER TABLE `user` 
DROP PRIMARY KEY, # 删除主键索引
ADD PRIMARY KEY (`user_id`) USING BTREE; 添加

四、其他

SQL 约束(Constraints)

SQL 约束用于规定表中的数据规则。
如果存在违反约束的数据行为,行为会被约束终止。
约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。

DROP INDEX 语句
DROP INDEX 语句用于删除表中的索引。

ALTER TABLE 语句
ALTER TABLE 语句用于在已有的表中添加、删除或修改列。
注意:以上的 size 代表的并不是存储在数据库中的具体的长度,如 int(4) 并不是只能存储4个长度的数字。

实际上int(size)所占多少存储空间并无任何关系。int(3)、int(4)、int(8) 在磁盘上都是占用 4 btyes 的存储空间。就是在显示给用户的方式有点不同外,int(M) 跟 int 数据类型是相同的。
例如:

int的值为10 (指定zerofill)
int(9)显示结果为000000010
int(3)显示结果为010

就是显示的长度不一样而已 都是占用四个字节的空间

SQL Aggregate 函数

SQL Aggregate 函数计算从列中取得的值,返回一个单一的值

有用的 Aggregate 函数:
AVG() - 返回平均值
COUNT() - 返回行数
FIRST() - 返回第一个记录的值
LAST() - 返回最后一个记录的值
MAX() - 返回最大值
MIN() - 返回最小值
SUM() - 返回总和

SQL Scalar 函数

SQL Scalar 函数基于输入值,返回一个单一的值

有用的 Scalar 函数:
UCASE() - 将某个字段转换为大写
LCASE() - 将某个字段转换为小写
MID() - 从某个文本字段提取字符,MySql 中使用
SubString(字段,1,end) - 从某个文本字段提取字符
LEN() - 返回某个文本字段的长度
ROUND() - 对某个数值字段进行指定小数位数的四舍五入
NOW() - 返回当前的系统日期和时间
FORMAT() - 格式化某个字段的显示方式

在 where like 的条件查询中,SQL 提供了四种匹配方式:

%:表示任意 0 个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

_:表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句。

[]:表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

[^] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
查询内容包含通配符时,由于通配符的缘故,导致我们查询特殊字符 “%”、“_”、“[” 的语句无法正常实现,而把特殊字符用 “[ ]” 括起便可正常查询。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值