1.数据库基本操作
操作: | 语法: | 实例: |
创建一个在指定ip地址登录用户 | create user ‘用户名称’@’ip地址’ identified by ‘密码’; | create user ‘luobei’@’localhost’ identified by ‘123456’; |
进入MySQL并登录 | mysql -u用户名 -p密码 | mysql -uroot -p123 |
选择数据库 (使用一个数据库必须先选择他) | USE 数据库名 | USE mydb; |
显示有哪些可操作的数据库 | SHOW DATABASES; | |
显示当前数据库有哪些的表 | SHOW TABLES; | |
显示用户的安全权限 | SHOW GRANTS; | |
显示某个表的信息 (有哪些列,列的变量类型等) | DESC 表名; (DESC是SHOW COLUMNS FROM customers的一种快捷方式) | DESC person; |
清屏 | system cls |
2.检索操作
操作: | 语法: | 实例: |
检索单个列 | SELECt 列名 FROM 表名; | SELECt name FROM school; |
检索多个列 | SELECt 列名1,列名2 FROM 表名; | SELECt name,score FROM school; |
检索所有列 | SELECt * FROM 表名; | SELECt * FROM school; |
只检索不同值的列 | SELECt DISTINCT 想要不重复的某个列名 FROM 表; | SELECt DISTINCT id FROM school; |
限制返回结果不多于num行 | SELECt 列名 FROM 表名 LIMIT num; | SELECt name FROM school LIMIT 4; |
限制返回结果从第num1行开始输出,不多于num2行 | SELECt 列名 FROM 表名 LIMIT num1,num2; | SELECt name FROM school LIMIT 4,5; |
限定表或列 | SELECt 表名.列名 FROM 数据库名.表名; | SELECt school.name FROM mydb.school; |
4.排序检索数据
操作: | 语法: | 实例: |
排序并检索单个列 | SELECt 列名 FROM 表名 ORDER BY 列名; | SELECt name FROM school ORDER BY name; |
首先按列名1,当列名1相等时再按列名2排序并检索多个列 | SELECt 列名1,列名2 FROM 表名 ORDER BY 列名1,列名2; | SELECt name,score FROM school ORDER BY name,score; |
指定排序方向 (默认为升序,指定DESC关键字可以降序排序,多个排序时也可以指定某一个或多个降序) | SELECt 列名 FROM 表名 ORDER BY 列名 DESC; | SELECt name FROM school ORDER BY name DESC; |
指定排序方向 (默认为升序,指定ASC关键字可以升序排序,多个排序时也可以指定某一个或多个升序) | SELECt 列名 FROM 表名 ORDER BY 列名 ASC; | SELECt name FROM school ORDER BY name ASC; |
结合LIMIT与ORDER BY可以查找最大或最小值 | SELECt 列名 FROM 表名 ORDER BY 列名 DESC LIMIT 1; | SELECt name FROM school ORDER BY name DESC LIMIT 1; |
5.过滤数据
操作: | 语法: | 实例: |
WHERe条件过滤行 | SELECt 列名 FROM 表名 WHERe 条件; | SELECt name FROM school WHERe score >=500; |
WHERe条件操作符: (基本与java操作符一致) | ||
注:单引号用来限定字符串,与串类型的列进行比较的值需要限定引号,与数值列进行比较的值不用引号 | ||
限定列名在值1与值2之间的范围检索 | SELECt 列名 FROM 表名 WHERe 列名 BETWEEN 值1 AND 值2; | SELECt name FROM school WHERe score BETWEEN 400 AND 500; |
如果列名是空值则检索 | SELECt 列名 FROM 表名 WHERe 列名 IS NULL; | SELECt name FROM school WHERe name IS NULL; |
可以与WHERe组合的操作符: | ||
AND操作符给WHERe附加条件,检索既满足条件1也满足条件2的列 | SELECt 列名 FROM 表名 WHERe 条件1 AND 条件2; | SELECt name FROM school WHERe score >=500 AND num<10000; |
OR操作符给WHERe附加可选条件,检索满足条件1或条件2的列 | SELECt 列名 FROM 表名 WHERe 条件1 OR 条件2; | SELECt name FROM school WHERe score >=500 OR score <400; |
当将AND与OR结合使用时,AND优先级更高,SQL优先处理AND(与Java类似括号的优先级极高,组合使用操作符或运算符时尽量多使用括号,消除歧义) | ||
IN操作符限定范围,检索范围内的列 | SELECt 列名 FROM 表名 WHERe 列名 IN (范围); | SELECt * FROM work WHERe id IN (1004,1005,1006,1009); |
NOT操作符否定后跟的条件, 检索列不为空的列(注意顺序,IS NOT、NOT IN) | SELECt 列名 FROM 表名 WHERe 列名 IS NOT NULL; | SELECt name FROM school WHERe name IS NOT NULL; |
%通配符 (表示任何字符出现任意次数) 检索以jet起头的列 | SELECt 列名 FROM 表名 WHERe 列名 LIKE 'jet%' | |
_通配符 (表示任何单个字符) 检索一个字符的列 | SELECt 列名 FROM 表名 WHERe 列名 LIKE '_' | |
2.创建和操纵表
操作: | 语法: | 实例: |
创建表 | create table 表名(列名1 列类型1,列名2 列类型2,...); | create table school(id VARCHAr(10),time DATETIME,...); |
NOT NULL阻止插入空值 NULL允许插入空值 | create table 表名(列名1 列类型1 NOT NULL,列名2 列类型2 NULL,...); | create table school(id VARCHAr(10) NOT NULL,time DATETIME NULL,...); |
设置主键 (在创建表时使用) | PRIMARY KEY (列名); | PRIMARY KEY (id); |
只检索不同值的列 | SELECt DISTINCT 想要不重复的某个列名 FROM 表; | SELECt DISTINCT id FROM school; |
限制返回结果不多于num行 | SELECt 列名 FROM 表名 LIMIT num; | SELECt name FROM school LIMIT 4; |