SELECT*FROM articles WHERE id >= (SELECT id FROM articles WHERE category_id =123ORDERBY id LIMIT 10000, 1) LIMIT 10
简单查询语句
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/*websites 表名 NAME alexa url country 字段*/ SELECT*FROM websites; /* 查询表所有数据 */ SELECT NAME FROM websites; /* 查询表字段数据 */ SELECT*FROM websites where name = "广西"; /* 查询表字段下条件数据 */ SELECT*from websites where name like "_o%"; /* 模糊查询表下数据* / SELECT* FROM websites where id BETWEEN "1" AND "5"; /* 查询表下字段范围数据 */ SELECT*FROM websites WHERE name in ("广西","百度"); /* 查询表字段下固定条件数据 */ SELECTDISTINCT country FROM Websites; /* 查询去重值 */ SELECT*FROM Websites WHERE country = "CN" AND alexa >50; /*查询表下范围条件数据 */ SELECT*FROM Websites WHERE country = "USA" OR country="sh"; /* 查询表下条件不同值 */ SELECT*FROM Websites ORDERBYdesc alexa; /* 查询表下值排序结果 */ SELECT*FROM Websites ORDERBY alexa DESC; /* 查询表下排序结果降序ESC升序 */ SELECT*FROM Websites LIMIT 2; /* 查询表下范围数据 */ SELECT name as zzz from websites; /*别名查询表下数据 */
6.Where语句
MySQL 的 WHERE 子句的字符串比较是不区分大小写的。 你可以使用 BINARY 关键字来设定 WHERE 子句的字符串比较是区分大小写的
```sql //子语句的执行顺序 FROM, including JOINs –>where –>groupby–>having–>WINDOW functions–>SELECT–>DISTINC–>UNIONT–>orderby–> LIMIT andOFFSET
7.UPDATE更新数据
1 2 3 4 5
//例子 update students set name="小明", age=19where tel="13288097888"; update students set age=age+1where id=5; UPDATE runoob_tbl SET runoob_title = REPLACE(runoob_title, 'C++', 'Python') where runoob_id =3;//和replace函数配合使用
//例子 SELECT*from runoob_tbl WHERE runoob_author LIKE'%COM'; '%a'//以a结尾的数据 'a%'//以a开头的数据 '%a%'//含有a的数据 '_a_'//三位且中间字母是a的 '_a'//两位且结尾字母是a的 'a_'//两位且开头字母是a的 SELECT*FROM position WHERE name LIKE'%java%'; ```*
```sql SELECT 列名称 FROM 表名称 UNIONSELECT 列名称 FROM 表名称 ORDERBY 列名称; SELECT 列名称 FROM 表名称 UNIONALLSELECT 列名称 FROM 表名称 ORDERBY 列名称; SELECT country FROM Websites UNIONALLSELECT country FROM apps ORDERBY country;
{n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
1 2 3 4 5 6 7 8
//查找name字段中以'st'为开头的所有数据: mysql>SELECT name FROM person_tbl WHERE name REGEXP '^st'; //查找name字段中以'ok'为结尾的所有数据: mysql>SELECT name FROM person_tbl WHERE name REGEXP 'ok$'; //查找name字段中包含'mar'字符串的所有数据: mysql>SELECT name FROM person_tbl WHERE name REGEXP 'mar'; //查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据: mysql>SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
16.事务
在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
事务用来管理 insert,update,delete 语句
原子性;一致性;隔离性;持久性
在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。因此要显式地开启一个事务务须使用命令 BEGIN 或 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,用来禁止使用当前会话的自动提交。
//使用了 ALTER 命令及 DROP 子句来删除以上创建表的 i 字段 ALTERTABLE testalter_tbl DROP i; //使用 ADD 子句来向数据表中添加列 ALTERTABLE testalter_tbl ADD i INT; SHOW COLUMNS FROM testalter_tbl; ;//查看表结构 //如果你需要指定新增字段的位置,可以使用MySQL提供的关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)。 ALTERTABLE testalter_tbl DROP i; ALTERTABLE testalter_tbl ADD i INTFIRST; ALTERTABLE testalter_tbl DROP i; ALTERTABLE testalter_tbl ADD i INT AFTER c; //需要修改字段类型及名称, 你可以在ALTER命令中使用`MODIFY`或 `CHANGE`子句 。 ALTERTABLE testalter_tbl MODIFY c CHAR(10); //使用 CHANGE 子句, 语法有很大的不同。 在 CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型 ALTERTABLE testalter_tbl CHANGE i j BIGINT; //修改字段时,你可以指定是否包含值或者是否设置默认值 ALTERTABLE testalter_tbl MODIFY j BIGINTNOTNULLDEFAULT100;//如果你不设置默认值,MySQL会自动设置该字段默认为 NULL。 //可以使用 ALTER 来修改字段的默认值 ALTERTABLE testalter_tbl ALTER i SETDEFAULT1000; //可以使用 ALTER 命令及 DROP子句来删除字段的默认值;删除之后就变成NULL ALTERTABLE testalter_tbl ALTER i DROPDEFAULT; //修改数据表类型,可以使用 ALTER 命令及 TYPE 子句来完成。尝试以下实例,我们将表 testalter_tbl 的类型修改为 MYISAM ALTERTABLE testalter_tbl ENGINE = MYISAM; //查看数据表类型 SHOWTABLE STATUS LIKE'testalter_tbl'\G //如果需要修改数据表的名称,可以在 ALTERTABLE 语句中使用 RENAME 子句来实现。 ALTERTABLE testalter_tbl RENAME TO alter_tbl; //删除外键约束:keyName是外键别名 altertable tableName dropforeign key keyName;
//创建普通索引 CREATE INDEX indexName ON table_name (column_name) //修改表结构(添加索引) ALTERtable tableName ADD INDEX indexName(columnName) //创建表的时候直接指定索引 CREATETABLE mytable( ID INTNOTNULL, username VARCHAR(16) NOTNULL, INDEX [indexName] (username(length)) ); //删除索引 DROP INDEX [indexName] ON mytable; //创建唯一索引。索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一 CREATEUNIQUE INDEX indexName ON mytable(username(length)) //修改表结构 ALTERtable mytable ADDUNIQUE [indexName] (username(length)) //创建表的时候直接指定 CREATETABLE mytable( ID INTNOTNULL, username VARCHAR(16) NOTNULL, UNIQUE [indexName] (username(length)) );