加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_宿迁站长网 (https://www.0527zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql 语句块语法_MySQL

发布时间:2022-11-25 21:31:42 所属栏目:MySql教程 来源:互联网
导读: MySQL常用的语句语法
注意:1、 | 符号用来指出几个选中中的一个,因此NULL | NOT NULL 表示给出null 或 not null
2、包含在方括号中的关键字或子句是可选的(如 [like this])3、既没有列出

MySQL常用的语句语法

注意:1、 | 符号用来指出几个选中中的一个,因此NULL | NOT NULL 表示给出null 或 not null

2、包含在方括号中的关键字或子句是可选的(如 [like this])3、既没有列出所有的MySQL语句,也没有列出每一条子句和选项

4、大写的表示 MySQL语法关键字

一、命令行指令:

1、启动MySQL

net start mysql

2、连接与断开服务器

mysql -h 地址 -P 端口 -u 用户名 -p 密码

二、数据库操作

1、查看当前数据库

select database();

2、显示当前时间、用户名,数据库版本

select now(),user(),version();

3、创建库

create database [if not exists] 数据库名 数据库选项

其中数据库选项有

--选择字符集

CHARACTER SETcharset_name--校对规则

COLLATE collation_name

4、查看已有库

show databases[like 'pattern']

5、查看当前库信息

show create database 数据库名

6、修改库的选项信息

alter database 数据库名选项信息

7、删除库

drop database[if exists] 数据库名

三、表操作

1、CREATE TABLE

create table 用于创建新数据库表,更新已存在的表结构使用 alter table ,constraints 表示约束

CREATE TABLEtable_name

(column datatype [NULL | NOT NULL] [CONSTRAINTS],column datatype [NULL | NOT NULL] [CONSTRAINTS],

···

);

相对复杂的

create [temporary] table [if not exists] [库名.] 表名 (表的结构定义)[表选项]

其中 temporary 表示临时表,会话结束时表自动消失

注意:

a、每个字段必须要有数据类型,最后一个字段后不能有逗号

b、对于字段的定义:

字段名 数据类型 [NOT NULL|NULL] [DEFAULT default_value][AUTO_INCREMENT] [UNIQUE [KEY]|[PRIMARY] KEY] [COMMENT 'string']

c、表选项:

字符集

CHARSET = charset_name

如果表没设定,使用数据库字符集

存储引擎

ENGINE = engine_name

表在管理数据时,往往采用不同的数据结构,结构不同会导致处理方式、提供特性操作等也不同

常见的存储引擎:InnDB、MyISAM、Memory/Heap、BDB、Merge、Example、CSV、MaxDB、Archive

不同的存储引擎在保存表的结构和数据时常采用不同的方式

MyISAM 表文件含义: .frm 表定义, .MYD 表数据, .MYI 表索引

InnoDB 表文件含义: .frm 表定义、表空间数据和日志文件

--显示存储引擎的状态信息

SHOW ENGINES--显示存储引擎的日志或状态信息

SHOW ENGINES 引擎名 {LOGS| STATUS}

2、查看所有表

SHOW TABLES[LIKE 'pattern']SHOW TABLESFROM 表名

3、查看表结构

SHOW CREATE TABLE表名DESC 表名 / DESCRIBE 表名 / EXPLAIN 表名 /

SHOW COLUMNS FROM 表名 [LIKE 'pattern']SHOWTABLE STATUS [FROM db_name] [LIKE 'pattern']

4、ALTER TABLE

alter table 用来更新已存在表的模式,为了创建新表,应该使用create table,constrains 表示约束

ALTER TABLEtablename

(ADD column datatype [NULL | NOT NULL] [CONSTRAINTS],CHANGE column columns datatype [NULL| NOT NULL] [CONSTRAINTS],DROP column,

······

);

a、修改表本身选项

ALTER TABLE 表名 表名的选项

b、对表进行重命名

RENAME TABLE 原表名 TO 新表名

c、修改表的字段结构

ALTER TABLE 表名 操作名

有如下操作名

--增加字段

ADD [COLUMN]字段名--创建主键

ADD PRIMARY KEY(字段名)--创建唯一索引

ADD UNIQUE [索引名](字段名)--创建普通索引

ADD INDEX [索引名](字段名)--删除字段

DROP [COLUMN]字段名--支持对字段属性进行修改

MODIFY [COLUMN]字段名 字段属性--支持对字段名进行修改

CHANGE [COLUMN]原字段名 新字段名 字段属性--删除主键

DROP PRIMARY KEY

--删除索引

DROP INDEX索引名--删除外键

DROP FOREING KEY 外键

5、删除表

DROP TABLE [if exists] 表名 ...

6、清空表数据

TRUNCATE [TABLE] 表名

7、复制表结构

CREATE TABLE 表名 LIKE 要复制的表名

8、复制表结构和数据

CREATE TABLE 表名 [AS] SELECT * FROM 要复制的表名

四、数据操作

1、INSERT

insert 给表增加一行mysql语句,或多行

INSERT INTO table_name [(column,···)]

VALUES(values,···);--INSERT INTOtable_name[(column,···)]

VALUES(values,···),

(values,···),

···

(values,···);

insert select 插入select 的结果到一个表

INSERT INTO table_name [(columns,···)]

SELECT columns,··· FROMtable_name,···[WHERE ···];

注意:

如果要插入的值列表包含所有字段并且顺序一致,则可以省略字段列表,

可以同时插入多条记录

字段列表可以用 “*”代替表示所有字段

2、DELETE

delete 从表中删除一行或多行

DELETE FROM table_name [WHERE ···] ;

没有条件子句,会删除所有数据

3、UPDATE

update 更新表中一行或多行

UPDATE table_name SET column_name =value,···[WHERE ···];

五、字符集编码

MySQL,数据库,表,字段均可设置编码

--数据编码与客户端编码不需一致--查看所有字符集编码项

SHOW VARIABLES LIKE 'character_set_%'

--客户端向服务器发送数据时使用的编码

character_set_client--服务器端将结果返回给客户端时使用的编码

character_set_results--连接层编码

character_set_connection

注意:

--设置编码

SETNAMES GBK;--相当于完成以下三个设置

SET 变量名 =变量值

setcharacter_set_client=gbk;

setcharacter_set_results=gbk;

setcharacter_set_connection= gbk;

六、查询语句

1、SELECT

select用于从一个或多个表(视图)中 检索数据

SELECT columns_name, ··· FROMtable_name, ···[WHERE ···],[UNION ···],[GROUP BY ···],[HAVING ···],[ORDER BY ···];

详解:

select [all | distinct] select_expr from ->where->group by[合计函数] ->having->order by ->limit

其中

1.1、select_expr

a、计算公式、函数调用、字段也是表达式

如:select 12+11,now(),name from tb_obge;

b、使用as 关键字为每个列设定别名,适用于简化列标识,避免多个列标识符重复。

如:select sheng_shi_xian as address from tb;

1.2、 from 子句

用于标识查询来源

a、使用 as 关键字为表起别名

--列如

select * from tb_obge1 as t1,tb_obge2 as t2;

b、from 子句后可以同时出现多个表。多个表会横向叠加到一起,而数据会形成一个笛卡尔积

就是下面的意思

7283eac720c13fa98af9e255087ff3fd.png

--如:

select * from tb_R,tb_S;

c、where 子句

用于从from 中获得的数据源中进行筛选。1为真,0为假,表达式由运算符和运算数组成

d、group by子句

group by 字段/ 别名 [排序方式]

分组后会进行排序,升序:ASC,降序 DESC

与group by子句常配合使用的聚合函数有--返回不同的非 NULL值数目,如count(*),count(字段)。

count

--求和

sum

--求最小值

mim--求最大值

max

--求平均值

avg

--返回带有来自一组的连接的非NULL 值的字符串结果,为组内字符串连接

group_concat

e、having 子句(条件子句)

与where 功能、用法相同、只是执行时机不同。where在开始时执行数据检测,对原数据进行过滤。having 对筛选出的结果进行再次过滤,where 不可以使用聚合函数。一般需要用到聚合函数才会用having。SQL 标准要求having子句必须引用group by 子句中的列或用于聚合函数中的列。

f、order by 子句(排序子句)

--支持对多个字段排序,升序ASC ,降序 DESC

order by 排序字段/别名排序方式[,排序字段/别名排序方式]...

g、limit 子句(限制结果集 子句)

仅对处理好的结果进行数量限制。将处理好的结果看作是一个集合,按照记录的现后顺序,索引从 0 开始

--limit 获取条数 其中,省略第一个参数,表示索引从 0 开始。

limit 起始位置,获取条数

h、distinct 选项

用于去除重复记录

2、多表联结查询

2.1、UNION

建议对每个select查询加上小括号。需要各select 查询的字段数量一样,即每个select 查询的字段列表(数量、类型)应一致,因为结果中的字段名以第一条select 语句为准。

--将多个select 查询的结果组合成一个结果集合

select ...union [ALL | DISTINCT] selelct ...

默认为distinct 方式,即所有返回的行都是唯一的。

2.2、子查询(需要用括号括起来)

a、from

from 后要求是一个表,必须给子查询结果取个别名,以简化每个查询内的条件。

--如:

select * from (select * from tb where id>0) as subfrom where id>1;

b、where

子查询返回一个值,不需要给子查询取别名

--如:

select * from tb where age =(select max(age) from tb)

c、列子查询

使用in 或 not in 子查询,查询结果返回单列

使用exists 和 not exists条件,返回1或0 ,常用于判断

--如:

select column1 from tb1 where exists (select * from tb2);

2.3、join 连接查询

将多个表的字段进行连接,可以指定连接条件。

a、内连接(inner join)

默认就是内连接,可省略inner。

只有数据存在时才能发送连接请求,即连接结果不能出现空行。

ON 表示连接条件,其条件表达式与 where 类似。

b、交叉连接(cross join)

没有条件的内连接。

--如:

select * from tb1 cross join tb2;

c、外连接(outer join)

如果数据不存在,也会出现在连接的结果中。

主要分为:左外连接和右外连接

左外连接(left outer join): 如果数据不存在,左表记录会出现,而右表以null 填充

右外连接(right outer join):如果数据不存在,右表记录会出现,而左表以null 填充

七、其他常用语句

1、CREATE INDEX

create index 用于在一个或多个列上创建索引

CREATE INDEX indexname ON tablename(column [ASC | DESC],·······)

2、CREATE PROCEDURE

create procedure 用于创建存储过程,常和delimiter一块用,parameters 表示参数列表

CREATE PROCEDURE procedure_name([parameters])BEGIN······END;

3、CREATE USER

create user 用于向系统中添加新的用户账号

CREATE USER user_name [@hostname] [IDENTIFIED BY [PASSWORD] 'password'];

4、CREATE VIEW

create view 用来创建一个或多个表上的新视图

CREATE [OR REPLACE] VIEWview_nameAS

select ··· ;

5、DROP

drop 永久地删除数据库对象(表、视图、索引、存储过程,触发器,用户等)

DROP DATABASE [TABLE | VIEW | INDEX | PROCEDURE | TRIGGER | USER] item_name;

6、事务

6.1、COMMIT

commit 用来将事务处理写到数据库

COMMIT ;

6.2、ROLLBACK

rollback 用于撤销一个事务处理块

ROLLBACK [TO savepoint_name];

6.3、SAVEPOINT

savepoint 为使用rollback 语句设立保留点

SAVEPOINT sql;

6.4、START TRANSACTION

start transaction 表示一个新的事务处理开始

START TRANSACTION;

(编辑:云计算网_宿迁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!