首页 > 技术文章 > MySQL--基本操作命令(一)

nangongqi 2020-08-26 00:13 原文

MySQL的基本操作命令

MySQL不区分大小写

1、创建数据库

  CREATE DATABASE dbname;

  CREATE DATABASE IF NOT EXISTS dbname;  //先判断是否存在再创建

2、删除数据库

  DROP DATABASE dbname; //删除表的结构及所有数据,把所占空间完全释放

3、选择数据库

  USE dbname;

4、常见数据类型

  (1)数值型

  INT/INTEGER:整型 32

  FLOAT:单精度浮点型 32

  DOUBLE:双精度浮点型 64

  (2)时间日期型

  DATEYYYY-MM-DD 日期值

  TIMEHH:MM:SS 时间值或持续时间

  YEARYYYY 年份

  DATATIMEYYYY-MM-DD HH:MM:SS 时间日期

  (3)字符串型

  CHAR:定长字符串

  VARCHAR:变长字符串

  TEXT:长文本数据

注:

(1) MySQL5.0以上版本,utf8中一个汉字3个字节,GBK中一个汉字2个字节

(2) 文本长度超过255个字节只能用varchar或者text

 

5、创建数据库表

CREATE TABLE IF NOT EXISTS tablename (

column_name1  column_type1,

column_name2  column_type2,

......,

column_namen  column_typen, //n

PRIMARY KEY(column_name)    //最后一行没有逗号”,”

)

约束条件:

NOT NULL:非空

AUTO_INCREMENT:自增,通常用于主键

PRIMARY KEY:定义主键

ENGINE:存储引擎

CHARSET:设置编码

 

Eg:

CREATE TABLE test(

id int(32) NOT NULL AUTO_INCREMENT,

name VARCHAR(255) NOT NULL,

sex CHAR(4) NOT NULL,

PRIMAEY KEY(id)

)ENGINE = InnoDB CHARSET = utf8;

 

6、删除数据表

  DROP TABLE dbname;

7、插入数据

INSERT INTO tablename (field1,field2,.....,fieldN) VALUES (value1,value2,......,valueN);

//一次性添加多条数据

INSERT INTO tablename (field1,field2,.....,fieldN) VALUES (valueA1,valueA2,......,valueAN),

(value1,value2,......,valueN),(value1,value2,......,valueN)......; //注意符号

//按照规定的列进行添加

INSERT INTO tablename  VALUES (value1,value2,......,valueN);

注:如果数据是字符型,必须使用双引号或者单引号

8、查询数据

  SELECT column_name1,column_name2,.....,column_nameN FROM table_name [WHERE 条件] [LIMIT N]  [OFFSET M]

 

使用*来代替column_name,代表查询所有

查询语句中可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。

SELECT 命令可以读取一条或者多条记录。

WHERE 语句来包含任何条件。

LIMIT 属性来设定返回的记录数。

OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0

 

9、WHERE

常用的操作符:

= ,> ,< ,>= ,<= ,!=(也作”<>”)

可以在WHERE 中指定任何条件

可以使用 AND 或者 OR 来指定一个或多个条件

可以使用在SELECT UPDATE

类似于if 条件

 

10、更新

  UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE 条件]

   

  注:

可以同时更新一个或多个字段。

可以在 WHERE 子句中指定任何条件。

可以在一个单独表中同时更新数据。

 

11、删除

  DELETE  FROM  table_name [WHERE 条件]

 

如果没有指定WHERE子句,表中的所有记录都要被删除。

可以在单表中一次删除整个表。

   

12、LIKE

SELECT field1,field2,...,filedN FROM table_name WHERE field1 LIKE 条件1

可以使用LIKE来代替”=”

LIKE通常和 % 共同使用

可以使用AND 或者OR 来指定一个或多个条件

可以在DELETE或者UOPDATE 中来使用WHERE.....LIKE....来指定条件

模糊查询

‘%a’ //a结尾的数据

‘a%’ //a开头的数据

‘%a%’ //包含a的数据

‘_a_’ //三位且中间是a的数据

‘_a’ //两位且以a结尾的数据

‘a_’ //两位且以a开头的数据

 

13、UNION 去重

连接两个以上的SELECT语句的结果组合到一个结果集合中,并去除重复的结果。

SELECT column_name1,....,column_nameN FROM table1

UNION [ALL  | DISTINCT]

SELECT column_name1,....,column_nameN FROM table2

ALL:不去除重复结果

DISTINCT:删除重复的结果集。默认情况下,结果集是去除了重复结果的。

 

14、ORDER BY 排序

SELECT filed1,filed2,.....filedN  FROM table1,table2.... ORDER BY filed1[ASC | DESC],[filed2 [ASC | DESC]].....

可以设定多个字段来排序

ASC:升序  默认

DESC:降序

可以和WHERE...LIKE...连用

 

15、GROUP BY 分组

 

16、连接  

  和ON搭配

  内连接/等值连接:INNER JOIN(也可以单独使用JOIN)

 

 

 

 

查询两个表共有的部分

Eg

SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;

 

左连接:LEFT JOIN

 

  以左边的表为基准,读取左边表的全部数据,即便右边表没有对应数据。

 

 

 

 

右连接:RIGHT JOIN

 

  以右边的表为基准,读取右边表的全部数据,即便左边表没有对应数据。

 

 

 

 

17、NULL值处理

IS NULL:当列的值为NULL时,返回true

IS NOT NULL:当列的值不为NULL时,返回true

<=>:当比较的两个值相等或者都为NULL时,返回true

判断是否为NULL值时,不能使用=NULL 或者 !=NULL来判断

 

 

推荐阅读