数据库语句相关

本文围绕MySQL数据库展开,介绍了库数据的操作,如查看、创建、删除数据库等;表数据的增删改查及排序;键的添加、删除和修改;联接的多种方式,包括内联接、左外联接等;还提及了聚合、数学等各类函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql语句

库的数据

1、大型数据库 Oracle Db2
  中型数据库    sqlserver  
  小型数据库    mysql
  微型数据库    sqlite
  • 增:Insert into 表名 value 值

  • 删:Delect from 表名 where 值

  • 改:Update 表名 set 字段=字段 where 字段;

  • 查:Select * from 表名

  • 自增 auto_increment

  • 主键 primary key

  • 非空 not null

  • 唯一 unique

  • 默认值 default

  • 外键 foreign key

2、查看所有的数据库: SHOW DATABASES ;
3、创建一个数据库: CREATE DATABASE k;
4、删除一个数据库: DROP DATABASE k;
5、使用这个数据库 USE k;
6、查看所有的表 SHOW TABLES ;
7、创建一个表
CREATE TABLE n(id INT, name VARCHAR(10));
CREATE TABLE m(id INT, name VARCHAR(10), PRIMARY KEY (id), FOREIGN KEY (id) REFERENCES n(id), UNIQUE (name));

CREATE TABLE m(id INT, name VARCHAR(10));
8、直接将查询结果导入或复制到新创建的表 :
CREATE TABLE n SELECT * FROM m;
9、新创建的表与一个存在的表的数据结构类似:
CREATE TABLE m LIKE n;
10、临时表将在你连接MySQL期间存在。当断开连接时,MySQL将自动删除表并释放所用的空间。也可手动删除。
CREATE TEMPORARY TABLE l(id INT, name VARCHAR(10));
11、直接将查询结果导入或复制到新创建的临时表
CREATE TEMPORARY TABLE tt SELECT * FROM n;
12、删除一个存在表 DROP TABLE IF EXISTS m;
13、更改存在表的名称
ALTER TABLE n RENAME m;
RENAME TABLE n TO m;
14、查看表的结构(以下五条语句效果相同)
DESC n; # 因为简单,所以建议使用
DESCRIBE n;
SHOW COLUMNS IN n;
SHOW COLUMNS FROM n;
EXPLAIN n;
15、查看表的创建语句
SHOW CREATE TABLE n;
表的结构
添加字段: ALTER TABLE n ADD age VARCHAR(2) ;
删除字段: ALTER TABLE n DROP age;
更改字段属性和属性:ALTER TABLE n CHANGE age a INT;
只更改字段属性:ALTER TABLE n MODIFY age VARCHAR(7) ;

表的数据

1、增加数据
INSERT INTO n VALUES (1, 'tom', '23'), (2, 'john', '22');

INSERT INTO n SELECT * FROM n; # 把数据复制一遍重新插入
2、删除数据
DELETE FROM n WHERE id = 2;
3、更改数据
UPDATE n SET name = 'tom' WHERE id = 2;
4、数据查找 :
SELECT * FROM n WHERE name LIKE '%h%';
5、数据排序(反序) :
SELECT * FROM n ORDER BY name, id DESC ;

1、添加主键:ALTER TABLE n ADD PRIMARY KEY (id);
2、删除主键:ALTER TABLE n DROP PRIMARY KEY ;
3、添加外键
ALTER TABLE m ADD FOREIGN KEY (id) REFERENCES n(id); # 自动生成键名m_ibfk_1

ALTER TABLE m ADD CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES n(id); # 使用定义的键名fk_id
4、删除外键:ALTER TABLE m DROP FOREIGN KEY fk_id;
5、修改外键:ALTER TABLE m DROP FOREIGN KEY fk_id, ADD CONSTRAINT fk_id2 FOREIGN KEY (id) REFERENCES n(id); # 删除之后从新建

联接

1、内联接:SELECT * FROM m INNER JOIN n ON m.id = n.id;
2、左外联接 :SELECT * FROM m LEFT JOIN n ON m.id = n.id;
3、右外联接:SELECT * FROM m RIGHT JOIN n ON m.id = n.id;
4、交叉联接: SELECT * FROM m CROSS JOIN n; # 标准写法
5、类似全连接full join的联接用法
SELECT id,name FROM m
UNION
SELECT id,name FROM n;

函数

1、聚合函数
SELECT count(id) AS total FROM n; # 总数

SELECT sum(age) AS all_age FROM n; # 总和

SELECT avg(age) AS all_age FROM n; # 平均值

SELECT max(age) AS all_age FROM n; # 最大值

SELECT min(age) AS all_age FROM n; # 最小值
2、数学函数
SELECT abs(-5); # 绝对值

SELECT bin(15), oct(15), hex(15); # 二进制,八进制,十六进制

SELECT pi(); # 圆周率3.141593

SELECT ceil(5.5); # 大于x的最小整数值6

SELECT floor(5.5); # 小于x的最大整数值5

SELECT greatest(3,1,4,1,5,9,2,6); # 返回集合中最大的值9

SELECT least(3,1,4,1,5,9,2,6); # 返回集合中最小的值1

SELECT mod(5,3); # 余数2

SELECT rand(); # 返回0到1内的随机值,每次不一样

SELECT rand(5); # 提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。

SELECT round(1415.1415); # 四舍五入1415

SELECT round(1415.1415, 3); # 四舍五入三位数1415.142

SELECT round(1415.1415, -1); # 四舍五入整数位数1420

SELECT truncate(1415.1415, 3); # 截短为3位小数1415.141

SELECT truncate(1415.1415, -1); # 截短为-1位小数1410

SELECT sign(-5); # 符号的值负数-1

SELECT sign(5); # 符号的值正数1

SELECT sqrt(9); # 平方根3

SELECT sqrt(9); # 平方根3
3、字符串函数
SELECT concat('a', 'p', 'p', 'le'); # 连接字符串-apple

SELECT concat_ws(',', 'a', 'p', 'p', 'le'); # 连接用','分割字符串-a,p,p,le

SELECT insert('chinese', 3, 2, 'IN'); # 将字符串'chinese'从3位置开始的2个字符替换为'IN'-chINese

SELECT left('chinese', 4); # 返回字符串'chinese'左边的4个字符-chin

SELECT right('chinese', 3); # 返回字符串'chinese'右边的3个字符-ese

SELECT substring('chinese', 3); # 返回字符串'chinese'第三个字符之后的子字符串-inese

SELECT substring('chinese', -3); # 返回字符串'chinese'倒数第三个字符之后的子字符串-ese

SELECT substring('chinese', 3, 2); # 返回字符串'chinese'第三个字符之后的两个字符-in

SELECT trim(' chinese '); # 切割字符串' chinese '两边的空字符-'chinese'

SELECT ltrim(' chinese '); # 切割字符串' chinese '两边的空字符-'chinese '

SELECT rtrim(' chinese '); # 切割字符串' chinese '两边的空字符-' chinese'

SELECT repeat('boy', 3); # 重复字符'boy'三次-'boyboyboy'

SELECT reverse('chinese'); # 反向排序-'esenihc'

SELECT length('chinese'); # 返回字符串的长度-7

SELECT upper('chINese'), lower('chINese'); # 大写小写 CHINESE chinese

SELECT ucase('chINese'), lcase('chINese'); # 大写小写 CHINESE chinese

SELECT position('i' IN 'chinese'); # 返回'i'在'chinese'的第一个位置-3

SELECT position('e' IN 'chinese'); # 返回'i'在'chinese'的第一个位置-5

SELECT strcmp('abc', 'abd'); # 比较字符串,第一个参数小于第二个返回负数- -1

SELECT strcmp('abc', 'abb'); # 比较字符串,第一个参数大于第二个返回正数- 1
4、时间函数
SELECT current_date, current_time, now(); # 2018-01-13 12:33:43 2018-01-13 12:33:43

SELECT hour(current_time), minute(current_time), second(current_time); # 12 31 34

SELECT year(current_date), month(current_date), week(current_date); # 2018 1 1

SELECT quarter(current_date); # 1

SELECT monthname(current_date), dayname(current_date); # January Saturday

SELECT dayofweek(current_date), dayofmonth(current_date), dayofyear(current_date); # 7 13 13
5、控制流函数
SELECT if(3>2, 't', 'f'), if(3<2, 't', 'f'); # t f

SELECT ifnull(NULL, 't'), ifnull(2, 't'); # t 2

SELECT isnull(1), isnull(1/0); # 0 1 是null返回1,不是null返回0

SELECT nullif('a', 'a'), nullif('a', 'b'); # null a 参数相同或成立返回null,不同或不成立则返回第一个参数

SELECT CASE 2

WHEN 1 THEN 'first'

WHEN 2 THEN 'second'

WHEN 3 THEN 'third'

ELSE 'other'

END ; # second
6、系统信息函数
SELECT database(); # 当前数据库名-test

SELECT connection_id(); # 当前用户id-306

SELECT user(); # 当前用户-root@localhost

SELECT version(); # 当前mysql版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值