数据库SQL语句的使用

1、创建SQL语句 DDL语句

1.1、数据库操作

// SQL命令用大写作为普遍的使用规范。
// 查看数据库
SHOW DATABASES;
// 查看数据库的创建信息和字符集编码
SHOW CREATE DATABASE 数据库名;
// 创建数据库
CREATE DATABASE 数据库名;
// 判断数据库是否存在并设置字符集编码
CREATE DATADASE [IF NOT EXISTS] 数据库名 [CHARACTER SET 字符集];
// 更改数据库信息 (一般不用)
ALTER DATABASE 数据库名 [CHARACTER SET 字符集];
// 删除数据库
DROP DATABASE 数据库名;
DROP DATABASE [IF EXISTS] 数据库名;
// 进入一个数据库
USE 数据库名;
// 查看当前数据库
SELECT database();

1.2、数据表操作

// 创建数据表必须同时创建表中的字段
CREATE TABLE 表名(
    id TINYINT PRIMARY KEY auto_increment,// PRIMARY KEY 主键 auto_increment自动增长
    name VARCHAR(25),
    gender boolean,
    age INT,
    department VARCHAR(20),
    salary DOUBLE(7,2)
)[CHARACTER SET 字符集] [ENGINE=INNODB]; // ENGINE=INNODB 指定数据库使用的执行引擎

CREATE TABLE 数据库名.表名(
    数据的字段信息
)[CHARACTER SET 字符集];

/*约束条件:
NOT NULL : 用于控制字段的内容一定不能为空(NULL)。
UNIQUE : 控件字段内容不能重复,一个表允许有多个 Unique 约束。
PRIMARY KEY: 用于控件字段内容不能重复,但它在一个表只允许出现一个。
FOREIGN KEY: 1、约束用于预防破坏表之间连接的动作,FOREIGN KEY 约束。
             2. 也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。
CHECK: 用于控制字段的值范围。
DEFAULT: 用于设置默认值。
*/

// 查看数据库中的所有表
SHOW TABLES;
// 查看表的创建信息
SHOW CREATE TABLE 表名;
// 查看表结构
DESC 表名; // 全称 DESCRIBE 表名;
SHOW COLUMNS FROM 表名;
// 修改表名
RENAME TABLE 修改的表名 to 新表名

// 添加字段
ALTER TABLE 表名 ADD 字段名 限制条件,
       ADD 字段名 限制条件;
// 修改一列类型
ALTER TABLE 表名 MODIFY 字段名 类型 [完整性约束条件] [firse | after 字段名];
// 修改字段
ALTER TABLE 表名 CHANGE [column] 修改的字段 新字段 类型 [完整性约束条件] [firse | after 字段名];
// 删除一个字段
ALTER TABLE 表名 DROP 字段;



1.2.1、数字型

类型

大小

范围(有符号)

范围(无符号)

用途

TINYINT

1 字节

(-128,127)

(0,255)

小整数值

SMALLINT

2 字节

(-32 768,32 767)

(0,65 535)

大整数值

MEDIUMINT

3 字节

(-8 388 608,8 388 607)

(0,16 777 215)

大整数值

INT或INTEGER

4 字节

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整数值

BIGINT

8 字节

(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

极大整数值

FLOAT

4 字节

(-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 字节

(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的值

小数值/1。2.

1.2.2、字符串类型

类型

范围

说明

 

Char(N)

[ binary]

N=1~255 个字元
binary :分辨大小写

固定长度

std_name cahr(32) not null

VarChar(N)[binary]

N=1~255 个字元
binary :分辨大小写

可变长度

std_address varchar(256)

TinyBlob

最大长度255个字元(2^8-1)

Blob (Binary large objects)储存二进位资料,且有分大小写

Text 文本字符

memo text not null

TinyText

最大长度255个字元(2^8-1)

Blob

最大长度65535个字元(2^16-1)

Text

最大长度65535个字元(2^16-1)

MediumBlob

最大长度 16777215 个字元(2^24-1)

MediumText

最大长度 16777215 个字元(2^24-1

LongBlob

最大长度4294967295个字元 (2^32-1)

LongText

最大长度4294967295个字元 (2^32-1)

Enum

集合最大数目为65535

列举(Enumeration),Enum单选、Set复选

sex enum(1,0)
habby set(‘玩电玩’,'睡觉’,'看电影’,'听音乐’)

Set

集合最大数目为64

1.2.3、时间日期类型

日期时间类型 占用空间 日期格式 最小值 最大值 零值表示
 DATETIME  8 bytes  YYYY-MM-DD HH:MM:SS  1000-01-01 00:00:00 9999-12-31 23:59:59  0000-00-00 00:00:00
 TIMESTAMP  4 bytes  YYYY-MM-DD HH:MM:SS  19700101080001 2038 年的某个时刻 00000000000000
 DATE  4 bytes  YYYY-MM-DD 1000-01-01  9999-12-31  0000-00-00
 TIME  3 bytes  HH:MM:SS  -838:59:59 838:59:59  00:00:00
 YEAR  1 bytes  YYYY 1901  2155  0000

 

1.3、内容操作 

// MySQL可以进行 +,-,*,/ 运算
// 写入内容
INSERT INTO 表名 (字段,字段2,....) VALUES (字段的值,字段值2,....)

INSERT INTO 表名 SET 字段名=字段的值,字段名2=字段的值2;

// 查看表中的内容
SELECT *(字段) FROM 表名;
SELECT 字段,字段2 FROM 表名;
SELECT [DISTINCT] * FROM 表名; // distinct 过滤重复的内容
SELECT 字段 as 字段别名 FROM 表名;

// 查询语句的执行循序
from -> where -> select -> group by -> having -> order by

// WHERE 语句筛选
SELECT * FROM 表名 WHERE 条件;
/* 比较运算符 > < >= <= <> !=
    between 80 and 100; 值在80到100之间
    in(80,90,100); 值是80或90或100
    link 'yuan%'; 
    // pattern可以是 % 或 _ ;如果是 % 则表示任意多字符,比如唐%,唐僧,唐国强都符合;
    // 如果是 _ 则表示一个字符,唐_ 只有 唐僧 符合,可以加多根 _ ;如唐__ 唐国强符合;
    多个条件直接使用逻辑运算符 and:与 or:或 not:非 is:判断
*/

// 排序 Order by 条件 desc 降序(从大到小) asc 升序(从小到大) 
SELECT 字段 FROM 表名 WHERE 条件 link 'yuan%' ORDER BY 排序条件 DESC;  

// 分组 group by  按分组条件分组后,每一组只显示第一条记录,其他隐藏在组里面。
SELECT * FROM 表名 GROUP BY 按此字段分组;
/* 聚合函数 
    SUM(字段名)   求指定字段列的和
    COUNT(字段名) 返回指定字段列的行数
    AVG(字段名)   返回指定字段列的平均值
    MIN(字段名)   返回指定字段列的最小值
    MAX(字段名)   返回指定字段列的最大值
*/
SELECT name,sum(字段名) FROM 表名 GROUP BY 字段;

// 对分组后进行过滤 having 
SELECT name,sum(字段名) FROM 表名 GROUP BY 字段 HAVING sum(字段名)>150;

// limit 获取显示的条数
SELECT * FROM 表名 WHERE 过滤条件 LIMIT 1,5; // 获取到 >=1 <5 的内容

// MySQL 正则
SELECT * FROM 表名 WHERE 过滤条件 REGEXP '正则表达式';

// 修改内容
UPDATE 表名 SET 字段名=字段的值,字段名2=字段的值2  WHERE 条件 ;
UPDATE 表名 SET 字段名=字段的值,字段名2=字段的值2  WHERE id=10 ;

// 删除内容

DELETE FROM 表名 WHERE 条件; // 删除条件符合的一条内容

    WHERE 字段=字段值 AND 字段1=字段值1;

TRUNCATE TABLE 表名;// 删除整张表后再重新创建字段。

2、外键

// 外键的使用
// 绑定外键
CREATE TABLE 表名(
    // 作为外键一定要与关联的主键数据类型保持一致
    FOREIGN KEY  (需要绑定外键的字段名)  REFERENCES 表名(id(表字段))
)

// 删除关联的内容,需要解除关联关系,或者同事删除相关联的内容。

// 添加外键关联
ALTER TABLE 表名 ADD CONSTRAINT 自定义外键名 
                 FOREIGN KEY (需要绑定外键的字段名)
                 REFERENCES 被绑定表名(id(表字段));

// 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名;


3、on语句

// 外键级联 设置了之后删除主表数据同时也删除了子表记录。
CREATE TABLE 表名(
    字段,
    FOREIGN KEY (需要绑定外键的字段名) REFERENCES 被绑定表名(id)
                                  ON DELETE CASCADE
) 

// set NULL  会把子表的记录变成NULL
CREATE TABLE 表名(
    字段,
    FOREIGN KEY (需要绑定外键的字段名) REFERENCES 被绑定表名(id)
                                  ON DELETE SET NULL
)                          

4、多表查询操作

// 多表查询之连接查询
// 内连接查询 INNER JOIN
// 外连接查询 LEFT JOIN  RIGHT JOIN
// 全连接 FULL JOIN (不支持)

// 内连接查询
    SELECT * FROM 表名1,表名2 WHERE 表名1.id=表名2.表名1_id;
    // 查询与where子句相匹配的信息
    SELECT * FROM table1,table2 WHERE table1.id=table2.table1_id; 
    // 查询与where子句相匹配的字段信息
    SELECT table1.id,table1.name,table2.name WHERE table1.id=table2.table1_id;
    
    // 对表名2中匹配表名1中的内容进行查询
    // 只显示符合 on 条件信息
    SELECT * FROM 表名2 INNER JOIN 表名1 ON 表名1.id=表名2.表名1_id; 
    

// 外连接查询 
    // 显示 on 后符合条件的信息,而且不符合条件的已NULL显示
    SELECT * FROM 表名1 LEFT JOIN 表名2 ON 条件;// 已左表为主查询符合条件的信息,并显示
    SELECT * FROM 表名1 RIGHT JOIN 表名2 ON 条件;// 已右表为主查询符合条件的信息

5、索引

// 索引查询
CREATE TABLE 表名 (
        字段1 数据类型 [完整性约束条件...],
        字段2 数据类型 [完整性约束条件...],
        // 索引名
        [UNIQUE | FULLTEXT | SPATIAL] INDEX | KEY 
        [索引名] (字段名[(长度)] [ASC | DESC]) 
);
// INDEX | KEY  普通索引

CREATE TABLE 表名 (
    id INT,
    name VARCHAR(30),
    resume VARCHAR(50),
    INDEX index_name (name)
)
// index_name 索引的名称

猜你喜欢

转载自blog.csdn.net/u011146423/article/details/82697395