MYSQL - 基础操作(一)

本文详细介绍SQL的基础操作,包括表的创建、修改、删除,以及数据的插入、更新、删除和查询。深入探讨了DML语句的应用,如concat、LPAD、RPAD、replace等函数的使用,和复杂的表连接查询、聚合函数与GROUP_CONCAT的运用,以及LIKE和REGEXP的匹配技巧。

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

一、表的创建、查看、删除、修改

   DDL 数据定义语言的缩写,对数据库内部的对象进行创建、删除、修改等操作

  创建表

   CREATE TABLE IF NOT EXISTS `tbl`(

   `id` INT UNSIGNED AUTO_INCREMENT,

   `title` VARCHAR(100) NOT NULL,

   `author` VARCHAR(40) NOT NULL,

   `submission_date` DATE,

   PRIMARY KEY ( `id` )

   )ENGINE=InnoDB DEFAULT CHARSET=utf8; ENGINE

    设置存储引擎,CHARSET 设置编码。

  删除表

  语法:drop table tablename

  修改表

  (1)修改某个表中某个列的某个数据类型

   语法:alter table tablename modify column_name newcolumn_type;

  (2)增加表字段

   语法:alter table tablename add column newcolumn_name newcolumn_type;

  (3)删除表字段

   语法:alter table tablename drop column column_name;

   (4) 字段改名

   语法:alter table tablename change col_name new col_name col_type;

    (将column_type更改,成为newcolumn_type,可同时更改字段类型)

  (5)修改字段排列顺序

   语法:①alter table tablename add  newcol_name  newcol_type after col_name;

   作用:将newcol_name  newcol_type 加在 column_name 后面。

    ②alter table tablename modify column_name column_type first;

    作用:将newcolumn_name newcolumn_type 放在最前面。

   (6)更改表名

    语法:alter table tablename rename newtablename;

 

二、DML语句

DML操作是指对数据库中表记录的操作,主要包括表记录的插入、更新、删除和查询

1.concat(str1,str2,..)

把字符串str1,str2,..连接 返回一个字符串,

若其中一个字段为null,则返回null

2.LPAD(str,len,padstr)

用字符串 padstr对 str进行左边填补直至它的长度达到 len个字符长度,返回 str。

若str的长度长于 len',那么它将被截除到 len个字符。

例:SELECT LPAD('hi',4,'??'); -> '??hi'

3.RPAD(str,len,padstr)

用字符串 padstr对 str进行右边填补直至它的长度达到 len个字符长度,返回 str。

若str的长度长于 len',那么它将被截除到 len个字符。

例:SELECT RPAD('hi',5,'?'); -> 'hi???'

4. replace(object,search,replace)

把object中出现search的全部替换为replace

例:update `news` set `content`=replace(`content`,' ','')清除content字段的空格

5.replace into 表 values(1,2,3,4)

尝试向表里插入新行,当表里唯一索引或者primary key冲突的时候

a. 当存在pk(主键约束)冲突的时候是先delete再insert

b. 当存在uk(唯一索引)冲突的时候是直接update

6.TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)

返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差

interval 参数:

FRAC_SECOND 表示间隔是毫秒 | SECOND 秒 | MINUTE 分钟 | HOUR 小时 | DAY 天 | WEEK 星期 | MONTH 月 | QUARTER 季度 | YEAR 年

例:select TIMESTAMPDIFF(day,'2012-08-24','2012-08-30') --> 6

7.TIMESTAMPADD(interval,int_expr,datetime_expr)

将整型表达式int_expr 添加到日期或日期时间表达式 datetime_expr中。式中的

interval和上文中列举的取值是一样的。

例:select TIMESTAMPADD(MINUTE,8820,'2012-08-24 09:00:00')

     -->2012-08-30 12:00:00

8. mysql 表示当前时间

CURRENT_TIMESTAMP |  CURRENT_TIMESTAMP() | NOW()

LOCALTIME | LOCALTIME() | LOCALTIMESTAMP | LOCALTIMESTAMP()

9. Group by + 聚合函数  SUM, AVG, MAX, MIN, 和 COUNT

  select [聚合函数] 字段名 from 表名

    [where 查询条件]

    [group by 字段名]

    [having 过滤条件]

聚合和group by 详细用法:http://www.cnblogs.com/geaozhang/p/6745147.html

10. group by + having

对分组结果进行过滤, 先执行分组group by 在对结果过滤,

having 子句的列 可以为组函数(having a in ('1','2')),不能出现 having a> '1'

having 和 where 区别:

where子句在分组前对记录进行过滤 | having子句在分组后对记录进行过滤

11.group by + GROUP_CONCAT()

函数的值等于属于一个组的指定列的所有值,以逗号隔开,并且以字符串表示

例:select teamno,group_concat(playerno) from MATCHES group by teamno;

 --> teamno  | group_concat(playerno) |

  -->|     1 | 6,6,6,44,83,2,57,8     |

 group_concat 返回一列的所有的值,select group_concat(a) from 表;

 ---> '1,2,3,4,5'

12.union [all | distinct]

union用于把两个或者多个select查询的结果集合并成一个,

注意: select 列表的列数量 和对应的数据类型保持一致,默认去重不排序。  结果集的列名是第一个查询select 列表。 如果要对合并后的整个结果集进行排序,ORDER BY子句只能出现在最后面的查询中。  去重十如果包含 null,认为他们是相等的。

13.like 匹配/模糊匹配,会与 % 和 _ 结合使用。

'%a'  //以a结尾的数据 |  'a%'  //以a开头的数据

'%a%' //含有a的数据   | '_a_'   //三位且中间字母是a的

'_a'  //两位且结尾字母是a的 |  'a_'   //两位且开头字母是a的

14. regexp  正则表达式

^ 开头     | $ 结束   | [...]字符集合。匹配所包含的任意一个字符

* 0次或多次  | + 1次或多次

 

表连接查询:

INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。

LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

RIGHT JOIN(右连接):获取右表所有记录,即使左表没有对应匹配的记录。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值