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 子句后可以同时出现多个表。多个表会横向叠加到一起,而数据会形成一个笛卡尔积 就是下面的意思 --如: 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; (编辑:通辽站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |