MySQL的基本操作命令
MySQL不区分大小写
1、创建数据库
CREATE DATABASE dbname;
CREATE DATABASE IF NOT EXISTS dbname; //先判断是否存在再创建
2、删除数据库
DROP DATABASE dbname; //删除表的结构及所有数据,把所占空间完全释放
3、选择数据库
USE dbname;
4、常见数据类型
(1)数值型
INT/INTEGER:整型 32位
FLOAT:单精度浮点型 32位
DOUBLE:双精度浮点型 64位
(2)时间日期型
DATE:YYYY-MM-DD 日期值
TIME:HH:MM:SS 时间值或持续时间
YEAR:YYYY 年份
DATATIME:YYYY-MM-DD HH:MM:SS 时间日期
(3)字符串型
CHAR:定长字符串
VARCHAR:变长字符串
TEXT:长文本数据
注:
(1) MySQL5.0以上版本,utf8中一个汉字3个字节,GBK中一个汉字2个字节
(2) 文本长度超过255个字节只能用varchar或者text
5、创建数据库表
CREATE TABLE IF NOT EXISTS tablename (
column_name1 column_type1,
column_name2 column_type2,
......,
column_namen column_typen, //第n列
PRIMARY KEY(column_name) //最后一行没有逗号”,”
)
约束条件:
NOT NULL:非空
AUTO_INCREMENT:自增,通常用于主键
PRIMARY KEY:定义主键
ENGINE:存储引擎
CHARSET:设置编码
Eg:
CREATE TABLE test(
id int(32) NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
sex CHAR(4) NOT NULL,
PRIMAEY KEY(id)
)ENGINE = InnoDB CHARSET = utf8;
6、删除数据表
DROP TABLE dbname;
7、插入数据
INSERT INTO tablename (field1,field2,.....,fieldN) VALUES (value1,value2,......,valueN);
//一次性添加多条数据
INSERT INTO tablename (field1,field2,.....,fieldN) VALUES (valueA1,valueA2,......,valueAN),
(value1,value2,......,valueN),(value1,value2,......,valueN)......; //注意符号
//按照规定的列进行添加
INSERT INTO tablename VALUES (value1,value2,......,valueN);
注:如果数据是字符型,必须使用双引号或者单引号
8、查询数据
SELECT column_name1,column_name2,.....,column_nameN FROM table_name [WHERE 条件] [LIMIT N] [OFFSET M]
使用*来代替column_name,代表查询所有
查询语句中可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
SELECT 命令可以读取一条或者多条记录。
WHERE 语句来包含任何条件。
LIMIT 属性来设定返回的记录数。
OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0
9、WHERE
常用的操作符:
= ,> ,< ,>= ,<= ,!=(也作”<>”)
可以在WHERE 中指定任何条件
可以使用 AND 或者 OR 来指定一个或多个条件
可以使用在SELECT 和 UPDATE 中
类似于if 条件
10、更新
UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE 条件]
注:
可以同时更新一个或多个字段。
可以在 WHERE 子句中指定任何条件。
可以在一个单独表中同时更新数据。
11、删除
DELETE FROM table_name [WHERE 条件]
如果没有指定WHERE子句,表中的所有记录都要被删除。
可以在单表中一次删除整个表。
12、LIKE
SELECT field1,field2,...,filedN FROM table_name WHERE field1 LIKE 条件1
可以使用LIKE来代替”=”
LIKE通常和 % 共同使用
可以使用AND 或者OR 来指定一个或多个条件
可以在DELETE或者UOPDATE 中来使用WHERE.....LIKE....来指定条件
模糊查询
‘%a’ //以a结尾的数据
‘a%’ //以a开头的数据
‘%a%’ //包含a的数据
‘_a_’ //三位且中间是a的数据
‘_a’ //两位且以a结尾的数据
‘a_’ //两位且以a开头的数据
13、UNION 去重
连接两个以上的SELECT语句的结果组合到一个结果集合中,并去除重复的结果。
SELECT column_name1,....,column_nameN FROM table1
UNION [ALL | DISTINCT]
SELECT column_name1,....,column_nameN FROM table2
ALL:不去除重复结果
DISTINCT:删除重复的结果集。默认情况下,结果集是去除了重复结果的。
14、ORDER BY 排序
SELECT filed1,filed2,.....filedN FROM table1,table2.... ORDER BY filed1[ASC | DESC],[filed2 [ASC | DESC]].....
可以设定多个字段来排序
ASC:升序 默认
DESC:降序
可以和WHERE...LIKE...连用
15、GROUP BY 分组
16、连接
和ON搭配
内连接/等值连接:INNER JOIN(也可以单独使用JOIN)
查询两个表共有的部分
Eg:
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
左连接:LEFT JOIN
以左边的表为基准,读取左边表的全部数据,即便右边表没有对应数据。
右连接:RIGHT JOIN
以右边的表为基准,读取右边表的全部数据,即便左边表没有对应数据。
17、NULL值处理
IS NULL:当列的值为NULL时,返回true
IS NOT NULL:当列的值不为NULL时,返回true。
<=>:当比较的两个值相等或者都为NULL时,返回true。
判断是否为NULL值时,不能使用=NULL 或者 !=NULL来判断