CREATE table `kecheng`(k_id int,day VARCHAR(20) not null DEFAULT '',k_name VARCHAR(20) not null DEFAULT '',morning VARCHAR(20) ,afternoon VARCHAR(20),PRIMARY KEY (`k_id`))INSERT into kecheng VALUES(1,'周一','语文','有课','有课');INSERT into kecheng VALUES(2,'周一','数学',NULL,'有课');INSERT into kecheng VALUES(3,'周三','语文','有课','有课');INSERT into kecheng VALUES(4,'周三','数学',NULL,'有课');INSERT into kecheng VALUES(5,'周三','英语',NULL,'有课');INSERT into kecheng VALUES(6,'周五','英语',NULL,NULL);

union all:不去重,将2个表连接起来union:去重,将2个表连接起来
1.查询当前所有数据库:show DATABASEs2.打开指定的库:use+ 库名3.查看当前库的所有表:show TABLES4.查看其它库的所有表:show TABLES from 库名5.创建表:CREATE table 表名(列名 列类型,列名 列类型,....PRIMARY KEY (`列名`))6.查看表结构:DESC 表名7.查看服务器版本:方式1:登入到MySQL:SELECT VERSION()方式2:MySQL--versionCREATE DATABASE 数据库名删除数据库:drop database <数据库名>
语法规范1.不区分大小写,但建议关键字大写,表明,列名小写2.每条命令用分号结尾3.每条命令很长的话,分行写4.注释:单行注释:#注释文字 -- 注释文字 多行注释:/*注释文字 */创建 MySql 的表时,表名和字段名外面的符号 ` 不是单引号,而是英文输入法状态下的反单引号,也就是键盘左上角 esc 按键下面的那一个 ~ 按键,坑惨了。反引号是为了区分 MySql 关键字与普通字符而引入的符号,一般的,表名与字段名都使用反引号。select * : 返回所有记录limit N : 返回 N 条记录offset M : 跳过 M 条记录, 默认 M=0, 单独使用似乎不起作用limit N,M : 相当于 limit M offset N , 从第 N 条记录开始, 返回 M 条记录
SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset解析:LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。mysql> SELECT * FROM table LIMIT 5,10; // 检索记录行 6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last. //如果只给定一个参数,它表示返回最大的记录行数目: mysql> SELECT * FROM table LIMIT 5; //检索前 5 个记录行 //换句话说,LIMIT n 等价于 LIMIT 0,n
为了处理这种情况,MySQL提供了三大运算符: IS NULL: 当列的值是 NULL,此运算符返回 true。 IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。 <=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值 。在 MySQL 中,NULL 值与任何其它值的比较(即使是 NULL)永远返回 NULL,即 NULL = NULL 返回 NULL 。MySQL 中处理 NULL 使用 IS NULL 和 IS NOT NULL 运算符。