sql语句语法

13.1. 数据定义语句

    13.1.1. ALTER DATABASE语法
    13.1.2. ALTER TABLE语法
    13.1.3. CREATE DATABASE语法
    13.1.4. CREATE INDEX语法
    13.1.5. CREATE TABLE语法
    13.1.6. DROP DATABASE语法
    13.1.7. DROP INDEX语法
    13.1.8. DROP TABLE语法
    13.1.9. RENAME TABLE语法

13.2. 数据操作语句

    13.2.1. DELETE语法
    13.2.2. DO语法
    13.2.3. HANDLER语法
    13.2.4. INSERT语法
    13.2.5. LOAD DATA INFILE语法
    13.2.6. REPLACE语法
    13.2.7. SELECT语法
    13.2.8. Subquery语法
    13.2.9. TRUNCATE语法
    13.2.10. UPDATE语法

13.3. MySQL实用工具语句

    13.3.1. DESCRIBE语法(获取有关列的信息)
    13.3.2. USE语法

13.4. MySQL事务处理和锁定语句

    13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法
    13.4.2. 不能回滚的语句
    13.4.3. 会造成隐式提交的语句
    13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法
    13.4.5. LOCK TABLES和UNLOCK TABLES语法
    13.4.6. SET TRANSACTION语法
    13.4.7. XA事务

13.5. 数据库管理语句

    13.5.1. 账户管理语句
    13.5.2. 表维护语句
    13.5.3. SET语法
    13.5.4. SHOW语法
    13.5.5. 其它管理语句

13.6. 复制语句

    13.6.1. 用于控制主服务器的SQL语句
    13.6.2. 用于控制从服务器的SQL语句

13.7. 用于预处理语句的SQL语法

==============================================================================================
alter database  //用于更改数据库的全局特性
alter table    //用于更改原有表的结构
               //您可以增加或删减列,创建或取消索引,更改原有列的类型,或重新命名列或表。您还可以更改表的评注和表的类型

mysql> alter table shop add insert_string char(5);  //给表添加列
Query OK, 0 rows affected (0.95 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> describe shop;  //查看表结构
+---------------+--------------------------+------+-----+---------+-------+
| Field         | Type                     | Null | Key | Default | Extra |
+---------------+--------------------------+------+-----+---------+-------+
| article       | int(4) unsigned zerofill | NO   | PRI | 0000    |       |
| dealer        | char(20)                 | NO   | PRI |         |       |
| price         | double(16,2)             | NO   |     | 0.00    |       |
| column_name   | char(4)                  | YES  |     | NULL    |       |
| insert_string | char(5)                  | YES  |     | NULL    |       |
+---------------+--------------------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

mysql> alter table shop  drop column column_name;     //删除指定列/字段
Query OK, 0 rows affected (1.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> describe shop;
+---------------+--------------------------+------+-----+---------+-------+
| Field         | Type                     | Null | Key | Default | Extra |
+---------------+--------------------------+------+-----+---------+-------+
| article       | int(4) unsigned zerofill | NO   | PRI | 0000    |       |
| dealer        | char(20)                 | NO   | PRI |         |       |
| price         | double(16,2)             | NO   |     | 0.00    |       |
| insert_string | char(5)                  | YES  |     | NULL    |       |
+---------------+--------------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

//modify
mysql> alter table shop modify  column insert_string int(4) unsigned zerofill;    //改变表的字段数据类型
Query OK, 7 rows affected (1.14 sec)
Records: 7  Duplicates: 0  Warnings: 0

mysql> describe shop;
+---------------+--------------------------+------+-----+---------+-------+
| Field         | Type                     | Null | Key | Default | Extra |
+---------------+--------------------------+------+-----+---------+-------+
| article       | int(4) unsigned zerofill | NO   | PRI | 0000    |       |
| dealer        | char(20)                 | NO   | PRI |         |       |
| price         | double(16,2)             | NO   |     | 0.00    |       |
| insert_string | int(4) unsigned zerofill | YES  |     | NULL    |       |
+---------------+--------------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> show tables;    //对表重命名
+----------------+
| Tables_in_test |
+----------------+
| animals        |
| event          |
| pet            |
| shop           |
| t1             |
+----------------+
5 rows in set (0.00 sec)

mysql> alter table t1 rename t2;    //alter table t1 rename t2对表重命名
Query OK, 0 rows affected (0.45 sec)

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| animals        |
| event          |
| pet            |
| shop           |
| t2             |
+----------------+
5 rows in set (0.02 sec)

mysql> alter table t2 add index (d) , add index (a);  //在列d和列a中添加索引
Query OK, 0 rows affected (0.81 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> describe t2;
+-------+--------------------------+------+-----+-------------------+-----------------------------+
| Field | Type                     | Null | Key | Default           | Extra                       |
+-------+--------------------------+------+-----+-------------------+-----------------------------+
| year  | year(4)                  | YES  |     | NULL              |                             |
| month | int(2) unsigned zerofill | YES  |     | NULL              |                             |
| day   | int(2) unsigned zerofill | YES  |     | NULL              |                             |
| d     | timestamp                | NO   | MUL | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| a     | char(4)                  | YES  | MUL | NULL              |                             |
+-------+--------------------------+------+-----+-------------------+-----------------------------+
5 rows in set (0.00 sec)

//添加一个新的AUTO_INCREMENT整数列,名称为c
//给数据加序号
mysql> alter table t2 add c int unsigned not null auto_increment,
    -> add primary key(c);
Query OK, 0 rows affected (1.12 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> describe t2;
+-------+--------------------------+------+-----+-------------------+-----------------------------+
| Field | Type                     | Null | Key | Default           | Extra                       |
+-------+--------------------------+------+-----+-------------------+-----------------------------+
| year  | year(4)                  | YES  |     | NULL              |                             |
| month | int(2) unsigned zerofill | YES  |     | NULL              |                             |
| day   | int(2) unsigned zerofill | YES  |     | NULL              |                             |
| d     | timestamp                | NO   | MUL | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| a     | char(4)                  | YES  | MUL | NULL              |                             |
| c     | int(10) unsigned         | NO   | PRI | NULL              | auto_increment              |
+-------+--------------------------+------+-----+-------------------+-----------------------------+
6 rows in set (0.00 sec)

//CREATE DATABASE用于创建数据库,并进行命名。
//如果要使用CREATE DATABASE,您需要获得数据库CREATE权限

//type:
 TINYINT[(length)] [UNSIGNED] [ZEROFILL]

  | SMALLINT[(length)] [UNSIGNED] [ZEROFILL]

  | MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]

  | INT[(length)] [UNSIGNED] [ZEROFILL]

  | INTEGER[(length)] [UNSIGNED] [ZEROFILL]

  | BIGINT[(length)] [UNSIGNED] [ZEROFILL]

  | REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]

  | DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]

  | FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]

  | DECIMAL(length,decimals) [UNSIGNED] [ZEROFILL]

  | NUMERIC(length,decimals) [UNSIGNED] [ZEROFILL]

  | DATE

  | TIME

  | TIMESTAMP

  | DATETIME

  | CHAR(length) [BINARY | ASCII | UNICODE]

  | VARCHAR(length) [BINARY]

  | TINYBLOB

  | BLOB

  | MEDIUMBLOB

  | LONGBLOB

  | TINYTEXT [BINARY]

  | TEXT [BINARY]

  | MEDIUMTEXT [BINARY]

  | LONGTEXT [BINARY]

  | ENUM(value1,value2,value3,...)

  | SET(value1,value2,value3,...)

// DROP 语法

mysql> drop table animals;  //删除表
Query OK, 0 rows affected (0.50 sec)

DROP DATABASE database_name  //删除数据库
truncate table table_nam   //清空表中数据,表不删除

//RENAME TABLE语法
mysql> rename table t2 to t1;    //对表重命名
Query OK, 0 rows affected (0.18 sec)

//delete 语句

mysql> select * from t1;
+------+-------+------+---------------------+------+---+
| year | month | day  | d                   | a    | c |
+------+-------+------+---------------------+------+---+
| 2000 |    01 |   01 | 2016-11-05 12:14:53 | NULL | 1 |
| 2000 |    02 |   20 | 2016-11-05 12:14:53 | NULL | 2 |
| 2000 |    01 |   30 | 2016-11-05 12:14:53 | NULL | 3 |
| 2000 |    02 |   02 | 2016-11-05 12:14:53 | NULL | 4 |
| 2000 |    02 |   23 | 2016-11-05 12:14:53 | NULL | 5 |
| 2000 |    02 |   23 | 2016-11-05 12:14:53 | NULL | 6 |
+------+-------+------+---------------------+------+---+
6 rows in set (0.00 sec)

mysql> delete from t1 where c=6;    //从t1表中删除c=6的数据
Query OK, 1 row affected (0.42 sec)

mysql> select * from t1;
+------+-------+------+---------------------+------+---+
| year | month | day  | d                   | a    | c |
+------+-------+------+---------------------+------+---+
| 2000 |    01 |   01 | 2016-11-05 12:14:53 | NULL | 1 |
| 2000 |    02 |   20 | 2016-11-05 12:14:53 | NULL | 2 |
| 2000 |    01 |   30 | 2016-11-05 12:14:53 | NULL | 3 |
| 2000 |    02 |   02 | 2016-11-05 12:14:53 | NULL | 4 |
| 2000 |    02 |   23 | 2016-11-05 12:14:53 | NULL | 5 |
+------+-------+------+---------------------+------+---+
5 rows in set (0.00 sec)

//replace 语法
mysql> update t1 set day=replace(day,23,50);    //23替换为50
Query OK, 1 row affected (0.41 sec)
Rows matched: 5  Changed: 1  Warnings: 0

mysql> select * from t1;
+------+-------+------+---------------------+------+---+
| year | month | day  | d                   | a    | c |
+------+-------+------+---------------------+------+---+
| 2000 |    01 |   01 | 2016-11-05 12:14:53 | NULL | 1 |
| 2000 |    02 |   20 | 2016-11-05 12:14:53 | NULL | 2 |
| 2000 |    01 |   30 | 2016-11-05 12:14:53 | NULL | 3 |
| 2000 |    02 |   02 | 2016-11-05 12:14:53 | NULL | 4 |
| 2000 |    02 |   50 | 2016-11-05 15:54:03 | NULL | 5 |
+------+-------+------+---------------------+------+---+
5 rows in set (0.00 sec)

select  *  from  t1 where column=(select column from t12)  //子查询结构

mysql> select *  from t4;
+------+
| s1   |
+------+
|    2 |
|    5 |
|    4 |
|    3 |
|    4 |
+------+
5 rows in set (0.00 sec)

mysql> select *  from t3;
+------+
| s1   |
+------+
|    5 |
+------+
1 row in set (0.00 sec)

mysql> select s1 from t3 where s1=(select max(s1) from t4);   //使用子查询进行比较
+------+
| s1   |
+------+
|    5 |
+------+
1 row in set (0.00 sec)

//表t1中的有些行含有的值会在给定的列中出现两次。该例子可以查找出所有这些
mysql> select * from t4  as t    //重命名为t
    -> where 2=(select count(*) from t3 where t3.s1=t.s1);
Empty set (0.00 sec)

//行子查询,以下2个句子等价
select * from  t1 where  (1,2) =(select s1,s2 from t2);
select * from  t1 where  row(1,2)=(select s1,s2 from t2);
//表达式(1,2)和ROW(1,2)有时被称为行构造符
//看下面2个等价语句
select * from  t1 where (s1,s2)=(1,1,);
select * from  t1 where s1=1 and  s2=1;

//在表t1中查找同时也存在于表t2中的所有的行
select s1,s2,s3  from t1
where (s1,s2,s3) in (select s1,s2,s3 from t2);

//from 子句中的子查询
//将t11进行子查询之后,取别名为sb,再从sb中取sb1>1的数据
mysql> create table t11 (s1 int,s2 char(5),s3 float);
mysql> insert into t11 values(1,‘1‘,1.0);
mysql> insert into t11 values(2,‘2‘,2.0);

mysql> select sb1,sb2,sb3
    -> from (select s1 as sb1,s2 as sb2,s3*2 as sb3 from t11) as sb
    -> where sb1>1;
+------+------+------+
| sb1  | sb2  | sb3  |
+------+------+------+
|    2 | 2    |    4 |
+------+------+------+
1 row in set (0.00 sec)

//分类后的表的一组和的平均值
select avg(sum(s1)) from t11 group by s1

select avg(sum_s1)  from (select sum(s1) as sum_s1 from t1 group by s1 ) as t1;

select distinct t1.s1 from t1,t2 where t1.s1=t2.s2;
select * from t1 where s1 in (select s1 from t1) or s1 in(select s1 from t2)
select (select s1+5 from t1) from t2;
代替此查询
select (select s1 from t1) +5 from t2;

//把子查询作为用于早期MySQL版本的联合进行改写
select * from t1 where id in (select id from t2);
//可以改成:
select distinct t1.* from t1,t2 where t1.id=t2.id;

//not in
select * from t1 where id not in (select id from t2);
select * from t1 where not exists (select id from t2 where t1.id=t2.id);
//等价于:
select table1.* from table1 left join table2 on table1.id=table2.id  where table2.id is null;

//清空table
truncate table

//update
//把年龄列设置为比当前值多一
update persondata set age=age+1;

//对年龄列加倍,然后再进行增加
update persondata set age=age*2,age=age+1;

//create user 创建用户,可以使用其桌面客户端去创建
//drop user 取消一个账号及其权限
//rename user 对mysql账号重命名
//set password 赋予一个密码
set password=password(‘some password‘)
set password for user=password(‘some password‘)
时间: 2024-10-11 17:39:56

sql语句语法的相关文章

mysql数据库之基础SQL语句/语法

SQL是现在进入互联网工作人们的必须技能之一,下面分享自己觉得很nice的SQL基本语句,从网上找了,觉得很不错,就分享给大家!简要介绍基础语句: 1.说明:创建数据库  Create DATABASE database-name 2.说明:删除数据库  drop database dbname 3.说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7b

转载-增删改查sql语句语法

一.增:有2种方法 1.使用insert插入单行数据: 语法:insert [into] <表名> [列名] values <列值> 例:insert into Strdents (姓名,性别,出生日期) values ('王伟华','男','1983/6/15')  注意:如果省略表名,将依次插入所有列 2.使用insert,select语句将现有表中的 数据添加到已有的新表中 语法:insert into <已有的新表> <列名> select <

关系数据库常用SQL语句语法大全

创建表 语法 CREATE TABLE <表名>(<列名> <数据类型>[列级完整性约束条件] [,<列名> <数据类型>[列级完整性约束条件]]…); 列级完整性约束条件有NULL[可为空].NOT NULL[不为空].UNIQUE[唯一],可以组合使用,但是不能重复和对立关系同时存在. 示例 -- 创建学生表 CREATE TABLE Student ( Id INT NOT NULL UNIQUE PRIMARY KEY, Name VAR

explain分析sql 语句

explain分析sql 语句 语法: explain + select 语句 explain select * from xxx where xxx; 结果解释: id: SELECT 识别符. 这是 SELECT 的查询序列号 select_type PRIMARY 子查询中最外层查询 SUBQUERY 子查询内层第一个 SELECT, 结果不依赖于外部查询 DEPENDENT SUBQUERY 子查询内层第一个 SELECT, 依赖于外部查询 UNION UNION 语句中第二个 SELE

SQL语句在数据库中是如何执行的

第一步:应用程序把查询SQL语句发给服务器端执行 我们在数据层执行SQL语句时,应用程序会连接到相应的数据库服务器,把SQL语句发送给服务器处理. 第二步:服务器解析请求的SQL语句 SQL计划缓存,经常用查询分析器的朋友大概都知道这样一个事实,往往一个查询语句在第一次运行的时候需要执行特别长的时间,但是如果你马上或者在一定时间内运行同样的语句,会在很短的时间内返回查询结果.原因是: 服务器在接收到查询请求后,并不会马上去数据库查询,而是在数据库中的计划缓存中找是否有相对应的执行计划.如果存在,

SQL语句的执行过程

1.语法校验 如果在SQL计划缓存中没有对应的执行计划,服务器首先会对用户请求的SQL语句进行语法效验,如果有语法错误,服务器会结束查询操作,并用返回相应的错误信息给调用它的应用程序. 注意:此时返回的错误信息中,只会包含基本的语法错误信息,例如select 写成selec等,错误信息中如果包含一列表中本没有的列,此时服务器是不会检查出来的,因为只是语法验证,语义是否正确放在下一步进行. 2.检查语义 语法符合后,就开始验证它的语义是否正确.例如,表名.列名.存储过程等等数据库对象是否真正存在,

JDBC操作SQL语句的注释和拼接

上网浏览帖子发现一个关于SQL中的in里面的参数动态添加的问题. 通常in里面的参数通过一个子查询获得与该参数相同类型或者可互转换的类型的一个字段信息.实际中经常会用到有个数组,该数组的内容正好是作为in里面的参数列表.通过SQL拼接的方式一定能够实现,即便看起来比较繁琐. 下面是通过预编译命令和参数占位的方式来实现: String sql = "select urlid, url from f_url where url in(?)";         pstmt = conn.pr

sql语句(MySQL)

本篇源自网络,整理了sql99标准中增删改查的sql语句以及MySQL特有的语句. 数据库--MySql 数据仓库.就与我们之前学过的纯文本,properties这些技术一样.用来保存数据.并提供对数据进行增删改查的操作.我们以后做项目时,项目中的数据都是保存在数据库中的.//--------------------------------------------------------------------为什么要用数据库,数据库的特点 1>实现数据共享 2>减少数据的冗余度 3>数

转:ibatis常用16条SQL语句

1.输入参数为单个值 <delete id="com.fashionfree.stat.accesslog.deleteMemberAccessLogsBefore" parameterClass="long"> delete from MemberAccessLog where accessTimestamp = #value# </delete> <delete id="com.fashionfree.stat.acces