首页 > 代码库 > MySQL基本语法节选

MySQL基本语法节选

SQL(结构化查询语言)

 

mysql登陆

mysql -u root -p

 

创建数据库

 

CREATE DATABASE [数据库名称];

 ex:

CREATE DATABASE samp_db;

 

查询当前数据库

 

SELECT DATABASE();

 

选择数据库

 

USE [数据库名称];

ex:

 

USE samp_db;

 

 

 

创建表

 

CREATE TABLE [表名称]

 

 

[列名] [类型] [可能的列属性]

 

;

ex:

CREATE TABLE testTable

(

  test1 INT NOT NULL,

  ......

);

 

查询表的数据结构

 

DESCRIBE [表名称];(或者使用简略写法  DESC [表名称]

ex:

DESC testTable;

 

显示当前数据库存在的表

 

SHOW TABLES;

 

 

显示当前服务端已经建立的数据库

 

SHOW DATABASES;

 

插入语句

 

INSERT INTO [表名称] VALUES(var1,var2,var3......),(var1,var2,var3......),......

 

INSERT INTO [表名称]([列名],...) VALUES(var1,...)(var1,....)

 

INSERT INTO [表名称] SET [列名]=var1,[列名]=var2,....(此时未初始化的都将赋予缺省值);

 

 

ex:

INSERT INTO testTable VALUES(10);

 

从文件中装入数据

 

LOAD DATA LOCAL INFILE “文件名”INTO TABLE [表名称]

ex:

LOAD DATA LOCAL INFILE test.sql INTO TABLE testTable;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~发布查询~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

显示所有表内数据

 

SELECT * FROM [表名称];(显示所有列)

 

ex:

SELECT * FROM testTable;

 

按条件查询

 

SELECT [列名] FROM [表名称] WHERE [条件]

ex:

 

SELECT test1 FROM testTable WHERE  test1>10

 

对查询结果进行排序

 

 

 

SELECT [列名] FROM [表名称] ORDER BY [列名] [DESC/ASC]

DESC/ASC~~~表示升序/降序

 

限制显示条目数

 

SELECT [列名] FROM [表名称] ORDER BY [列名] [DESC/ASC] LIMIT [数目]

 

 

SELECT [列名] FROM [表名称] ORDER BY [列名] [DESC/ASC] LIMIT [var1],[var2]

 

显示第var1条记录开始的后var2条记录

 

随机显示结果顺序

 

SELECT [列名] FROM [表名称] ORDER BY RAND();

 

使用函数处理相关列之间的数据并显示到一个新的列中

 

SELECT [命名的列名] [函数调用] FROM [表名称];

 

SQL中的日期格式为0000-00-00

数据类型为DATA

 

 

原笔记如下:

 

数据库查询语言SQL

 


 

MySQL

 


 


 

1.登陆方式

 

mysql-u root -p

 

此时输入密码即可进入数据库的命令行

 


 


 

2.使用方式

 

1.列出当前时间

 

SELECT NOW();

 

2.可以将查询语句保存在名为拓展名为.sql的文件中并使用

 


 

3.创建数据库

 

CREATE DATABASE [数据库名称];

 

例如:

 

CREATEDATABASE samp_db;

 

4.查询当前数据库

 

SELECT DATABASE();

 

5.选择使用数据库

 

USE[数据库名称];

 

 

 

选择数据库的另一个方法是在激活数据库时加载具体数据库

 

mysql[数据库名称](此语句在登陆数据库时使用)

 

下面是链接本地用户和网络服务器上的具体数据库的语句

 

mysql-u [用户名]-p [数据库名称]

 

mysql-h [服务器网址]-u [用户名]-p [数据库名称]

 

6.创建表

 

CREATE TABLE [表名称]

 

 

[列名] [类型][可能的列属性]

 

;

 

 

 

说明:

 

数据类型:

 

1.VARCHAR(n)代表可变长度的字符(串)值,其最大长度为n

 

2.DATE表示该列存储的为日期值其标准格式为YYYY-MM-DD(这是ANSI-SQL标准);

 

3.ENUM()枚举类型;

 


 

可能属性:

 

1.NOT NULL 表示非空;

 

2.NULL 表示可以为空;

 

3.DEFAULT“0000-00-00” 此语句紧跟DATA类型后面,表示使用此缺省值格式化日期;

 

4.UNSIGNED 不允许负数;

 

5.AUTO_INCREMENT表示创建表若是遗漏了此数据,则自动生成一个比当前此列数值大一个单位的值;

 

6.PRIMARYKEY 表示响应列的值为快速查找进行索引,并且保证每一个值唯一避免重复

 


 


 

7.查询表的数据,结构

 

DESCRIBE [表名称];(或者使用简略写法DESC[表名称]

 

8.显示当前数据库存在的表

 

SHOWTABLES;

 

9.显示系统已经存在的数据库

 

SHOWDATABASES;

 

10.插入语句

 

INSERT INTO [表名称] VALUES(var1,var2,var3......),(var1,var2,var3......),......

 

INSERT INTO [表名称]([列名],...) VALUES(var1,...)(var1,....)

 

INSERT INTO [表名称] SET [列名]=var1,[列名]=var2,....(此时未初始化的都将赋予缺省值);

 

11.装入数据

 

LOAD DATA LOCAL INFILE “文件名”INTOTABLE [表名称]

 

使用语句读取文件来装入表

 


 


 

3.查询数据

 

1.显示表内数据(WHERE

 

SELECT * FROM [表名称];(显示所有列)

 

SELECT [列名] FROM [表名称] WHERE [条件]

 

2.对结果进行排序(ORDERBY

 

SELECT [列名] FROM [表名称] ORDER BY [列名] [DESC/ASC]

 

按照选定的列名进行排序显示查询结果(DESC/ASC为可选参数,表示倒序/正序),默认为正序。

 

3.限制查询(LIMIT

 

SELECT [列名] FROM [表名称] ORDER BY [列名] [DESC/ASC] LIMIT [数目]

 

限制显示的结果数目(就是显示数据行数)

 

4.限制查询2LIMIT

 

SELECT [列名] FROM [表名称] ORDER BY [列名] [DESC/ASC] LIMIT [var1],[var2]

 

显示第var1条记录开始的后var2条记录

 

5.随机查询(ORDERBY RAND()

 

SELECT [列名] FROM [表名称] ORDER BY RAND();

 

可以与LIMIT结合查询,可以随机显示表内的数据

 

6.计算并且命名输出的数据列值

 

SELECT [命名的列名] [函数调用] FROM [表名称];

 

不使用命名的话默认以函数调用名来显示列名;

 

或使用

 

SELECT [函数调用] AS [列名] FROM [表名称];(注意若是猎命需要空格,需要使用双引号括起)

 


 

常用函数

 

FORMATfunctionint):格式化显示计算结果,function函数调用结果+int位精度(小数点后几位);

 

CONCATstr1,str2,...):连接字符串

 


 


 

4.处理日期

 

日期格式为”1999-01-01”,共计八位,可以进行比较,例如使用语句:

 

SELECT * FROM event WHERE date >=”1999-01-01”,表示日期在此日期之后的数据被查找出来

 

1.常用函数

 

YEAR(日期):显示日期的年份;

 

MONTH(日期):显示日期的月份;

 

DAYOFMONTH(日期):显示日期的日子;

 


 

可以通过结合MONTH()与DAYOFMONTH()来确定具体筛选的日期,即 MONTHdate=var1AND DAYOFMONTHdate=var2;确定月日分别为var1var2的;

 


 

CURRENT_DATE:获取当前日期;

 

TO_DAYS:转换为天数;

 

FLOOR(计算式):转换为整数,就是截去小数部分,保留整数部分;

 

DATE_ADD(日期,INTERVALint YEAR;显示在日期基础上加intYEAR的结果;

 

DATE_SUB(日期,INTERVALint YEAR;显示在日期基础上减去intYEAR的结果;

 


 


 

5.模式匹配(LIKE/NOT LIKE

 

使用正则来匹配查询结果;正则表达式元字符有:

 

%:匹配任意字符(包括空字符)

 

_:匹配任意单个字符

 


 

6.生成汇总

 

函数:

 

DISTINCT:删除查询结果中的重复行位置在SELECT关键词后,列名之前;

 

COUNT*):计算行数,若为*则统计所有结果的行数;

 

COUNT[列名]):计算所有非空的行数;

 

COUNTDISTINCT[列名]):计算所有不重复的结果数目;

 


 

可以对一个表中不同的值进行计数:使用如下语句

 

SELECT[新建名称]COUNT(*) FROM [表名称] GROUP BY [列名];通过列名下统计出现次数;

 

GROUPBY :表示聚集所有此行/列的数据进行操作)

 

HAVING:在结果已经出现时对结果进行分类筛选,因为是结果出现后的筛选,所以可以使用前面定义的结果字段;

 

例如:GRUOPBY state HAVING count>1 ORDER BY count DESC;

 


 

汇总函数总结:

 

COUNT();MIN(),MAX(),SUM(),AVG();分别为计数,最小,最大,求和,平均值;

 

 

 


 

多模式查询语句:

 

LEFTJOIN:从MySQL连接每一行取出一个结果组成一个输出计入总表列在最Left的位置,此语句放置在FROM[表名称],语法为LEFTJOIN [列名]ON [条件]

 

建立表的实例(别名):[表名]AS [别名]

 


 


 


 


 


 


 


 


 


 


 


 


 


 


 

注意:

 

1.一条命令的完成以分号;结尾;

 

2.查询的语句不区分大小写,但是为了区分,使用全部大写表示;

 

3.USE语句可以不使用结束符(就是分号),还用HELP语句也是如此,当然加上分号也没有问题;

 

4.数据库mysql保存着MySQL的访问权限的授权表;

 

5.列名在MySQL中不区分大小写;